Table of Contents

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

פתרונות רולבק

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

תבניות רולבק Core

  • (FLT:0) Immediate (הההרסה) רולבק:R.1 צינור הפריסה שומר עותק של החפץ הקודם והתצורה.על זיהוי מצב כשל, הצינור מחליף באופן אוטומטי את הגרסה החדשה עם הישן.זהו התבנית הפשוטה ביותר אך עלול לגרום להפרעה קצרה אם ההסרה כרוכה בהפעלה מחדש של שירותים.
  • (FLT:0) ,Canary Deployment:FLTRE:1) הגרסה החדשה משוחררת לאחוז קטן של משתמשים או שרתים בעוד הרוב עדיין פועל את הגרסה היציבה. mtrics הם במעקב לתקופה מסוימת.אם אנומליות מופיעות, התעלה מתגלגלת על ידי הסרת המקרים החדשים ופנייתת התנועה בחזרה לקו הבסיס.
  • (FLT:0) כחול-ירוק-גריה Deployment:FreaLT:1 ; שתי סביבות זהות (כחול = חי נוכחי, ירוק = גרסה חדשה) נשמרות.לאחר אימות, התנועה עוברת מכחול לירוק.אם בעיות מתרחשות, ניתן להפנות את התנועה מיד לכחול.תבנית זו מספקת אפס-אפס-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-אט-מחדש, אך עלויות כפולות.
  • (FLT:0) עדכון עדכון עם רולבק: ההרחבה:1 בתזמורת כמו Kubernetes, פודס חדשים להחליף הישן באופן מצטבר.אם הפריסה נכשלת בדיקות בריאות, התזמורת עוצרת באופן אוטומטי את ה-Seltreout וחוזרת לשיפוץ הקודם.זהו מזחלות מובנת, מצטברת שעובדת היטב עבור שירותים ללא מדינה.
  • (FLT:0) דגלי פלאג (הפליגים): אנדרל 1 במקום להתגלגל לאחור כל הפריסה, דגלים תכונה מאפשרים לצוותים להשבית תכונה מסוימת בזמן ריצה.זהו ה-Switchback המהיר ביותר עבור בעיות ברמת תכונה, אך דורש את תשתית הדגל להיות בריא ואת שינוי הקוד להיות תואם לאחור.

לכל אסטרטגיה יש התנגשויות מסחר. Immediate rollbacks הם פשוטים אבל יכול לגרום לכל או כלום כשלים.פריסות Canary להפחית רדיוס הפיצוץ אבל להגדיל את המורכבות. פריסות Blue-green מציעים רולבקים מלאים בעלות גבוהה יותר. צינורות אמינים ביותר לעתים קרובות משלבים דפוסים מרובים: להשתמש דגלים תכונה עבור שליטה על-ידי טוב, מהדורות הרכש עבור סיכון, וכחול ירוק כמו מנגנון הפריסה עבור microservices הליבה.

דיסלקטיבי: Immediate Rollback

Immediate rollback היא השיטה הפשוטה ביותר.הצנרת CI /CD שומרת את פריטי הפריסה הקודמת (תמונה דוקר, קובץ צנצנת, מלינים מודפסים) ואת התצורה שלה (משתנים עתירי, מסד נתונים, נקודות קצה שירות) כאשר פרץ של שריפות - כגון עלייה בקצב שגיאות, ירידה בביצועי יישום, או בדיקה בריאות כושלת - הצינור מבצע תסריט כי חוזר על ידי שימוש חוזר לגרסה הקודמת, אם זה עשוי להיות מכווץ עבודה טובה.

אתגרים מתעוררים עם שירותים ממשלתיים ושינויים במסד הנתונים.רולינג בחזרה יישום לגרסה קודמת בעוד שschema מסד הנתונים כבר שונתה יכול לגרום לגרסה בלתי אפשרית.צוותים באמצעות רולבק מיידי חייבים להבטיח כי הגירה מסד נתונים הם ניתוק (באמצעות מסגרות הגירה כמו Flyway או Liquibase עם &ldo; Undo ” Scripts) או כי היישום יכול לסבול ema קטין עבור חלון התאוששות קצר.

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

דיסלקציה עמוקה: Canary Deployments

פריסות Canary נקראים על שם “canary במכרות הפחם ו-dquo; מושג.קבוצה קטנה של תשתיות הייצור מקבל את הגרסה החדשה בעוד השאר ממשיך עם הגרסה היציבה.הצנרת מפקחת על מדדים מרכזיים ו-mdash; שיעור טרור, שקיפות, באמצעותput, KPIs &medash; עבור הקבוצה canary להישאר מקובל בתוך רמה של 10 שעות, כלומר, כלומר, כלומר, בסופו של 10 שעות, הוא בסופו של דבר, כלומר, כלומר, הוא יכול להיות מורחב באופן אוטומטי, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, ירידה של רמה אחת, אם הוא 10 שעות על רמה אחת, כלומר, כלומר, כלומר, כלומר, אם הוא רק 10 שעות, כלומר, כלומר, כלומר, אם הוא רק 10 שעות, אם הוא רק 10 שעות, ירידה של 10.

פריסות יכולות דורשות:

  • (ב) ⁇ :0 (התח): ⁇ ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0)Observability:FLT:1 לוחות זמנים בזמן אמת המשווה מדדים קנריים נגד מדדי בסיס עם משמעות סטטיסטית.
  • (ב) החלטה: 0 (ב) 1 , 1 , צנרת שיכולה להרוג את התעלה אם תזהיר אש, ולקדם אותה באופן אוטומטי אם כל התנאים ייפגשו.

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

עומק עמוק: Blue-Green Deployment

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

  • (ב) ,0) ,Zero-downtime rollbackFLT:1 על ידי פיזור מחדש של מתג התנועה.
  • (ב) ,0) , מיפוי מלא של הסביבה (FLT:1) אשר מראה את הייצור עבור בדיקות טרום-שחרור.
  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

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

ספקי ענן רבים מציעים פריסה ירוקה כחולה כתכונה מנוהלת & mdash; לדוגמה, AWSBeanstalk ו-Google Cloud Run מספקים מעבר תנועה אוטומטי.עבור פריסות ממותגות על Kubernetes, כלים כמו Flux ו ארגוCD מאפשרים לדפוסים ירוקים כחולים באמצעות משאבים מותאמים אישית.

יישום רולבק ב- CI/CD Pipelines

רולבק חייב להיות חלק בלתי נפרד מהצנרת CI /CD, לא לאחר מחשבה. צינור שאינו יכול לגלגל בחזרה אינו שלם.

טריגר אוטומטיים

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

  • כישלון בדיקות עשן לאחר הדה-פלימנט
  • HTTP 5xx שיעורי שגיאה מעל סף.
  • שטף של צמיגים (למשל, p99 > 1 שנייה).
  • בדיקות בריאות יישומים חוזרות לא 200
  • גילוי אוטומטי מבוסס קידוד (למשל, דוח שגיאה של Stackdriver, Datadog).

יש להגדיר את ההדקים האלה בהגדרה של הצינור או בכלי ניטור נפרד ששולח Webhook למערכת CI /CD. לדוגמה, ב GitLab CI /CD, אתה יכול להגדיר a “roll ” עבודה כי אדפילס תג תמונה קודמת. in ג'נקינס, צינור יכול להקשיב לאינטרנטhook מ Promeusidusman.

עקבו אחרי Artifact Management

כל פריסה חייבת להיות במעקב לאובייקט מסוים, תצורה ותשתית מצב רישום (Docker Hub, ECR, GCR) עם תגים לא מתואמים. תצורה של חנות תמונות בבקרת גרסאות או חנות פרמטר. in Kubernetes, השתמש ב-Revision HistoryLimit כדי לשמור כמה תיקונים קודמים של ReplicaSet.This מאפשר לך להשתמש ב-FLT:0 כדי לחזור במהירות.

מסד הנתונים Rollbacks

רולבקי מסד נתונים הם לעתים קרובות החלק הקשה ביותר.עבור שינויים סכימה, צינור הפריסה צריך להפעיל הגירה כחלק מתהליך השחרור, וכל הגירה חייבת להיות המקביל &dquo;rollback ” הגירה.הצנרת יכולה לאחר מכן ליישם את התסריט רולבק באופן אוטומטי.עבור שינויים תוכן נתונים (למשל, עדכונים מרובים), לשקול שימוש בצילומי מסד נתונים או שחזור זמן נקודה במערכות ההפעלה כחולות, עם מסד נתונים ממוקדות.

בדיקה אחרונה ב-Ralback Process

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

Best Practices for High-Reliability רולבקs

  • (ב) (ב):0) תשתיות ניתנות למניעה: FLT:1 התייחס לשרתים ולמכלים שלך כפרטים. Deploy באמצעות ירוק כחול או קנרית, כך שתוכל להחליף תשתיות ולא למקם אותו במקום.
  • (FLT:0) בודקים את כל השכבה:FLT:1 Liveness, מוכנות, בדיקות סטארט-אפ עבור מכולות; עסקאות סינתטיות עבור פונקציונליות מקצה לקצה.
  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • דגלי תהילים:0 (FLT:1) השתמשו דגלים כדי להשבית תכונות ללא ריצוף.זה מספק גלגול עבור תכונות שאינן דורשות החלת תשתיות.
  • (ב) כל גלגולים:0) ואזהרה: 1FLT:1 כל רולבק צריך ליצור תיעוד אירוע, להודיע לצוות, ולתפוס את הסיבה לכישלון.
  • (FLT:0)Granular rollback:FLT:1Prefer מתגלגל בחזרה רק את המרכיב הכושל ולא את כל הערימה. עבור מיקרו-שירותים, רולבק לשירות משמר יציבות של שירותים אחרים.
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

כלים התומכים ב-Relbacks

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

ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס ג'נקינס

צינורות ג'נקינס יכולים לאחסן חפצים קודמים ולהשתמש בצעדים 1FLT או גורמים אוטומטיים כדי להפעיל עבודה רולבק. Plugins כמו “ Job לייבא Plugin ” או “ Deploy ” plugins לפשט את זה.

GitLab CI/CD

ג'טבי ’sFLT:0EnvironmentmentsFLT:1 לעקוב אחר metadata הפריסה.UI מספק a “Rollback ” כפתור כי אדפטים את החפץ הקודם.You יכול גם להגדיר עבודות רולבק מותאם אישית ב FLT:2.

ספיןנקר

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

Kubernetes

פריסות Native Kubernetes תומכים בעדכונים מתגלגלים עם FLT 3: עבור אסטרטגיות מתקדמות יותר, השתמש ארגורוטס (canary, Blue-green) עם FLT:0rollback sveFLT:1 הפלטפורמה מטפלת באופן אוטומטי החלפת ובדיקות בריאות.

Helm

מהדורת תרשים Helms היא גרסה של שימוש ב-FLT:4 כדי לחזור לחידוש הקודם. בשילוב עם Kubernetes, זה נותן לך מנגנון ריבאובק חזק עבור יישומים מורכבים.

דגלים (LaunchDarkly, Flagsmith)

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

דוגמה אמיתית לעולם: E-Commerce Platform

בהתחשב בפלטפורמת מסחר אלקטרוני עיבוד 10,000 עסקאות לדקה.הקבוצה מאמצת דפוס פריסה כחול ירוק לשירות הליבה שלה, עם ניתוח צ'רצ'י עבור שירות החיפוש שלהם.ביום שישי טיפוסי, שילוב שער תשלום חדש הוא פרוס לסביבה הירוקה.הצנרת מפעילה בדיקות אינטגרציה, ואז מחליפה את התנועה במהירות של פחות מ -15 דקות לאחר מכן, שיעור השגיאה עבור אישורי תשלום מ 0.1% ל-4% כדי לפקח על מערכת ההפעלה אוטומטית של לחץ חיפוש:

מסקנה

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