GH GambleHub

בדיקת יציבות

1) מושגים ומטרות בסיסיים

אמינות - הסתברות לביצועים; ההתנהגות במהלך ואחרי כישלון.
תקציב SLO/שגוי: קריטריון השפלה ”קבלה”.
השערת מצב יציב: ציפייה פורמלית למדדים יציבים (לדוגמה: p95 <200 ms, שיעור שגיאה <0. 5%). הניסוי נחשב מוצלח אם ההשערה מתקיימת.
סוגים של כשלים: רשת (latency, latency/difflicates, directions), חישוב (CPU, זיכרון), אחסון (I/O, תשישות דיסק), תלות (5xX, פסקי זמן, מגבלת קצב), תקריות לוגיות (תקריות חלקיות, השפלה איטית), תפעול (שחרור, תצורה), משמרות שעה).

2) פירמידת הקיימות

1. בדיקות יחידה של כשלים לוגיים (מגשים מחדש, אידמפוטנטיות, פסקי זמן).
2. מתאם רכיבים עם הזרקת פגם (Testcontainers/tc-netem).
3. אינטגרציה/מערכת עם רשת/מסד נתונים/מטמונים ופרופילים בעולם האמיתי.
4. תוהו ובוהו ניסויים בקדם-פרוד (ולאחר מכן מוגבל בדרבן) על ספרי הפעלה.
5. תרגילי יום משחק - תרחיש של הקבוצה (אנשים + כלים).

3) יכולת תצפית כבסיס

SLI: p50/p95/p99 latency, שיעור שגיאה, רוויה (CPU/Heap/FD/IOPS), טיפה/זמן, עומק תור.
עקבות: למצוא צוואר בקבוק תחת כישלון.
מדדי גמישות סמנטיים: שיעור הצלחה חינני-משפיל, שיעור בקשות מוזל, שיעור ריפוי עצמי (MTTR).
ניסויי תיוג: "תוהו ובוהו. experiment_id', שלב = הזרקת/התאוששות באירועים/יומנים.

4) קטלוג הזרקה

רשת: עיכוב/ג 'יטר, אובדן/שכפול/הזמנה מחדש, הגבלת רוחב פס, התפרצות סופות, הפסקות TLS.
מארח: הגבלת מעבד, דליפות זיכרון/מגבלות, השהיית GC, תשישות תיאורים, ”שעון”.
אחסון: LATENCY, EROFS, ENOSPC, שכפול, אובדן מנהיג.
תלויות: 5xx/429, האטה, נפנוף DNS, תעודות מיושנות, מגבלת קצב, ”תגובות חלקיות”.
נתונים: לכתוב שחיתות, ”חורים” בזרמים, שכפול אירועים, קונפליקטים בגרסה.
פעולות: שחרור כושל, דגל תכונה, דריפט הגדרות, שגיאה ידנית (כחלק מהסימולציה).

5) דפוסי יציבות (מה לבדוק)

ג 'יטר חוזר ופסקי זמן על כל רפ "ק.
מפסק מעגל (פתיחה/חצי פתיחה, התאוששות מעריכית).
מחיצות (בידוד בריכות/תורים לתחומים קריטיים).
טען Shedding (איפוס בקשות בעדיפות נמוכה כאשר רוויה).
Backpresser (אותות במעלה השרשרת, גבולות מקבילים).
Idempotency (מפתחות אידמפוטנטיות על ”תופעות לוואי”).
מטמון וערימות במקרה של השפלת מקור.
Degradation חיננית (תגובות קלות משקל, נתונים מעופשים, מאפיינים מנטרלים).
פסק זמן בתקציב.
Atomicity/פיצוי (Saga/Outbox/Transactional Inbox).
קוורומים ושכפולים (מניין R/W, השפלה עקבית עבור זמינות).
אנטי-אנטרופיה/שידור חוזר (התאוששות מחורי אירועים).

6) מרשמים להזרקות וציפיות (פסאודו-קוד)

מגש מחדש עם ג 'יטר ומפסק


for attempt in 1..N:
if breaker. open(): return fallback()
res = call(dep, timeout = base 0. 8)
if res. ok: return res sleep(exp_backoff(attempt) jitter(0. 5..1. 5))
if attempt == N: breaker. trip()
return fallback()

Shading and Backpresser


if queue. depth() > HIGH          cpu. load() > 0. 85:
if request. priority < HIGH: return 503_SHED limiter. acquire () # constrain concurrency

Idempotency


key = hash("payout:"+external_id)
if store. exists(key): return store. get(key)
result = do_side_effect()
store. put(key, result, ttl=30d)
return result

7) ניסויים: תרחישים והשערות

7. 1 ‏ ”תלות איטית” ‏

הזרקה: + 400 ms p95 ל- API חיצוני.
המתנה: צמיחת הזמן על פי X%, פתיחת המפסק, תגובות סגירה, שמירת שירות p99 <SLA, אין מפל במהלך מגשים מחדש.

7. 2 ”אובדן מטמון חלקי”

הזרקה: כישלון של 50% מקודקודי רדיס/מטמון.
המתנה: התגברות ההחמצה, אך ללא מפולת שלגים למקור (בקשה להתאגדות/TTL), חימום אוטומטי והחלמה.

7. 3 ”מוח מפוצל במסד הנתונים”

אובדן מנהיג, לעבור להעתק.
המתנה: מכחיש לטווח קצר של רשומות, לקרוא ממניין, אין אובדן נתונים, Outbox לא לאבד הודעות.

7. 4 ”ENOSPC/דיסק מלא”

הזרקה: 95-100% דיסק.
המתנה: סיבוב חירום של יומנים, אי-חסימה של תכונות, בטיחות של יומנים קריטיים (WAL), התראות ואוטוליקידים.

7. 5 ”התנועה התפוצצה”

הזרקה: x3 RPS לנקודת סוף חמה 10 דקות.
ציפייה: הצללה בעדיפות נמוכה, p95 יציב לנתיבים ”גרעיניים”, צמיחה בתור בתוך גבולות, אין סופות DLQ.

7. 6 ”שעון סקיו”

הזרקה: הזזה של זמן הצומת על ידי +/-2 דקות.
המתנה: נכון TTL/חתימות (מרחב תמרון), טיימרים מונוטוניים במגשים חוזרים, אסימונים תקפים עם סחף מקובל.

8) סביבות ובטיחות של ניסויים

התחל עם קדם-פרוד, מידע סינתטי, הגדרות/טופולוגיה קרוב ככל האפשר למוצר.
במכירות - רק חלונות מבוקרים, דגלים, משרעת צעד אחר צעד, אוטומטי-rollback, ”כפתור אדום”.
מעקות בטיחות: גבולות RPS/באג, שומרי SLO, חסימת שחרור במהלך תקריות קריטיות.
דרוש פנקס ריצות: איך להתגלגל חזרה, למי להתקשר, לאן לחפש.

9) אוטומציה ו ־ CI/CD

קטלוג של ניסויים כקוד (YAML/DSL): מטרות, זריקות, מדדים, סף, גלגול ”כפתורים”.
עשן-כאוס בכל שחרור: זריקות קצרות (למשל: 2 min + 200 ms להתמכרות) בשלב.

ריצות לילה מטריקסName -Services × Modes Name

שער שחרור: איסור פריסה אם היציבות נמצאת מתחת לסף (לדוגמה, ”כיסוי חוזר <95%” תחת ”התלות האיטית”).

10) נתונים ועקביות

יש להביא את הפעולות המבוצעות חלקית למצב מוסכם.
בדיקה חוזרת/שכפול אירועים, משלוח לא תקין, חורים והילוכים חוזרים.
ודא כי האיזון אינו שלילי, העסקאות אינן נתקעות, הגבולות אינם מופרים.

11) אנטי דפוסים

בחן רק דרך שמחה וטעינה ללא כישלונות.
רטריי ללא ג 'יטר = סערה תחת השפלה.
אין פסקי זמן גלובליים.
בריכה אחת לכל המשימות = אין בידוד (מחיצות).
תורים ”אינסופיים” = עלייה באיחור/PDE.
אפס טלמטריה של ניסויים = ”עיוורים” פרקטיקות כאוס.
תוהו ובוהו במכירה ללא רולבק/גבולות/בעל אחראי.

12) רשימת אדריכלים

1. השערת מצב יציב והגדרת SLO?
2. לכל צוות חקירה יש פסקי זמן, עצבנות, מפסקים?
3. מחיצות מיושמות, מגבלות, תרמיל גב, הטעינה?
4. מטמון יציב: התמזגות, הגנה סערה מטמון, מתחמם?
5. אאוטבוקס/סאגה לתופעות לוואי, מפתחות אידמפוטנטים?
6. מבחני קוורומים/שכפול/פיילובר?
7. האם יש קטלוג של ניסויים, כאוס לילי ושערים בסי-איי-די?
8. מדידות/עקבות מסמנים ניסויים, האם יש לוחות מחוונים?
9. רנבוק ו ”כפתור אדום” מוכנים, אחריות שהוקצתה?
10. ימי משחק רגילים עם Dev/SRE/תמיכה?

13) מיני כלים ותרחישי דגימה (סקיצות YAML)

רשת (tc/netem)

yaml experiment: add-latency target: svc:payments inject:
netem:
delay_ms: 300 jitter_ms: 50 loss: 2%
duration: 10m guardrails:
error_rate: "< 1%"
p95_latency: "< 400ms"

מעבד/Heap

yaml inject:
cpu_burn: { cores: 2, duration: 5m }
heap_fill: { mb: 512 }

תלות

yaml inject:
dependency:
name: currency-api mode: slow p95_add_ms: 500 fallback_expectation: "serve stale rates ≤ 15m old"

סיכום

בדיקת עמידות היא לא ”טריק כאוס”, אלא משמעת שהופכת את המערכת צפויה תחת תקלות. השערות ברורות, טלמטריה, קטלוג של ניסויים מבוקרים ודפוסים מוטבעים בארכיטקטורה (פסקי זמן, מפסקים, בידוד, אידמפוטנטיות) הופכים אירועים פוטנציאליים לתרחישים מבוקרים. הצוות מקבל אמון בשחרורים, והמשתמשים מקבלים שירות יציב אפילו בתנאי כשלונות.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.