החלמה אוטומטית וריפוי עצמי
(סעיף: טכנולוגיה ותשתיות)
תקציר
ריפוי אוטומטי אינו ”קסם קוברנטס”, אלא מערכת של דיסציפלינות: דגימות וגבולות נכונים, מגשים מחדש מבוקרים, בידוד של מקרים פגומים, אוטומציה של SLO ופעולות רצות על ידי כפתור/בוט. המטרה היא להפחית את MTTR ללא גודש שלג ולשמור על p95/p99, תשלומים ו-TTW אפילו בשיאם.
1) עקרונות ריפוי עצמי
1. כשל מהיר & לבודד: במהירות לזהות ולבודד תרמילים/מקרים רעים.
2. Backoff + jiter: כל מגש/סולם החוצה - עם עיכוב מעריכי וליצן.
3. SLO-מודע: אוטומציה מופעלת/משופרת עם תקציב שגיאת כוויה מהירה.
4. אידמפוטנטיות: עסקאות חוזרות מאובטחות (במיוחד תשלומים/תורים).
5. הגנה לעומק: דגימות, מכסות, גבולות, מפסק חשמלי, חריגה, מגבלת קצב, מצב השפלה.
2) בסיס בקוברנטס
2. 1 דוגמאות: לביאה/מוכנות/הפעלה
הכוכבים מגן מפני התחלות מוקדמות של שירותים כבדים.
הגשושית קובעת את המוכנות לתנועה (מחסומים/חיבורים חמים).
LivenesProbe מחדש תהליכים תלויים.
yaml readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 3
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
initialDelaySeconds: 20 periodSeconds: 10 failureThreshold: 3
startupProbe:
httpGet: { path: /health/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 30
2. 2 מגבלות, PDB וסדרי עדיפויות
בקשות/גבולות אינם כוללים ”שכן רועש”.
תקציב PodLess (PDB) מונע מכל התרמילים ליפול באותו הזמן.
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }
מחלקה לנתיבים קריטיים (תשלומים, שער).
2. 3 אסטרטגיית הפעלה מחדש ופריסה
'MaxUnavable: 00&pos עבור שירותים קריטיים; עדכון במרווחים קטנים.
PodAntiAnfinity מקצה תרמילים לצמתים/אזורים.
3) הגדלה אוטומטית ואירועים
HPA (מדדי מעבד/משתמש)
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
minReplicas: 3 maxReplicas: 30 metrics:
- type: Resource resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } }
- type: Pods pods:
metric:
name: http_requests_per_second target:
type: AverageValue averageValue: "50"
VPA
השתמש בעובדי רקע/משימות אצווה; ב prod-API - בזהירות (restarts).
KEDA (תורים/אירועים חיצוניים)
מפעיל עבור קפקא לג, RabbitMQ, Redis, Prometheus בקשות - אנו מגבירים את הצרכנים כאשר העבודה מצטברת.
4) הגנות רשת: מפסק מעגל וליקוט ”רע”
שליח/איסטיו גילוי חריג (Laughter outlier excolution)
yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
מפסק מעגל מגביל בקשות/חיבורים בו זמנית כדי לא לבטל את התלות.
קצב מגביל
הגבל את קריאות הקלט/מסלולי PSP/של ספקי המשחקים כך שגל החזרה לא יגביר את התאונה.
5) רטריי, פסקי זמן וחזרה עם ג 'יטר
הכלל: פסק זמן ראשון, לאחר מכן לסגת, תמיד עם עצבנות וניסיונות מוגבלים.
פסאודו-קוד:python def backoff(attempt, base=0. 1, cap=2. 0):
import random, math sleep = min(cap, base (2 attempt))
jitter = random. uniform(0, sleep 0. 4)
return sleep + jitter
לתשלומים - מפתחות אידמפוטנטים + שכפול.
לתורים, אות מתה ועדכון.
6) ריפוי עצמי בתורים/הזרמה
התראות צמיחה של DLQ +; עיבוד חוזר מבודד.
פיגור בקרה: צרכנים בקנה מידה אוטומטי (KEDA), תרמיל גב ליצרנים.
בדיוק פעם אחת, לפחות פעם אחת, שנבחרה במודע; מבצעים הם אידיוטים.
7) מזומן וחימום
מפתחות גרסה (”v2:”) עבור נכות בטוחה/rollback.
בריכות חמות של חיבורים ל-DB/PSP; חימום לפני ההחלפה (כחול ירוק/כנרית).
מעופש בזמן מחדש כדי להפחית את פגיעות בסיס הנתונים ”קר”.
8) תיקון אוטומטי על ידי SLO (פעולות אות)
אנו מקשרים התראות burn-rate/TTW/p95 לפעולות אוטומטיות בטוחות:- עצור קנרית/rollback burn-fast.
- סולם-אאוט של פועלים עם הצמיחה של ”תור _ לאג _ שניות”.
- מאפשר מצב ביזוי (UX מפושט, מנטרל תכונות כבדות).
- מחליפים את מסלול ה-PSP בפסקי זמן עולים.
- הפעל מתג חיסול דגל תכונה.
yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }
9) מצב השפלה (השפלה חיננית)
לפשט את UI (פחות בקשות), לכבות ווידג 'טים ”יקרים”.
יותר מטמון, פחות יציאות מאוורר/צבירה.
עבור LLM/המלצות - להפחית את גודל ההקשר/מודל, לאפשר ”מסלול מהיר”.
10) גיטופס גישה לתיקונים אוטומטיים
כל מדיניות השיקום האוטומטי והפרמטרים (פסקי זמן, סף) נמצאים בגיט.
כל פעולה אוטומטית יוצרת הערה בגרפנה וכניסה ליומן השינוי.
מדיניות קנרית ושערי SLO הם גם קוד.
11) הנדסת כאוס: בודק כי ריפוי עובד
זריקות של כשלים: עיכובים ברשת, נפילת שרידי הלב, כשל באמולטור PSP, קיפאון תורים.
תרחישי יום המשחק: אנו מודדים MTTR, איכות הפעולות האוטומטיות, נוכחות של חפצים.
תוצאות: עדכון ריצות, סף, פישפלאגים.
12) יכולת תצפית לריפוי אוטומטי
קפיצה מהירה מהמדד אל המסלול.
logs עם "trace _ id' ו-fields" retry "," ניסיון "," dgrade _ mode = true ".
השוואת לוחות מחוונים (יציב נגד קנרית), כרטיס SLO.
ביקורת של פעולות אוטומטיות: מי/מה/מתי, מדדי מקור, תוצאה.
13) בטיחות וציות
אין סודות ביומני תיקון אוטומטי/מדדים.
לפעילויות תשלום - אישור/תפקיד כפול.
GEO/PII - אל תיקח את התנועה לאזור ”הלא נכון” עם פיילובר.
14) תבניות מעשיות
כלל איסטיו - מאגר חיבור & יוצא
yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
פלאגר - קנרית עם סומק אוטומטי/rollback
yaml analysis:
interval: 1m threshold: 5 metrics:
- name: request-success-rate thresholdRange: { min: 99 }
- name: request-duration thresholdRange: { max: 300 }
webhooks:
- name: smoke url: http://tester/smoke
KEDA Science אובייקט - Kafka lag
yaml triggers:
- type: kafka metadata:
topic: withdrawals bootstrapServers: broker:9092 consumerGroup: w-consumers lagThreshold: "5000"
15) רשימת מימושים
1. הזנק/מוכנות/לביאה ונקודות קצה בריאות מוגדרות.
2. הגבלות/בקשות משאבים + PDB/אנטי-זיקה.
3. HPA/KEDA עבור API ועובדים; מדדים לאג/דרך.
4. מפסק מעגל, חריגה, מגבלת קצב בשער/רשת.
5. רטריי עם גיבוי + ג 'יטר, אידמפוטנטיות של עסקאות תשלום.
6. מטמונים לגרסה ומצב השפלה.
7. SLO gates * פעולות אוטומטיות (rollback/scale/reloute/kill-switch).
8. קוד מדיניות GitOps + ביקורת פעולות, לשחרר הערות.
9. מבחני כאוס ויום משחק בתרחישי מפתח.
10. לוחות מחוונים באיכות MTR/התראה ודוחות תיקון אוטומטי.
16) אנטי דפוסים
Libeness ”מסמרים” התהליך בשל תלות זמן = נפנוף.
Retrai ללא פסקי זמן/jitter = סערת בקשות.
HPA על ידי CPU עם שירותי IO תלויים = ”בשום מקום”.
מטמון משותף ללא גרסאות במהלך rollbacks שחיתות נתונים.
פעולות אוטומטיות ללא ביקורת/כתובת ריצה.
אין DLQ/lag metrics = = הצטברות חוב שקט.
ערבוב של ריפוי אוטומטי ו ”בעיות הסתרה”: אוטומציה מרפאת תסמינים, השורש לא נפסל.
תקציר
ריפוי עצמי הוא משמעת הנדסית: דגימות וגבולות באיכות גבוהה, מגשים ובידוד מוכשרים, פעולות אוטומטיות על אותות SLO, בנוסף לבדיקות כאוס וביקורת. קונטור זה הופך את הפלטפורמה לעמידה בפני התרסקות, חותך את MTTR ושומר על iGaming metrics - p99, המרת תשלום ו-TTW - אפילו בשעות החמות ביותר.