היערכות צינורות ושחרורים
1) למה אתה צריך היערכות-צינור
צינור ההיערכות הוא נתיב פריט סטנדרטי מיחסי ציבור לייצור עם בדיקות איכות ובטיחות "כברירת מחדל. "מטרות:- הרכבה ושחרור רבייה;
- משוב מהיר וצפוי;
- מזעור סיכונים (גלגול פרוגרסיבי, פישפלאגים, גלגיליות);
- ציות ושינוי שליטה.
2) זרימת אספקת התייחסות (ברמה גבוהה)
1. בדיקות אוטומטיות (מוך, יחידה, SAST, רישיונות).
2. בנה * תמונה דטרמיניסטית/חבילה, חתימה ו ־ SBOM.
3. בדיקה על Ephemeral # סביבה מקדימה ליחסי ציבור.
- תצהיר תדמית;
- חוזה -, אינטגרציה -, e2e-בדיקות;
- DAST/IAST, נסיגות, טעינת עשן;
- ידני UAT/QA במידת הצורך.
- 5. שחרור מועמד (RC) # הקפאת חלון Prod (canary/blue-green).
- 6. בדיקות פוסט-פריסה ופוסט אוטומטי לתקציב SLO/שגיאה.
- 7. Runbook/Changelog # סגירה של שחרור ורטרוספקטיבה.
3) תבנית צינור תקנית של YAML (מהירות תריס)
yaml
.ci/release.pipeline.yml stages: [verify, build, test, stage, approve, release, post]
verify:
- run: make lint test:unit sbom sast sca build:
- run:
docker build -t registry/app:$GIT_SHA.
cosign sign registry/app:$GIT_SHA oras push registry/sbom:$GIT_SHA sbom.json test:
- run: make test:contract test:integration
- run: make deploy:preview && make test:e2e stage:
- run: make deploy:staging IMAGE=registry/app:$GIT_SHA
- run: make test:e2e:staging && make dast approve:
manual gate: CAB/QA lead
- type: manual required_roles: [release_manager, qa_lead]
release:
- run: make release:canary TRAFFIC=5%
- run: make release:progressive STEPS="5,25,50,100"
post:
- run: make verify:slo && make notify && make create:changelog
4) שערים וקריטריונים של מוכנות (שערי איכות)
קוד ואבטחה: סיכות, כיסוי, SAST/SCA, מדיניות תלות, אין קריטי/גבוה.
חוזים: תאימות של סכימות (API/events), בדיקת Pact/Buf.
בדיקות: יחידה/אינטגרציה/e2e p-סף, יציבות (flake-rate).
טען עשן: p95/p99 בתקציב, אין השפלה.
אין ממצאים קריטיים, תרחישי בדיקת עט למסלולים רגישים.
תצפית: לוחות מחוונים/התראות ”כקוד” מעודכן, ספרי הפעלה מצורפים.
CAB/UAT: אישור בחלונות שחרור (אם נדרש על ידי רגולציה/עסק).
5) אסטרטגיות שחרור
Canary - עלייה הדרגתית בנתח התנועה (5% = 25% = 50% = 100%), roll-forward/rollback אוטומטית עבור SLO וחריגות.
כחול-ירוק - מדיה מקבילה; החלפה מיידית, החלפה פשוטה.
מאפיין דגלים - הכללה לוגית של תכונות ללא פריסה מחדש; ”שיגור אפל” ויכולת A/B.
צל/תנועה שיקוף - תנועה פסיבית לרוץ לגרסה החדשה מבלי להשפיע על משתמשים.
פריסות טבעת - גלים לפי אזור/דייר.
6) גלגולים ושחרור מדיניות אבטחה
גלגול אוטומטי על ידי טריגרים: צמיחה בקצב שגיאה, p95/TTFB מעל הסף, צמיחה של 5xx/timeout, ספייק DLQ.
גלגול ידני: פקודה '/rollback <service> <sha> בצ 'אט, כפתור אחד בקונסולת שחרור.
הקפאת חלונות: שחרור לאירועים קריטיים (טורנירים/משחקי שיא) אסור.
Changelog & לשחרר הערות: דור מיחסי ציבור, תגיות SemVer, רכיבים, נדידות.
7) נדידת מסד נתונים ותאימות
Explox Migrate Action:1. הוסף שדות/אינדקסים תואמים
2. פריסת יישומים (קריאה/כתיבה לשתי התוכניות);
3. נדידת נתונים עם עבודות רקע;
4. למחוק ישן.
מזימות מבוססות, נדידה אידמפוטנטית, הפעלה יבשה בהיערכות.
הגן על SQL הרסני: יש צורך בדגל/אישור, גיבויים אוטומטיים ובדיקת תוכניות.
8) פישפלאגים והפעלה מתקדמת
דגלי מבצעים נפרדים (לפעולה בטוחה) ודגלי מוצר.
הכללה לפי קהל: אחוז, גיאו, דייר, תפקיד.
מדדי דגל: פגיעת המרה, איחור, שגיאות.
במקרה של בעיות - פיתול הדגל מהיר יותר מגלגול חוזר.
9) יכולת תצפית כחלק מהשחרור
עקבות: מקצה לקצה "trace _ id' מהשער ל DB/תורים; השוואה של גרסאות ישנות/חדשות.
מטריצות: p50/p95/p99, קצב שגיאה, RPS, רוויה, DLQ, מגש מחדש, Time-to-Wallet/Business KPI.
יומנים: מובנים, מסווה PII, "בקשה _ id' קורלציה.
תקציב SLO, עמודים דחופים בכוננות, לשחרר פיתול אוטומטי.
10) אבטחת שרשרת אספקה
SBOM לכל מבנה, אחסון וקשירה לתג השחרור.
חתימות תמונה (coseign), אימות על אשכול (כניסה למדיניות).
התקף SLSA: מקור חפץ מוכח.
מדיניות-as-Code (OPA/Confest): מכחיש-לפי-מחדל עבור תשתיות PRs.
סודות: KMS בלבד, אסימונים קצרי ימים, סיבובי צינורות.
11) שינוי שליטה ותהליכים
CAB: אנו מסכימים על השינוי המתועד של התנהגות/חוזים מראש.
שחרר לוח שנה: חלונות גלויים על ידי מוצר/אזור/צוות.
ספרי ריצה: עבור כל רכיב - הליכים לאישור/גלגול לאחור/אבחון.
לאחר המוות/רטרו: לאחר שחרור משמעותי - ניתוח ופעולה.
12) עריכת פרופילי מבחן
AFI/Events-Blocks לא מתאימים לשינויים.
Integration/e2e: תרחישים מקצה לקצה ”הפקדה”, ”קיי-סי”, ”משיכה”.
עומס עשן: פסגות נציג; אנחנו עוקבים אחר גבולות המשאבים.
תרחישי כאוס: ניתוק ספק, עלייה באיחור, התאמות רשת.
ניטור סינתטי: ”ניסוי” עסקאות בלוח זמנים.
13) Makefile דוגמה של מטרות שחרור (נתח)
makefile release: verify build test stage approve prod post verify:
@make lint test:unit sbom sast sca build:
docker build -t $(IMG).
cosign sign $(IMG)
test:
@make test:contract test:integration deploy:preview test:e2e stage:
kubectl apply -k deploy/staging approve:
@echo "Waiting for QA/CAB approval..."
prod:
make release:canary TRAFFIC="5 25 50 100"
post:
@make verify:slo notify changelog
14) תפקידים ואחריות
Dev/Team: איכות קוד, בדיקות, נדידה, ספרי ריצה.
QA: UAT/רגרסיה תרחישים, בקרת איכות על שערים.
SRE/פלטפורמה: אמינות צינור, תצפית, מדיניות.
מנהל שחרור: לוח שנה, חלונות, CAB, פתרון סופי.
אבטחה: SAST/DAST/SCA, שרשרת אספקה, מדיניות סודית.
15) שחרר מודל בגרות
1. בדיקות בסיסיות, שחרורים נדירים, גלגיליות קשות.
2. תקליטור CI/CD מתקדם, מתאם היערכות, קנרית/כחול-ירוק, משחרר תכופות.
3. שליחה פרוגרסיבית על ידי דיירים/אזורים, תציג דגלים-ראשונים, מדיניות-כקוד, SLO-העלאה אוטומטית, איתור מלא ו-SLSA.
16) מימוש מפת דרכים
M0-M1 (MVP): תבנית צינור, לבנות + סימן + SBOM, היערכות-פריסה, בדיקות ושערים בסיסיים.
M2-M3: קנרית/כחול-ירוק, תצוגה מקדימה ליחסי ציבור, בדיקות חוזה, DAST, בדיקות סינתטיות.
M4-M6: פלטפורמת דגלים, תנועת צל, מדיניות-כקוד, אוטומטי-rollback, לשחרר לוח שנה + CAB-עבודה.
M6 +: פריסת טבעות לפי אזור, הסמכת SLSA והודאה קפדנית, אוטומציה מלאה של ספרי ריצה.
17) רשימת בדיקות טרום שחרור
[ ] תמונה חתומה, SBOM נטען ושוחרר כבול.
[ חוזים ] מתאימים, בדיקות הן ירוקות, e2e עבר על היערכות.
[ ] הגירה נבדקה (run-run), גיבוי מוכן, תוכנית rollback מתוארת.
[ ] לוחות מחוונים/התראות עודכנו, שערי SLO פעילים.
[ ] Runbook וChangelog פורסם, לשחרר חלונות הסכימו.
[ דגלי ] מוגדרים להפעלה פרוגרסיבית.
[ ] הקפאה מוגבלת, הכוננות מוכנה.
מסקנה קצרה
צינור היערכות מתוכנן היטב הופך שחרור לשגרה הניתנת לניהול: תבניות אחידות, שערי איכות ברורים, שרשרת אספקה מאובטחת, גלגול מתקדם ותצפית להפחתת הסיכון ולהפחתת הזמן לשינויים בייצור, תוך שמירה על שליטה על מדדים איכותיים ועסקיים.