אסטרטגיות שחרור: כחול-ירוק וקנרית
(סעיף: טכנולוגיה ותשתיות)
תקציר
כחול ירוק נותן מתג מיידי בין שתי ערימות מלאות (כחול/ירוק) עם ההילוכים הפשוטים ביותר. קנרית מגדילה בהדרגה את נתח התנועה לגרסה החדשה תחת שליטתם של שערי SLO (latency, avery-rate, business metrics). עבור iGaming, זוהי דרך לשחרר ללא הפסקה בשיא של טורנירים וקידומים, תוך שמירה על p99 יציב ואיכות.
1) מתי לבחור
כחול ירוק - שחרור מהיר, מורכבות מינימלית, אתה צריך תקציב אשכול/משאב ”כפול”. טוב עבור API/חזית ללא הגירת מדינה מורכבת.
הקנריים - שחרור בסיכון גבוה (זרימה חדשה, שינויים קריטיים), מאפשר לך ”לתפוס” הידרדרות של 1-5% מהתנועה. דורש טלמטריה ושערים אוטומטיים.
2) עקרונות אדריכליים
1. ניתוב רמה L7: balancer/Ingress/service-mesh (מודולי תנועה משוקללים, עוגיות/ניתוב דגלים).
2. תלויות מבודדות: תצורות, פישפלאגים, סודות, מטמונים - בנפרד לתיקונים.
3. תאימות נתונים: התאימות קדימה (extending ach contraction).
4. תצפית: תוויות/גירסה בודדות במדדים/רישומים/רצועות.
5. השוואה: p95/p99, שיעור שגיאה, KPI עסקי; גלגול אוטומטי.
3) כחול-ירוק: תבנית בסיסית
זרם
1. להרחיב ירוק (עותק של כחול) * לחמם את המטמונים/חיבורים.
2. תריץ בדיקות בריאות/עשן.
3. לעבור תנועה (DNS/LB/Ingress) לירוק.
4. אנחנו שומרים את בלו במצב ”חם” כנסיגה עד סוף החלון.
דוגמה: החלפת רמת Ingress (רעיון)
yaml
Annotated/Backend Option - In Prod, it is usually controlled by the spec operator/rollout:
rules:
- host: api. example. com http:
paths:
- path: /
backend:
service:
name: api-green # used to be api-blue port:
number: 80
יתרונות/חסרונות
גלגול פשוט (חזר כחול).
זמן שחרור צפוי.
דורש שכפול של משאבים.
סיכון של ”מפץ גדול” ללא מדידת קנרית.
4) קנרית: הצטברות הדרגתית
זרם
1. תנועת צללים (אופציונלי) * 1% מהתנועה האמיתית * 5% * 25% * * 50% * 100%.
2. בכל שלב - שערים על ידי מדדים עסקיים/SLO.
3. במהלך ההשפלה, גלגול אוטומטי ושימור של חפצי אבחון.
דוגמה: Argo Rollouts (קטע)
yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: payments-api }
spec:
strategy:
canary:
canaryService: payments-canary stableService: payments-stable steps:
- setWeight: 5
- pause: { duration: 5m }
- analysis:
templates:
- templateName: slo-latency
- setWeight: 25
- pause: { duration: 10m }
- analysis:
templates:
- templateName: error-rate
- setWeight: 50
- pause: { duration: 20m }
- setWeight: 100
דוגמה: Flagger + Istio/NGINX (רעיון)
yaml apiVersion: flagger. app/v1beta1 kind: Canary metadata: { name: games-api }
spec:
targetRef:
apiVersion: apps/v1 kind: Deployment name: games-api service:
port: 80 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
5) חימום וניהול מצב
מטמונים/מקורות: לחמם את מטמון רדיס/HTTP/CDN, להכין חיבורי מאגר חימום לבסיס הנתונים/PSP.
ML/LLM/מודלים: טעינת משקולות/מדדים/הטמנה, מטמון KV, בקשות עיקריות ל ”התחממות”.
קבצים/חפצים: תוכן סטטי, תבניות, תצורות - הגישו מראש לנפח/סירה מקומית.
Ficheflags: rollout ב 1-5% של קהל/קטע, הזדמנות חירום-להרוג.
6) מסדי נתונים: ”הרחיבו את * חוזה הגירה”
1. התרחב: הוסף טורים/אינדקסים חדשים, תמוך בשתי הגרסאות.
2. היגר: קוד משתמש בתכנית חדשה; הנתיבים הישנים נשארים תקפים.
3. חוזה: למחוק שדות/אינדקסים ישנים לאחר השתחררות מלאה.
ברישומים, לתקן את סכימה וגרסת הלקוח; כל השינויים אידמפוטנטיים.
לנדידה כבדה - דקירות רקע, חנק וחלונות ”לעצור את העולם” כפי שהוסכם.
7) יכולת תצפית ושערים (SLO/SLA)
מדדי SRE: p50/p95/p99, קצב שגיאה, רוויה (מעבד/GPU/IO), עומק תור, זמן התחלה קר.
מדדים עסקיים: המרת תשלום, הצלחה במכרז, זמן משיכה (TTW), תגובות פרומו.
איכות תוכן/LLM: אסימונים/S, אורך תגובה, רעילות, ציון RAG.
שערים: קידום אוטומטי/rollback כאשר הולך מעבר לסף ו/או כאשר ”השימושי” המטרי נופל.
gate:
p95_latency_ms <= 250 error_rate % <= 1. 0 payment_conv >= baseline - 0. 3%
action:
promote rollback
8) שחרור תזמור ואינטגרציה עם CI/CD
גיטופס: שינויים בגרסה/משקל - דרך יחסי ציבור למאגר המניפסט.
בודק אוטומטית עשן/e2e לפני שהתנועה מתחילה.
תוכנית שחרור: לוח זמנים של שלב הקנרית, אחראים, ערוצי צ 'טופ, חלונות גלגול.
פריטי ארכיון: תצורות ניתוב, תצלומי לוח מחוונים, רישומי השוואה מטריים.
9) אזור רב וקצה
סדר: ראשית אזור ”הכי פחות קריטי ”/ROR, ואז את אלה הראשיים.
ניתוב מבוסס Latency: לפקח SLOS מקומי; לא לערבב תנועה ללא סיבה.
כחול באזור איי יכול להיות ד "ר אתר לגרין באזור בי.
10) שחרור בטיחות וציות
חתימה על מראה/תרשימים, SBOM; בדיקת חתימות במדיניות הכניסה.
סודות: מנהלים חיצוניים בלבד; גרסאות עצמאיות עבור כחול/ירוק.
PII/Regionality: לא להסיט את התנועה מח "ש דרך אזור זר; מסווה את היומנים בעת השוואה.
מי קידם, אילו שערים עבדו, איפה הגלגיליות.
11) דוגמאות הגדרות
NGINX: Canary by Cookie/Header (רעיון)
nginx map $http_x_canary $canary {
default 0;
"1" 1;
}
upstream api_stable { server stable:80; }
upstream api_canary { server canary:80; }
server {
location / {
if ($canary) { proxy_pass http://api_canary; }
proxy_pass http://api_stable;
}
}
Feature-flag "rollout' (פסאודו)
yaml feature: new_checkout rollout:
percentage: 5 criteria:
country: ["TR", "BR", "MX"]
cohort: "new-users"
kill_switch: true
12) ספרי ריצה (תרחישים טיפוסיים)
צמיחת p99 על הכנרת: לעצור את הקידום * להגדיל את אצווה/פסק זמן, לכבות תכונות כבדות באמצעות דגלים * להפעיל מחדש חלק מהתרמילים.
טיפת המרת תשלום: השווה נתיבי PSP/תכונות, אפשר רישום צללים, rollback ליציבות.
בעיה עם נדידת מסד הנתונים: להקפיא את התנועה לכתיבה, לאפשר מצב קריאה בלבד, להחזיר את הסכימה (במידת האפשר), לתקן דקירות חירום.
תקרית מח "ש: ניתוק הגרסה הקנרית, שלילת סודות, דיווח וביקורת חשבונות.
13) רשימת מימושים
1. הגדר את המדיניות: היכן כחול-ירוק, היכן הקנרית; מה שנחשב ”קריטי”.
2. הגדרת ניתוב משוקלל (Ingress/mesh/router).
3. ללכוד שערי סף SLO וגלגולים אוטומטיים.
4. יישום explox migrate action עבור מסד הנתונים; מבחני נדידה.
5. אפשר חימום של מטמונים/דגמים וחיבורי בריכת חימום.
6. הזן GitOps ורישום כל פעולות השחרור.
7. דמיינו את השוואת המדדים (canary vs stable).
8. בזבז את יום המשחק: דמה את בעיית גלגול השער/כשל/מסד הנתונים.
9. לתעד את ספרי הריצה ואת מתג ההריגה.
10. תוכנית ריגול מרובה משחררת בתורו, לא באותו הזמן.
14) אנטי דפוסים
שחרור כנרית ללא שערים וטלמטריה * זיהוי מאוחר של השפלה.
מיזוג סכימת DB: הגירה משבשת לקוד להשתחרר.
מטמון/תור משותף לכחול וירוק ללא בידוד.
החלפת DNS עם TTL נמוך ללא אימות - תנועה ”מנופפת”.
סודות/הגדרות משותפות לשני התיקונים * rollback מורכב.
תנועה למזון ללא צל/עשן היא סיכון גדול.
אין מתג חיסול/דגל תכונה לכיבוי מהיר.
תקציר
כחול-ירוק מספק החלפה מיידית וקלה, סיכונים מנוהלים בקנרית וגילוי מוקדם של בעיות. ב-iGaming, שתי התבניות משולבות: הקנרית ב ”חד” משתנה + כחול-ירוק כמנגנון בסיסי ללא זמן השבתה. הוספת שערי SLO, GitOps, חימום, תאימות לבסיס הנתונים ובידוד התלות - ושחרורים יהיו צפויים מראש, גלגולים מהירים, ו-p99 ומדדים עסקיים יציבים גם בתקופות השיא.