בקרת גירסה מוגדרת
1) מדוע הגדרות וריאציות
ההגדרות הן מדיניות שניתן להריץ: היא מגדירה ניתוב, גבולות, תכונה של דגלים, גישה, סכימות נתונים. בקרת גרסה הופכת שינויים ניתנים לחזרה, ניתנים לצפייה והפיכים: מפחיתה את קצב ה-MTTR ושינוי הכישלון, מבטלת את ”קסם במכירות”, מעניקה ביקורות לאבטחה וציות.
2) מיסוי הגדרות
תשתיות (IC): אשכולות, רשתות, LB, DB, תורים.
שירות: פרמטרים יישומיים, משאבים, גבולות, פסקי זמן, מגשים מחדש.
היגיון מוצר/עסק: תעריפים, ניסויי AB, כללי תוכן.
Data/DataOps: תוכניות חוזים, רעננות SLA, טרנספורמציה.
אבטחה: מדיניות גישה, תפקידים, מפתחות/תעודות (הסודות עצמם נמצאים מחוץ למחסנית).
תצפית: SLI/SLO, התראות, לוחות מחוונים.
כלל: כל מה שמשפיע על התנהגות המערכת הוא תצורה ועליו לחיות תחת ויסות.
3) עקרונות ורסינציה
1. גיטופס: מקור האמת היחיד הוא המאגר; שינויים באמצעות יחסי ציבור וצינורות אוטומטיים.
2. הצהרה: תיאור מדינת היעד, לא תסריטי שלב.
3. אי-מידתיות של חפצים: הגדרה = = תמונת מצב ממשית באופן חד-משמעי.
4. סכימות ואימות: JSON/YAML-schema, יציקת סוג קפדנית, שדות דרושים.
5. סביבות כמו קוד: ”env” - תיקיות/כיסוי (dev/stage/prod), ההבדלים הם מינימליים וברורים.
6. אידמפוטנציה וגלגולים: חזרה/rollback כל שחרור תצורה.
7. ביקורת חשבונות ואיתור: מחבר, היגיון, כרטיס/RFC, שינוי חתימות.
4) אסטרטגיות Versioning
SEMVER עבור חבילות הגדרות ('MAJOR. מינורי. תיקון ':- סכימה/שינויי מדיניות בלתי תואמים.
- שדות/חוקים חדשים, תאימות לאחור.
- תיקון - תיקון ערכים ללא שינוי מזימות.
- תג משחרר ושחרר הערות: מה השתנה, איך להתגלגל בחזרה, נקודות ביקורת.
- הצמדת/נעילת קבצים: תיקון גרסאות התלות (מודולים, תרשימים).
- גרסאות מטריקס: החפץ של יישום X מתאים לתצורת Y (מטריצה בקטלוג השירות).
5) ארגון מאגר
config-repo/
policies/ # общие политики (RBAC, SLO, алерты)
services/
checkout/
schema/ # JSON/YAML схемы конфигов base/ # дефолтные значения overlays/
dev/
stage/
prod/
data-contracts/ # схемы данных, SLA свежести releases/ # теги, changelog, артефакты валидации tools/ # линтеры, генераторы, тесты
ענף: גזע מבוסס (ראשי) + ענפי תכונה קצרים. מיזוג - באמצעות יחסי ציבור רק עם מודיע חובה.
6) אימות ובדיקה
סכימה: כל שינוי עובר אימות סכימה (נדרש, enum, ranges).
לינטרים סטטיים: פורמט, מפתחות, שכפולים, שדות אסורים.
מבחני תאימות: הגדרה + גירסת שירות/תרשים עולה בארגז החול.
בדיקות רצות: יישומים יבש לרוץ, ”מה-אם” diff יעד המדינה.
מדיניות-כקוד: כללי כניסה (Rego/CEL) - מי יכול לשנות מה.
7) להירגע ולהתגלגל בחזרה תצורות
משלוח מתקדם: canary 1% * 5% * 25% עם SLO-gardrils.
שער פריסה: אין SEV-1 פעיל, התראות הן ירוקות, חתימות תקפות, רולבק מוכן.
Rollback: "לחזור Tag vX. Y.Z 'או עובר לתצלום הקודם; פקודות רולבק מתועדות בספר הריצות.
שחרור אנוטציות: גרסת ההגדרות מתפרסמת במדדים/יומנים כדי להתאים במהירות למקריות.
8) תצורה דינמית ומרוחקת
תצורה מרוחקת/דגלים: שינוי פרמטרים ללא הפעלה מחדש; כל הדגלים נמצאים גם תחת GitOps.
גבולות: אילו פרמטרים רשאים להשתנות באופן דינמי (רשימת הלבנים).
מטמון ועקביות: TTL, גרסאות, החלפת מערכת אטומית (שני פאזות הוצאה לאור).
מעקות בטוחים: גבולות וטווחים לשינויי זמן ריצה, אוטומטי rollback כאשר עוזב SLO.
9) סודות ונתונים רגישים
לעולם אל תשמור סודות במחסנית. בתצורות - רק מקשרים/בעלי מיקום.
הצפנה של קבצי הגדרות, במידת הצורך: אינטגרציה עם מנהל המפתחות/הסוד.
סבב ו-JIT: גישה מונפקת למשך זמן הפעילות; נתיב הפעולה הוא בלתי ניתן לשינוי.
אימות אוסר על פיל/סודות להיכנס לתצורה.
10) ניהול סביבה
בסיס + כיסוי: ההבדלים בין dev/stage/prod הם מינימליים ושקופים.
קידום על חפצים: אותה תמונה שעברה את השלב מקודמת בדרבן.
חלונות זמן: שינויים בתצורות לא מתרחשים בעת שינוי החובה; עבור סיכון גבוה - RFC וחלון תחזוקה.
11) זיהוי סחיפה וחיסול
הבקר משווה את מצב היעד למצב עצמו ומדווח על ההבדל.
התראות סחיפה: דף רק עבור סתירות קריטיות; האחרים הם כרטיס.
תיקון אוטומטי: ברזולוציה - לחזור למצב היעד.
עריכת מדריך ביקורת: כל ”kubectl edit/ssh” = תקרית תהליך cAPA.
12) קטלוג הגדרות ובעלות
קטלוג שירות: בעלים, SLO, מדיניות קשורה, תרשימים, גרסאות, תאימות.
מי מציע, מי סוקר, מי מאשר; מונית לסיכון גבוה.
שקיפות: לכל רשומה יש היסטוריית גירסה וקישורים ליחסי ציבור/כרטיסים/AAR.
13) מדדי בגרות
כיסוי:% שירותים/מדיניות עבור GitOps (יעד 95%).
שינויי הגדרת זמן עופרת: חציוני מיחסי ציבור לדרבן.
שינוי קצב הכישלון: פרופורציית ההגדרות משתחררת עם רולבק/תקרית.
קצב סחיפה: מספר אי התאמות/שבוע וזמן חיסול.
זמן ההחלמה החציוני לגרסה הקודמת.
ביקורת מלאה: פרופורציה של שינויים עם ראיות מלאות (מאשרים, ריצה יבשה, ביקורות).
14) רשימות בדיקה
לפני שינוי ההגדרות
[ ] יש כרטיס/RFC ובעל שינוי.
[ ] הסכמות והקווים קיבלו תוקף.
[ ] יש תוכנית החלפה ופקודות במדריך.
[ שער ]: בדיקות ירוק, חתימות תקפות, אין SEV-1 פעיל.
[ ] לסיכון גבוה, חלון תחזוקה מוקצה.
במהלך השתחררות
[ ] הקנריים ו-SLO-gardrils פעילים.
[ ] הפצת הערות מתפרסמות.
[ ] יש הודעות הד לערוץ; רעש התראה מודחק על ידי כללי MW.
מאוחר יותר
[ חלון התצפית ] עבר, SLO ירוק.
[ ] סיכומים וראיות (לפני/אחרי תרשימים, דוחות יבש) מצורפים לכרטיס.
[ ] שרטוטים/תיעוד מעודכנים לפי הצורך.
15) תבניות מיני
15. תרשים הגדרות 1 (סכימת YAML, מקטע)
yaml type: object required: [service, timeouts, retries]
properties:
service: { type: string, pattern: "^[a-z0-9-]+$" }
timeouts:
type: object properties:
connect_ms: { type: integer, minimum: 50, maximum: 5000 }
request_ms: { type: integer, minimum: 100, maximum: 20000 }
retries:
type: object properties:
attempts: { type: integer, minimum: 0, maximum: 10 }
backoff_ms: { type: integer, minimum: 0, maximum: 5000 }
15. 2 הגדרות בסיסיות + פרוד כיסוי
yaml services/checkout/base/config.yaml service: checkout timeouts: { connect_ms: 200, request_ms: 1500 }
retries: { attempts: 2, backoff_ms: 200 }
limits: { rps: 500 }
features:
degrade_search: false psp_a_weight: 80 psp_b_weight: 20
yaml services/checkout/overlays/prod/config.yaml limits: { rps: 1200 }
features:
psp_a_weight: 70 psp_b_weight: 30
15. 3 מדיניות כניסה (רעיון)
yaml allow_change_when:
tests: passed schema_validation: passed active_incidents: none_of [SEV-0, SEV-1]
rollback_plan: present signed_by: ["owner:team-checkout","platform-sre"]
15. 4 כרטיס שחרור הגדרות
Release: checkout-config v2.3.1
Scope: prod EU
Changes: psp_b_weight 20→30, request_ms 1500→1300
Risk: Medium (маршрутизация платежей)
Canary: 1%→5%→25% (30/30/30 мин), guardrails: success_ratio, p95
Rollback: tag v2.3.0
16) אנטי דפוסים
עריכה בדרבן בעבר GitOps (”מעוות במהירות”).
סודות/מח "ש במאגר ההגדרות.
חוסר בדיאגרמות ובדיקות סטטיות.
סטייה חזקה של סביבות (base expord).
”בשידור חי” עם דגלים ללא גרסאות והיסטוריה.
מתעלם מסחיפה ועריכה ידנית על שרתים.
תגיות ללא הערות שחרור ותוכנית החזרה.
17) מימוש מפת דרכים (שבועות 4-6)
1. נד. 1: מלאי של תצורות; קטלוגים נפרדים, תוכניות לשירותי 10.
2. נד. 2: כולל לינטרים/אימות וניהול יבש במצ "ח; איחוד ללא המחאות ירוקות.
3. נד. 3: GitOps roll + canaries; אנוטציות גרסה בטלמטריה.
4. נד. 4 - הזן מדיניות-כקוד ודפוסי החזרה. התראות להיסחף.
5. נד. 5-6: לכסות 90% מהשירותים; הפחתת הבדלי env לכיסוי; הוספת מדדי בגרות וסקירה שבועית של שינויי הגדרות.
18) השורה התחתונה
בקרת הגדרות היא מערכת, לא רק גיט. שרטוטים ואימות, GitOps ומדיניות גישה, קנריות וגלגולים, זיהוי סחף וביקורת מלאה הגדרה להפוך חפץ מנוהל. התוצאה היא שינויים מהירים ובטוחים, יכולת חיזוי של SLO ואמון קבוצתי בכל שחרור.