הטמעת מתודולוגיית Agile בשילוב עם DevOps

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

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

שאלות נפוצות

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

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

למה Agile בלי DevOps מאט בשחרורים

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

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

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

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

מה משתנה לאחר ההטמעה: השפעות מדידות

ההשפעה של החיבור בין פרקטיקות Agile ל-DevOps נמדדת, ולא מתווכחים עליה.

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

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

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

פורמטים של הטמעת Agile: פיילוט, זרימה, מחזור מלא

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

להלן ארבעה פורמטים שבאמת בוחרים ביניהם, עם המגבלות שלהם.

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

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

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

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

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

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

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

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

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

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

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

קונפיגורציות, נהלים ותיעוד בפלט

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

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

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

מקרה בוחן: איך קיצרנו את זמן ההתאוששות

לפני: שחרור של ארבעים שלבים ידניים

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

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

אחרי: החזרה לאחור כפעולה הפוכה

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

  • שלבים ידניים בשחרור: 41 → 3 (הפעלת משימה ואישור פריסה);
  • זמן שחרור: כ-4 שעות → 18 דקות;
  • חזרה למצב עבודה בתקלה: 2–4 שעות → 9 דקות;
  • השבתה ברבעון: 3 מקרים של שעתיים+ → אף אחד יותר מ-10 דקות.

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

במה Agile שונה מ-DevOps ואיך לחבר ביניהם

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

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

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

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

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

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

ספקות טכניים נפוצים לפני ההתחלה

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

ממה להתחיל אם התהליכים ספונטניים?

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

האם להעביר את כל הצוותים מיד?

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

מה עם סביבה סגורה ומגבלות רגולטוריות?

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

איך למדוד תוצאה?

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

איך לא לאבד את אבטחת הגישה?

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

נדבר על הטמעת Agile בצוות שלכם

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

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

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

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