אפליקציית שלוש שכבות: web, app, DB. בסיס הנתונים חייב להיות בלתי נגיש מהאינטרנט בשום פנים ואופן.
תת-רשתות ציבוריות עבור שכבת ה-web (ALB). תת-רשתות פרטיות עבור שכבות ה-app וה-DB. קבוצת אבטחה של בסיס הנתונים מאפשרת תעבורה רק מקבוצת האבטחה של שכבת ה-app (לא מטווח CIDR).
למה: טבלאות ניתוב של תת-רשתות אוכפות נגישות; הפניות מקבוצת אבטחה לקבוצת אבטחה מקודדות הרשאה מינימלית בשכבת קבוצת האבטחה ושורדות שינויי IP.
שירות A בחשבון A מפעיל Lambda בחשבון B. הרשאה מינימלית.
מדיניות מבוססת משאבים על ה-Lambda היעד, המעניקה `lambda:InvokeFunction` ל-principal של תפקיד חשבון A. הקורא מקבל את התפקיד שלו ומפעיל ישירות - אין צורך בשרשור תפקידים.
למה: מדיניות משאבים היא התבנית הפשוטה ביותר בין חשבונות עבור משאבים מונחי שירות (Lambda, S3, SNS, SQS, KMS).
חשבונות AWS אחרים צריכים להעלות ל-S3 bucket מרכזי.
מדיניות Bucket המעניקה `s3:PutObject` ל-principals של חשבונות חיצוניים. הוספת דרישת ACL של `bucket-owner-full-control` כדי שבעל ה-bucket ישמור על שליטה באובייקטים.
למה: ללא `bucket-owner-full-control` (או `BucketOwnerEnforced` Object Ownership), אובייקטים שהועלו בבעלות חשבון הכותב.
User Pool = הרשמה / התחברות / הנפקת JWT למשתמשי אפליקציה. Identity Pool = החלפת אסימונים לאישורי AWS זמניים. רוב האפליקציות משתמשות בשניהם: User Pool מאמת, Identity Pool מאשר גישה ל-AWS.
בחירת Secrets Manager לעומת SSM Parameter Store SecureString.
אישורי בסיס נתונים עם סיבוב אוטומטי, שיתוף חוצה חשבונות, סודות גדולים ← Secrets Manager. דגלי תצורה, הגדרות אפליקציה, סודות פשוטים, עלות נמוכה ביותר ← SSM Parameter Store.
למה: ל-Secrets Manager יש פונקציות Lambda מובנות לסיבוב עבור RDS/Aurora/DocumentDB/Redshift; ל-Parameter Store אין סיבוב מקורי אך הוא חינם עבור שכבת Standard.
Secrets Manager עם סיבוב מנוהל. תבנית Lambda מובנית מטפלת בסיבוב משתמש יחיד מול נקודת הקצה של RDS. אפליקציות מאחזרות את הסוד בזמן ההתחברות (נשמר במטמון) - אין צורך בפריסה מחדש של האפליקציה.
אפליקציה קריטית למשימה זקוקה להגנה מפני עלויות DDoS ותמיכת SRT 24×7.
AWS Shield Advanced ב-CloudFront / ALB / NLB / Global Accelerator. כולל הגנת עלויות (החזרים עבור הוצאות קנה מידה במהלך התקפה) + גישה לצוות התגובה של Shield.
למה: Shield Standard אוטומטי וחינם; Advanced מוסיף הגנות ו-SLA. CloudFront הוא תמיד הדלת הקדמית המומלצת.
Stateful, מתחבר ל-ENI, מאפשר בלבד ← קבוצת אבטחה (ברירת מחדל). Stateless, ברמת תת-רשת, מאפשר + דחייה מפורשת ← NACL. השתמש ב-NACLs עבור כללי דחייה גורפים (חסימת טווחי IP); SGs לכל השאר.
עומס עבודה של PCI DSS - בידוד קפדני מחשבונות שאינם PCI.
חשבון AWS ייעודי בתוך OU של Organizations עם SCPs המגבילים גישה לשירות / אזור. VPC נפרד, מפתחות KMS, תפקידי IAM. Network Firewall או GWLB לבדיקת יציאה.
למה: גבול חשבון הוא הבידוד החזק ביותר של רדיוס פיצוץ ב-AWS.
בחירת Aurora לעומת RDS עבור עומס עבודה חדש של MySQL/PostgreSQL.
Aurora עבור תפוקה גבוהה יותר, מעבר מהיר יותר, עד 15 עותקי קריאה (read replicas), Global Database, Serverless v2. RDS עבור מנועים ישנים יותר (MariaDB, Oracle, SQL Server) או פריסות פשוטות/זולות יותר.
למה: אחסון Aurora משותף בין עותקים (אין השהיית שכפול מהאחסון). מעבר לגיבוי < 30 שניות בדרך כלל.
HTTP/HTTPS, ניתוב נתיב/מארח, אינטגרציית WAF, אימות OIDC ← ALB. TCP/UDP/TLS בקנה מידה קיצוני, IP סטטי לכל אזור זמינות, חביון נמוך ביותר, שמירה על IP מקור של לקוח ← NLB.
זרימת עבודה מרובת שלבים דורשת ניסיון חוזר לכל משימה עם השהיה אקספוננציאלית וטיפול בשגיאות.
זרימת עבודה סטנדרטית של AWS Step Functions. בלוק `Retry` עם `IntervalSeconds`, `MaxAttempts`, `BackoffRate`. בלוק `Catch` מנתב שגיאות ספציפיות למצב שחזור.
גיבוי ושחזור: RPO שעות, RTO שעות, הכי זול. Pilot Light: RPO דקות, RTO עשרות דקות. Warm Standby: RPO שניות, RTO דקות. Multi-Site Active-Active: RPO ~אפס, RTO שניות, היקר ביותר.
אפליקציה גלובלית זקוקה למעבר לגיבוי עם RTO אפס על פני שני אזורים.
Active-active על פני אזורים: Global Accelerator או ניתוב חביון של Route 53 לכניסה; DynamoDB Global Tables / Aurora Global Database לנתונים; שכפול בין אזורים לאחסוני אובייקטים.
גישה תכופה ← Standard. דפוס גישה לא ידוע ← Intelligent-Tiering. גישה לא תכופה מעל 30 יום ← Standard-IA. אזור זמינות יחיד מקובל, לא תכוף ← One Zone-IA. ארכיון, אחזור במילישניות ← Glacier Instant. ארכיון, דקות ← Glacier Flexible. ארכיון, שעות, הכי זול ← Glacier Deep Archive.
Linux NFS תואם POSIX, רב-אזורי, קנה מידה אוטומטי ← EFS. Windows SMB / משולב AD ← FSx for Windows. HPC, Lustre, מקושר S3 ← FSx for Lustre. תכונות NetApp ONTAP (תמונות מצב, כלי NetApp) ← FSx for ONTAP. ZFS ← FSx for OpenZFS.
עומס עבודה משתנה, מתרחב עם הגודל ← Bursting. תפוקה גבוהה וצפויה ← Provisioned. רגיש ל-Burst אך רוצה הוצאה גמישה ← Elastic (ברירת מחדל למערכות קבצים חדשות, מתרחב אוטומטית).
נכסים סטטיים + תגובות API עם משתמשים גלובליים; הפחתת עומס על Origin.
CloudFront עם מדיניות מטמון מתאימה. Long TTLs עבור נכסים סטטיים; מפתח מטמון כולל רק כותרות/מחרוזות שאילתה חיוניות. השתמש ב-Origin Shield עבור מקורות בעלי קרדינליות גבוהה.
למה: יחס פגיעת מטמון משפיע הן על ביצועים והן על עלות. מפתח מטמון שגוי (לדוגמה, הכללת כל הכותרות) הורס את יחס הפגיעה.
קל משקל, בצד המשתמש, תת-מילישנייה (שכתוב כותרות, הפניות, A/B) ← CloudFront Functions. כבד יותר, Node.js / Python, זמן חישוב ארוך יותר, גישת רשת ← Lambda@Edge.
טעינה עצלה (Cache miss ← אחזור + מילוי): פשוט, אוגר במטמון רק את מה שמבוקש. כתיבה דרך (כתיבה למטמון + ל-DB בעת עדכון): מטמון תמיד טרי, אך כתיבות נוספות. TTL: הגבלת התיישנות בכל אחד מהדפוסים.
מונע אירועים תת-15 דקות, קנה מידה תת-שנייה, ללא תשתית ← Lambda. קונטיינרים ארוכי טווח, ללא ניהול צמתים ← Fargate. קרנל מותאם אישית, GPU, מצב עמיד, הכי זול לאורך זמן ← EC2.
סט תכונות מלא (אימות בקשה, טרנספורמציות, מפתחות API, תוכניות שימוש) ← REST API. עלות נמוכה יותר, חביון נמוך יותר, JWT/OIDC מקורי, פשוט יותר ← HTTP API. דו-כיווני בזמן אמת ← WebSocket API.
עומסי עבודה בלתי צפויים / קוצניים / חדשים ← On-demand. יציבים, צפויים, עמוסים - ורגישים לעלות ← Provisioned עם auto-scaling. החלפת מצבים לכל היותר פעם אחת ב-24 שעות.
Global Secondary Index (GSI) עבור שאילתות על מפתח מחיצה שונה. Local Secondary Index (LSI) עבור מפתח מיון חלופי באותו מפתח מחיצה (LSI חייב להיווצר בזמן יצירת הטבלה).
Compute Savings Plan (שנה או 3 שנים) - 66% הנחה ממחיר המחירון, גמיש על פני משפחת מופעים, גודל, מערכת הפעלה, tenancy, אזור. RIs רק כשאתה צריך שמורת קיבולת.
למה: Savings Plans עדיפים על RIs לרוב מקרי השימוש הממוקדי עלות (גמישים יותר, אותה הנחה).
הגירה למופעי Graviton (ARM64). זולים בכ-20%, ביצועים-למחיר טובים בכ-40% עבור עומסי עבודה רבים. דורש תמונות קונטיינר מרובות ארכיטקטורות או קבצים בינאריים מקומפלים מחדש.
הגדל זיכרון (מה שמגדיל את ה-CPU והרשת באופן יחסי). השתמש ב-Lambda Power Tuning (כלי Step Functions) כדי למצוא את הנקודה האופטימלית - לעיתים קרובות זיכרון גבוה יותר מהיר יותר וגם זול יותר.
כללי S3 Lifecycle: מעבר ל-IA לאחר 30 יום, Glacier Flexible לאחר 90 יום, Deep Archive לאחר 180 יום, פג תוקף לאחר תקופת שמירה. שלב עם Intelligent-Tiering לדפוסים לא ידועים.
החלף תעבורת שירותי AWS ב-VPC Endpoints (gateway עבור S3/DynamoDB; interface לכל השאר). העבר עומסי עבודה הזקוקים ליציאה לאינטרנט לתת-רשתות ציבוריות רק כשצריך.
למה: NAT Gateway מחייב לפי GB מעובד אפילו עבור תעבורת שירותי AWS. נקודות קצה מבטלות נתיב זה.
אותו AZ, אותו VPC = חינם. חוצה AZ = $0.01/GB לכל כיוון. חוצה אזור = יקר. יציאה לאינטרנט = היקר ביותר אך חינם דרך CloudFront עבור תוכן שניתן לשמירה במטמון. תמיד יציאה דרך CloudFront כאשר אפשרי.
הגדר שמירה מפורשת (ברירת המחדל היא "Never expire"). ייצא יומנים ישנים ל-S3 + Glacier. השתמש ב-Logs Insights רק על נתונים חמים. סנן בסוכן (אל תשלח יומני דיבאג בייצור).
מופעי EC2 לפיתוח/בדיקה פועלים 24×7 - בשימוש רק 9-עד-5.
AWS Instance Scheduler (Lambda שנפרסם באמצעות CloudFormation). תייג מופעים בשמות לוחות זמנים; מפעיל עצירה/הפעלה כמו cron. או פשוט `aws:autoscaling:scheduledActions` ב-ASGs לפיתוח.
למה: הפחתה של כ-70% בהוצאות מחשוב פיתוח עם עצירה מחוץ לשעות העבודה.
עצור את מופע ה-RDS (Single-AZ; עד 7 ימים, ואז מופעל אוטומטית). או Aurora Serverless v2 עם ACU מינימלי = 0.5 (אין עצירה מלאה, אך עלות מינימלית בחוסר פעילות).
ניצול יציב וגבוה ← ECS על EC2 (עם Spot/Savings Plans) - הכי זול. קוצני / קצר מועד / ללא ניהול צמתים ← Fargate. Fargate Spot זול ב-70% מ-Fargate עבור עומסי עבודה סובלניים.
העברת > 1 PB מסביבה מקומית ל-AWS; רוחב פס איטי מדי להעברה מקוונת.
AWS Snow Family. Snowball Edge Storage Optimized (80 TB) לטיפוסי; מספר מכשירים במקביל למאות TB. Snowmobile פרש - השתמש במספר Snowballים לקנה מידה של פטה-בייט.
בדיקות עלויות של AWS Trusted Advisor: מאזני עומס לא פעילים, EC2 בשימוש נמוך, EBS לא מחובר, RDS בשימוש נמוך, Redshift לא פעיל. שכבה חינמית מוגבלת; סט מלא עם תמיכת Business / Enterprise.