גלגולים והתאוששות היציבות
(סעיף: טכנולוגיה ותשתיות)
תקציר
Rollback הוא חזרה מנוהלת לגרסה היציבה האחרונה עם סיכון מינימלי של אובדן נתונים והפרות SLO. תהליך אמין כולל: אותות SLO, שערים ברורים וקריטריונים של rollback, מנגנון החלפה (GitOps/Ingress/Mesh), סכימת נתונים תואמת, תצורה/סודות/מטמונים מבודדים, מעגל שיפור לאחר תקרית.
1) מתי להתגלגל לאחור (קריטריון התחלה)
שערי SLO/Business: p95/99 מעל הסף, שיעור שגיאות, ירידה בתשלום/קצב המרה, עלייה בפסקי זמן PSP.
אותות טכניים: קריסות אח, דליפות זיכרון, צמיחת תור, הידלדלות סמלים/שניות (LLM), 5xx על אדג '.
סיכון נתונים: נדידה שגויה, חוסר עקביות של העתקים, עסקאות/תשלומים יתומים.
חשד לדליפה - rollback מיידי/בידוד.
כלל: אם 2 + מדדי מפתח הם מחוץ לסף> N דקות, rollback מופעל.
2) סוגי גלגולים
1. יישום: rollback של מכולות/חבילה לתג הקודם.
2. תכונה: כיבוי מיידי באמצעות מתג דגל/להרוג.
3. ניתוב - מחזיר משקל לגרסה היציבה (canary _ stable) או blue # green.
4. בסיס נתונים: rollback לוגי (פיצוי), החזרה שלבית של התוכנית; PITR הוא המוצא האחרון.
5. תשתית: מתגלגל בחזרה מניפסטים/תכנית Terraform; החזרת תצורות רשת/WAF.
6. נתונים/מטמון/תורים: איפוס/נכות/הילוך חוזר הודעות; מטמונים גרסה.
3) עקרונות ארכיטקטוניים של גלגול בטוח
תאימות סכימה: הרחיבו את אסטרטגיית החוזים (rollback אפשרי בין התרחבות לחוזה).
תלות מבודדת: סודות נפרדים/תצורות/מטמונים/תורים לתיקונים.
פעולות אידמפוטנטיות: התחלה חוזרת של נדידה ועבודה - בטוחה.
אימפולסיביות של חפצים: תמונות, תרשימים, תסריטי SQL - מסוממים וחתומים.
GitOps נכון: הגרסה הנוכחית והניתוב מחויבים למאגר המניפסט.
4) רולבק מכניקה (קוברנטס/GitOps)
Argo Rollouts (החזר משקל)
yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: api }
spec:
strategy:
canary:
steps:
- setWeight: 5
- pause: { duration: 10m }
in case of analysis failure → automatic rollback to stable
GitOps rollback (רעיון)
git revert <commit_with_bad_version>
git push # Argo CD/Flux revert cluster to previous revision
NGINX: מתג מהיר על יציב
nginx map $cookie_canary $to_canary { default 0; 1 1; }
upstream stable { server api-stable:80; }
upstream canary { server api-canary:80; }
server {
location / {
if ($to_canary) { proxy_pass http://canary; }
proxy_pass http ://stable; # removed canary cookie - instant rollback
}
}
5) מסד נתונים Rollback והגנת נתונים
Explox Migrate Action:- התרחב - הוסף שדות חדשים/אינדקסים, קוד תומך בתרשים ישן וחדש.
- היגר: הקוד מתחיל לכתוב למזימה חדשה, אנחנו לא לשבור את הישן.
- חוזה: למחוק את הישן רק לאחר ייצוב.
- PITR/תצלומים: השתמש רק אם פיצוי לוגי אינו אפשרי.
- פיצויים: תסריטים/עבודות נפרדות לתיקון הכנסת/מאזן/תשלומים.
- חלונות לקריאה בלבד: כאשר נמתחה ביקורת, נחסום זמנית את ההקלטה כדי ”להקפיא” את המדינה.
sql
-- expand
ALTER TABLE wallet ADD COLUMN bonus_balance NUMERIC DEFAULT 0 NULL;
CREATE INDEX CONCURRENTLY idx_wallet_bonus ON wallet(bonus_balance);
-- migrate in code, two-sided write
-- contract (after stabilization)
ALTER TABLE wallet DROP COLUMN legacy_bonus_balance;
6) תורים ומטמונים על גלגיליות
מטמון גרסה: מפתחות מקודמים עם גרסה (”v2:”) # דו קיום בטוח.
נכות: במהלך רולבק - ניקוי המוני ”v2:”, לחזור ”v1:”.
תורים: מסיבות/נושאים לפי הגרסה; משחזר הודעות ”מהמחסום”.
דה-כפילות/אידמפוטנטיות: מפתחות אידמפוטנטיות לעיבוד חוזר ללא שכפול.
7) שערי SLO וגלגולים אוטומטיים
מטריצות: p95/99, שגיאה-קצב, רוויה (CPU/IO/GPU), עומק תור, אסימונים/שניות, המרת תשלום.
מדיניות (דוגמה):
if p95_latency_ms > 250 for 5m OR error_rate > 1. 5% for 3m OR payment_conv < baseline-0. 3%
then rollback release && open incident && freeze deploys
8) ספרי ריצה (חוברות משחק)
א) גידול לאחר שחרור של p99 ו ־ 5xx
1. עצור לקדם (להקפיא קנרית/כחול-ירוק).
2. העבר את התנועה לשינויים יציבים.
3. בדוק את השהיית המטמון/התור/PSP.
4. הסר אבחון: יומנים, פרופילים, גרסאות לקוח/סכימה.
5. צ 'טים, ערוץ מצב, כרטיס אירוע.
6. התחל בפעולת תיקון: תיקון/תיקון/ביטול של תכונה.
שגיאת נדידת מסד נתונים ב '
1. הקפאה כותבת (קריאה בלבד, בקצרה).
2. יישום rollback גרסה יציבה (תואמת לסכימה ישנה).
3. הפעל פיצוי/rollback script.
4. תקליט הפשרה; התבונן בסחיפה/שגיאות.
C) ביטול תשלום (PSP)
1. החלף ניתוב PSP לנתיב הקודם.
2. מתגלגל חזרה עיבוד שחרור.
3. ליישב את כל התשלומים, לחזור עם מפתחות אידמפוטנטים.
D) LLM/המלצות מתפרקות
1. בטל מודל/פרמטרים חדשים (דגל תכונה).
2. החזר את נקודת הקצה/משקל הקודמת; נקה מטמון KV חדש.
3. בדוק אסימונים/s, אסימון הלינה הראשון, רעילות.
9) תקשורת והקפאה משחררת
הקפאת חלון: לאחר ההפעלה - הפוגה משחררת ל ־ RCA/לתקן.
ערוץ אחד: עדכוני מצב, כרונולוגיה של מעשים, מי עשה מה.
בעלי עניין: מוצר/CS/תשלומים/עורכי דין (ב-PII).
10) לאחר התקרית: ניתוח ומניעה
RCA (אין חיובים): סיבה שורשית, גורמים תורמים, למה שערים לא עבדו (אם הם לא).
פעולות: מבחני נדידה, גבולות, שערים, יכולת תצפית.
סף SLO: התאמה אם מדי ”רך ”/” קשה ”.
תיעוד: עדכון ריצות, הוספת התראות, אימון (משחק-יום).
11) כלים ותבניות
GitOps: Argo CD/Flux - ”לחזור ”/” rollback” להתחייב עם גרסה.
משלוח מתקדם: Argo Rollouts/Flagger - stop/roll בחזרה על מדדים.
אדג '/אינגרס: ניתוב משקל, ניתוב עוגיות, מתג מהיר.
דגלי תכונה: התפרצות שברים, מתג-חיסול.
DB נדידה: mig-מסגרות עם למעלה/למטה, יבש לרוץ, חנק.
תצפית: לוחות מחוונים מוכנים ”להשוות” (יציב נגד קנרית).
12) רשימת מוכנות לגלגיליות
1. פריטים חתומים (תמונות/תרשימים/SQL).
2. תצורת שתי מסילות/סודות/מטמונים/תורים (prefixes גרסה).
3. דיאגרמת DB על ידי הרחבת action action.
4. הקנריים והכחולים-ירוקים משוחררים עם שערי SLO ותסבוכת אוטומטית.
5. ריצות לתרחישי מפתח (תשלומים/DB/מטמון/LLM).
6. כפתורי ChatOps: '/rollback ', '/להקפיא', '/לקדם '.
7. ביקורת וכריתת עצים: מי, מתי, מה התגלגל בחזרה; חפצים אבחון.
8. אימון יום-משחק: הדמיה של טבילות ושיקום.
9. עסקים ותמיכה בתכנית תקשורת.
10. יציב נגד חדש על מסך אחד.
13) אנטי דפוסים
נדידה מפריעה לפני הקוד מתגלגלת החוצה (ללא תאימות לאחור).
מטמונים/תורים משותפים ללא גרסאות * rollback מלוכלך.
אין GitOps/Change History # עריכה ידנית לדפוס.
שחרור כנרית ללא שערים/טלמטריה * זיהוי מאוחר.
Rollback ללא הקפאה ו RCA # לחזור על התקרית.
ניטור רק מדדים טכניים ללא מדדים עסקיים (תשלומים/תעריפים).
סודות משותפים לכל התיקונים. קשה לבודד את התקרית.
תקציר
rollback אמין הוא לא ”מנוף עצור”, אלא תהליך הבנוי לתוך משחררים: ויסות ותאימות, תלות מבודדת, שערי SLO, מציאות GitOps, גלגולים אוטומטיים וספרים ברורים. גישה זו מאפשרת לפלטפורמות iGaming להחזיר במהירות את היציבות, לצמצם את הפסדי הנתונים וההכנסות, ולהפוך כל תקרית למקור לשיפור.