הגדרת תשתית ענן ב-AWS לסביבת פרודקשן

עומס שיא שובר את השירות ברגע הכי פחות מתאים, ותיקונים ידניים משאירים את הצוות במתח. אנו מגדירים AWS מקצה לקצה: מתכננים סביבה עמידה לתקלות, הופכים את הפריסה לאוטומטית ומעבירים אותה לצוות שלכם יחד עם תיעוד. הזמן לשחרור עדכונים מתקצר פי כמה, וההשבתות נעלמות.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

התאמת AWS לעומס ייצור: מה נשבר

הגדרה ידנית של סביבות כמעט לעולם אינה נשברת ברגע ההשקה — היא נשברת בצמיחה. מכונה וירטואלית הוקמה למשימה מסוימת: סוג המכונה נבחר לפי הערכה, כללי קבוצות האבטחה תוקנו במקום, וסקיילינג אוטומטי פשוט לא הוגדר. כל עוד העומס יציב, זה עובד ובאופן בלתי מורגש צובר חוב.

הראשון שנכשל אינו השרת, אלא הקשרים בין השירותים. מאגר החיבורים למסד הנתונים מתכלה בשיא, חלק מהבקשות ממתינות להתפנות, זמן התגובה עולה, וניסיונות חוזרים של לקוחות מחסלים את מה שעוד החזיק מעמד.

אין במה להוסיף מופעים תחת עומס: תמונות מכונה, משתני סביבה וכללי רשת חיים בממשק ובראש של המהנדס שהרכיב את כל זה.

בהמשך מתגלה הפער בין הסביבות. סביבת הייצור שונה מסביבת הבדיקות בתיקונים שנצברו במשך חודשים: אי אפשר לפרוס אותה מאפס, וחזרה למצב קודם הופכת לעבודת לילה עם תוצאה בלתי צפויה.

לכן צווארי בקבוק בתשתית אינם נראים עד לשיא — הניטור מכוון לסימן "חי או לא", ולא לרוויה של תורים, וכשל בעומס שיא מגיע בלי התראה.

נפרק כיצד זה נסגר: תיאור דקלרטיבי של משאבים, סקיילינג לפי מדדים, תפקידים והרשאות נפרדים במקום גישות משותפות, נראות לפי תורים ועתודות מרכזיים.

מה נותנת תשתית בנויה היטב: אפקט מדיד

כדאי להעריך תשתית לפי ארבעה גדלים מדידים, ולא לפי מספר השירותים שהוקמו. להלן נקודות ציון שמראות שהעבודה באמת נעשתה, ולא רק "הוגדרה": בכל סעיף אנו מתעדים את הערך לפני ההתחלה ואחרי המסירה.

  • מהירות פריסת שינויים. הצינור בונה, בודק ומעביר כל שינוי ללא מעורבות ידנית: המסלול מקומיט ועד סביבת הייצור אורך דקות, והחזרה לגרסה קודמת — פקודה אחת. הפריסה מפסיקה להיות אירוע שדורש חלון ותורנות.
  • זמן התאוששות לאחר תקלה. גיבויים נבדקים באופן קבוע באמצעות שחזור בסביבה נפרדת, וצמתי גיבוי מחוממים באזור זמינות אחר. העברת התעבורה אוטומטית, ולכן ההתאוששות מסתכמת בעשרות דקות, ולא בשעות של טיפול ידני.
  • צמצום פעולות ידניות. סביבות מתוארות באופן דקלרטיבי ומוקמות מתוך קוד, ולכן הפערים בין הסביבות נעלמים, וחלק התיקונים דרך קונסולת האינטרנט יורד כמעט לאפס. סביבה חדשה נפרסת באותה תצורה כמו סביבת הייצור.
  • סוג כשלים שהוסר. בדיקות אוטומטיות לפני פריסה ובקרת תצורה מסירות קבוצה שלמה של תקלות — בגלל תיקונים ידניים לא מתוכננים והגדרות שונות בין סביבות. אירועים מסוג זה פשוט מפסיקים להופיע ביומן.

ב-AWS כל ארבעת הגדלים נלקחים באמצעי ניטור סטנדרטיים, כך שההתקדמות נראית בלוח מחוונים, ולא בדוחות "על הנייר". אם לפחות אחד מהמדדים לא זז — סימן שצוואר הבקבוק נשאר וצריך להמשיך ללחוץ עליו.

אפשרויות הגדרה של AWS: השוואת גישות

נבחן אפשרויות פריסה שבאמת בוחרים ביניהן בפרויקטים: הן נבדלות לא במערך השירותים, אלא באופן ניהול הסביבה. הסימנים המרכזיים — באיזו תדירות התשתית משתנה וכמה קשה לאבד אותה.

אפשרות מתי מתאימה מגבלות
חשבון AWS אחד, שינויים ידניים השקה ראשונה, בדיקת היפותזה, מהנדס אחד המצב חי בקונסולה: אי אפשר לשחזר את הסביבה, החזרה היא ידנית בלבד, ותיקון תחת עומס פוגע בייצור
סביבות מבודדות עם תיאור תשתית כקוד כמה סביבות, צוות, שחרורים קבועים נדרשת משמעת: שינוי עובר בדיקה ויישום, ותיקונים ידניים יוצרים פער בין התיאור למצב בפועל
תצורה עמידה עם גיבוי לפי אזורים מוצר עם דרישות זמינות וזמן התאוששות התחזוקה כבדה יותר: יותר משאבים, ניפוי תקלות מורכב יותר, נדרש ניטור מתמיד של מצב האזורים והרפליקות

בפועל האפשרויות לא מתחרות זו בזו, אלא מחליפות זו את זו: חשבון אחד מפנה מקום לסביבות נפרדות, שעל גביהן מתווסף גיבוי לפי אזורי זמינות. המעבר אינו כתיבה מחדש מאפס, אלא העברת הגדרות שכבר עובדות לתוך תיאור, ולכן אפשר להימנע מהשבתות בשלב הזה.

שלבי יישום: מביקורת ועד מסירה לתפעול

הגדרת AWS להפעלה בייצור אינה התקנה חד-פעמית של שירותים, אלא רצף שלבים שבו כל שלב נשען על התוצאה של השלב הקודם. אם מתכננים את תצורת היעד לפני הביקורת, חלק מהקשרים והמגבלות הסמויים יצופו כבר תחת עומס. להלן שישה שלבים עם תוצאה ניתנת לבדיקה בכל אחד.

  1. ביקורת תשתית. אוספים את המצב בפועל: מה פרוס, כיצד עוברות הבקשות, היכן התצורה סוטה מהתיעוד, אילו הרשאות ניתנו ביתר. התוצאה — מפת תלויות ורשימת צווארי בקבוק לפי סדר עדיפויות.
  2. תרשים תצורת יעד. סביבות מבודדות, פילוח רשת, תפקידי גישה, ניהול סודות, מגבלות וכללי סקיילינג. מאשרים את התרשים לפני תחילת העבודה: תיקונים כאן זולים יותר מתיקונים בקוד.
  3. מימוש. מעבירים את התצורה לקוד — סביבות מוקמות מתבניות, שינויים עוברים בדיקה, תיקונים ידניים בקונסולה נשללים. מצב התשתית הופך לשחזורי, והפערים נראים מיד.
  4. בדיקת כשל. שוברים בכוונה: מכבים צומת, מבטלים הרשאה, מנתקים קשר בין סגמנטים. בודקים אם המערכת מתאוששת בעצמה ובכמה זמן — לפני שזה יקרה במקרה.
  5. תיעוד. תרשים, משתני סביבה, סדר התאוששות, בעלי שירותים ונקודות בקרה. מהנדס חדש מקים סביבה לפיו בלי הסברים בעל פה.
  6. מסירה לתחזוקה. עוברים עם הצוות שלכם על נוהל השינויים והתורנויות, מוסרים הרשאות, מתעדים סדר הסלמה וגבולות אחריות.

מכאן והלאה שינויים מתבצעים באותו סדר: תרשים, מימוש, בדיקה — ולכן התשתית לא מצטברת חריגים ידניים.

מערך מסמכים ותצורות בסיום

תשתית עובדת בלי תיעוד היא קופסה שחורה שמפחיד לשנות. לכן יחד עם הסביבה הלקוח מקבל מערך שלפיו אפשר לפתח ולתפעל אותה בלעדינו: מהנדס חדש מבין את המערכת לפי מסמכים, ולא לפי התכתבות במסנג'ר.

  • תשתית כקוד — רשתות, רשתות משנה, קבוצות אבטחה, מאזני עומסים ומסדי נתונים מתוארים במאגר. כל שינוי עובר בדיקה ונשאר בהיסטוריה, ותיקונים ידניים בקונסולה לא נשארים.
  • מדיניות גישה ותפקידים — מטריצת "מי יכול מה", הרשאות מינימליות נדרשות, תפקידים נפרדים לשירותים, למהנדסים תורנים ולבנייה. סודות מאוחסנים במאגר מאובטח עם רוטציה.
  • תרשים רשת וזרימות נתונים — אילו שירותים פונים לאן, היכן סגמנטים פרטיים וציבוריים, כיצד בנויות נקודות כניסה ומה חסום מגישה חיצונית.
  • נוהל גיבוי ושחזור — מה מגבים, באיזו תדירות, היכן נשמר, כיצד נבדק השחזור וכמה זמן הוא אורך לפי מדידות בפועל.
  • תיעוד תשתית — תרשים ארכיטקטורה, תיאור סביבות, משתנים ותלויות, סדר פריסה וחזרה של שחרור.
  • ניטור והתראות — מערך מדדים וספי הפעלה, ניתוב התראות לפי תורנים, טיפול באירועים אופייניים ופעולות בעקבותיהם.
  • העברת ידע לצוות — סקירות משותפות ותורנות בזוגות: המהנדסים שלכם עוברים את המסלול "שינוי → פריסה → חזרה" במו ידיהם.

המערך נשאר במאגר שלכם ובבסיס הידע הפנימי — לא בחשבון זר ולא בראש של קבלן חיצוני.

מקרה בוחן: עומס שיא בלי תקלות ובלי תיקונים ידניים

חנות עם מבצעים עונתיים: התעבורה גדלה פי עשרה תוך דקות, והתשתית ב-AWS התרחבה ידנית. מהנדס תורן הקים מכונות וירטואליות לפי רשימת בדיקה, תיקן ניתוב של מאזן העומסים ובמשך הלילה עקב אחר גרפים.

התאוששות לאחר תקלה ארכה כ-40 דקות, וכמעט כל פעולה נותרה ידנית — משינוי גדלים של קבוצה ועד הפעלה מחדש של תלויות.

מה שינו

התשתית תוארה כקוד: רשת, הרשאות גישה, מסדי נתונים ותורים נבנים מהמאגר, ולא בקונסולה. הסקיילינג האוטומטי הועבר מממוצע יומי לעומס נוכחי, נוספו בדיקות חיות של האפליקציה, ומראש הוגדר ההתנהגות בעת כשל של אזור זמינות. שינויים עוברים סקירה ומשוחזרים בסביבת הבדיקות אחד לאחד.

מדדים לפני ואחרי: זמן התאוששות — מ-40 דקות ל-3–4; שיעור הפעולות הדורשות עבודה ידנית — מ-70% ל-9%; אירועים בשיאים — חמישה ברבעון לעומת אפס בחצי שנה של תצפיות. תמונות מכונה ותצורות מנוהלות בגרסאות, ולכן חזרה לשחרור קודם אורכת דקות, ולא שעות.

ההתנהגות בשיאים הפכה לצפויה: קיבולת מתווספת לפי גידול הבקשות, ומיותרת מוסרת לאחר הירידה, ולכן עלויות אחסון ומחשוב לא גדלות יחד עם התעבורה. המהנדס מצטרף לטיפול במשימות חדשות, ולא לכיבוי שריפות. יציבות השירות נשמרת בדיוק כל עוד תוכניות היתירות והנהלים מתעדכנים יחד עם המוצר.

במה שירות מנוהל שונה משרת עצמאי?

הוויכוח "שירות או שרת עצמאי" מתנהל בדרך כלל לא על טכנולוגיות, אלא על היכן עובר גבול תחום האחריות. במודל מנוהל הספק מחזיק בצמתים פיזיים, עמידות, עדכונים וגיבויים, ואתם אחראים לתצורה, להרשאות ולסכימת הנתונים.

בשרתים עצמאיים כל הסטאק — מהחומרה ועד תיקון היישום — נשאר אצל הצוות, ואי אפשר להוציא אותו מחוץ להסכם.

שירותים מנוהלים מסירים עבודה במקום שבו המשימה סטנדרטית: מסד נתונים רלציוני, תור הודעות, מטמון, אחסון אובייקטים. החלפת צומת שנכשל, רפליקציה ועדכון גרסת משנה מתבצעים בלי מעורבות המהנדסים שלכם — ב-AWS זה מובנה בתכנון של השירותים עצמם. הצוות נשאר עם מה שבאמת משפיע על המוצר: סכימה ואינדקסים, הפרדת הרשאות, אסטרטגיית גיבוי ובדיקת שחזור.

שרתים עצמאיים מנצחים במקום שבו נדרש שליטה עמוקה בסביבה: פרמטרים לא סטנדרטיים של הקרנל, תצורת רשת ייחודית, תוכנה ברישיון עם הצמדה קשיחה, דרישות רגולטור למיקום הנתונים.

מקרה נוסף — עומס גבוה ויציב עם פרופיל צפוי: אז מתאימים את מצבת הצמתים למשימה שלכם, ולא מתאימים את הארכיטקטורה למגבלות של פלטפורמה מנוהלת.

לפשרה יש מחיר. ככל שאתם משתמשים באופן עמוק יותר ביכולות הייחודיות של הספק, כך המעבר יקר יותר: ההצמדה גדלה יחד עם נפח השגרה שהוסרה.

הצד השני של שרתים עצמאיים — גודל תחום האחריות: תורנויות, עדכוני אבטחה, ניטור והתאוששות לאחר תקלה הופכים לסעיף קבוע אצלכם, ולא לשורה בנוהל של מישהו אחר.

בפועל כמעט תמיד מתקבל היברידי: מנוהל — במקום שאין בו ערך מבדל, וצמתים עצמאיים — במקום שבו נדרשים שליטה ויכולת חיזוי. ההחלטה מתקבלת בשלב התכנון, כאשר פרופיל העומס, דרישות הנתונים וזמן ההשבתה המותר ברורים.

ספקות טכניים לפני תחילת העבודה

מהנדסים ומנהלים טכניים שואלים לפני ההתחלה כמעט את אותן שאלות: מה עם זמינות בזמן שינויים, מה יהיה השלב הראשון, עד כמה הסביבות משוחזרות, מי אחראי על הסביבה אחרי המסירה. אנו עונים לפני תחילת העבודה — מכך תלוי מבנה התהליך.

האם השינויים ידרשו עצירת השירות?

התעבורה מועברת בין שתי גרסאות עובדות דרך מאזן עומסים, ואין ניתוקים. מיגרציות של סכימת הנתונים מתבצעות בשני שלבים: הרחבה תואמת לגרסת האפליקציה הקודמת, ואחר כך מחיקת הישן. פעולות שאי אפשר לבצע בלי עצירה — אנו מזהים אותן מראש.

אפשר ליישם בחלקים?

כן, הסביבה מחולקת לשלבים: רשת והרשאות, בנייה ואספקת קוד, נראות וגיבוי. כל שלב סוגר את המשימה שלו ועובד בנפרד — אפשר לעצור אחרי כל שלב ולהמשיך מאוחר יותר.

האם הסביבות יהיו משוחזרות?

התשתית מתוארת באופן דקלרטיבי ונשמרת במערכת בקרת גרסאות. סביבה מוקמת מתיאור אחד, וההבדלים מועברים לפרמטרים — אפשר לפרוס מחדש את סביבת הבדיקות ולקבל את אותה תצורה כמו בסביבת הייצור.

מה עם האחריות לאחר המסירה?

אנו מוסרים תיאורי תשתית, מדיניות גישה, תרשימים ותיעוד, ומכשירים את הצוות. תקופת התחזוקה נקבעת בנפרד: עד שהמהנדסים שלכם יגיעו לשינויים עצמאיים, נשארים בקשר.

אפשר לבצע חזרה של שינוי?

כן. התצורה מנוהלת בגרסאות, וחזרה היא חזרה לתיאור הקודם והחלתו. נתונים משחזרים מתמונות מצב אם השינוי נגע באחסון.

נדון במשימה ונחזור עם הערכה ותוכנית

כדי שההערכה תישען על עובדות ולא על הנחות, מספיקים כמה נתוני פתיחה. אספו את מה שיש בהישג יד — טיוטות של תרשימים ורשומות יתאימו, ולא תצטרכו לשחזר עבורכם תיעוד.

  • רשימת שירותים והתפקיד שלהם במוצר: מה משרת משתמשים, מה פועל ברקע.
  • פרופיל עומס נוכחי — בקשות שיא, נפחי נתונים, עליות עונתיות.
  • דרישות לסביבות: כמה סביבות נדרשות ובמה הן נבדלות מבחינת הרשאות.
  • מגבלות: לוחות זמנים, אינטגרציות קבועות, דרישות אבטחה וביקורת.
  • מדדי יעד: זמן השבתה מותר, מהירות התאוששות, עומק שמירת גיבויים.
  • נוהל שחרורים — מי ובאיזו תדירות מפרסם שינויים, והאם נדרשת חזרה אוטומטית.

בתגובה מתקבל חבילת עבודה, ולא מילים כלליות. תרשים ארכיטקטורת יעד עם גבולות רשתות ותפקידי גישה, סדר שלבים עם נקודות שבהן כבר רואים תוצאה, הרכב העבודה עם חלוקת תחומי אחריות ורשימה של מה שנשאר לצוות שלכם לאחר המסירה: תיאור תשתית כקוד, מדיניות גיבוי ונוהל שחזור.

תארו את המשימה בצורה חופשית — נחזור עם הערכה, תוכנית יישום והרכב העבודה.