Chaos Engineering
1) Esasy ýörelgeler
Başlangyç çaklama hökmünde Steady State. Kadany anyk kesgitläň (mysal üçin: p95 <200 ms, error rate <0. 3%, kritiki flowyň üstünligi> 99. 5%).
Izolirlenen üýtgewler. Täsirini we gowulaşmagyny sebäplere görä baglanyşdyrmak üçin mümkin boldugyça bir gezek bir faktory üýtgediň.
Dereje. Howpsuz gurşawda kiçi amplitudalardan başlaýarys → gurşawy we intensiwligi giňeldýäris.
Guardrails. SLO/alertler/ýalňyşlyklaryň býudjeti boýunça aç-açan duruş şertleri.
Gaýtalanma. Synag determinirlenen görnüşde geçirilmelidir (skriptlar/manifestler/IaC).
Ahlak we howpsuzlyk. Töwekgelçilikli synaglarda hakyky şahsy maglumatlar we maliýe amallary ýok.
2) "Durnukly ýagdaý" näme?
"Steady State" ulanyjy we iş üýtgemeleri üçin gymmaty beýan edýän syn edilýän metrikler toplumydyr:- Esasy endpointleriň gizlinligi p50/p95/p99.
- Üstünlikli geleşikleriň paýy we möhüm ýollaryň öwrülişigi.
- Error rate, wagt, "shed" soraglarynyň paýy (doýanda kesilen).
- Öz-özüňi dikeltmegiň tizligi (MTTR), retraýalara garşylygy (tupansyz).
- Domeniň üýtgemegi: "balansda minuslaryň" ýoklugy, bir gezeklik ýerine ýetirilen tölegler, hasabat günleriniň yzygiderliligi we ş.m.
3) Sanjym katalogy ("döwýäris")
Tor: gijikdirme, jitter, ýitgi/dublikatlar, geçirijilik çäkleri, TLS-gaýdyşlar, DNS-flapping.
Hasaplamalar: CPU-nyň aşa ýüklenmegi, ýat basyşy/GC, deskriptorlaryň tükenmegi, clock skew.
Ammar: ýokary p95 I/O, ENOSPC, lideriň şowsuzlygy/göçürmeleri, bölünen brain, uzaga çeken fsync.
Garaşlylyk: 5xx/429, "haýal üstünlik", daşarky API-leriň zaýalanmagy, rate-limit.
Maglumatlar: dublikatlar/habarlar, out-of-order, "hapa" ýazgylar, wersiýalaryň gapma-garşylygy.
Amallar: şowsuz goýberiş/ , bugly ficha-baýdak, möhleti geçen şahadatnama, açaryň aýlanmagy.
Adamlar we amallar: jogapkär adamlaryň ýoklugy, goluň gijikdirilmegi, nädogry runbook.
4) Synag dizaýny (şablon)
1. Gipoteza: "Esasy API p99 walýuta hyzmatyna 300 ms bolan ýagdaýynda <450 ms, breýker açylýar, 15 minut mundan ≤ stale-jogap berilýär".
2. Sanjym: näsazlyk profili (görnüşi/amplitudasy/dowamlylygy) we maksatly kontury.
3. Metrikler/log-tegler: 'chaos. experiment_id`, `phase=inject|recover`.
4. Guardrails: abort wagtynda 'error _ rate> 2%' ýa-da p99> SLA × 2 minutdan köp 1.
5. Netijeler/netije: gözegçilikleriň, bökdençlikleriň, gowulaşmalaryň sanawy, iş meýilnamasy we gaýtadan geçmek.
5) Gözegçilik etmek: hökmany zat
Treýsing: garaşlylyk arkaly soramagyň ýoly; degradasiýa segmentleri bellendi.
Çeşmeleriň ölçegleri: CPU, heap/GC, FD, disk IOPS/lat, tor bandwidth, nobatlaryň çuňlugy.
Iş ölçegleri: amallaryň öwrülişigi/üstünligi, öwezini dolan amallaryň paýy.
Wakalaryň ýazgylary: breýkerleri, retralary we olaryň býudjetini açmak/ýapmak, DB liderini üýtgetmek.
Synag paneli: guardrails bosagalary we abortyň "gyzyl düwmesi" bolan live-dashboard.
6) Garawullar we howpsuzlyk
Tehniki: ýokarky çäkler error rate/latency, üstünlikli amallaryň paýynyň azalmagy, DLQ ösüşi.
Guramaçylyk: on-call gatnaşýan wagt penjiresi, "bir zona - bir synag" ýörelgesi.
Maglumatlar/utgaşmalar: diňe sintetika ýa-da şahsylaşdyrylmadyk toplumlar; düzgünleşdirijiniň bozulmagyna getirýän synaglaryň gadagan edilmegi.
Yza çekilmegi: taýýar prosedura rollback/disable/soft drain traffigi.
7) Ýüze çykmaly durnuklylyk patternleri
Wagt-býudjetleri we jitter retralary (tupansyz).
Half-open we eksponensial dikeldiş bilen Circuit Breaker.
Bulkheads: tankylyk boýunça howuzlaryň izolýasiýasy (tölegler vs analitika).
Backpressure we rate-limit: pes ileri tutulýan kesiş.
Coalescing bilen kesiş, "ýylylyk tupanlaryndan" gorag.
Zyýanly täsirleriň we kompensasiýa hereketleri bolan saga.
Maglumatlary dikeltmek üçin kworumlar, feýlower we anti-entropiýa.
8) Ssenarileriň mysallary (eskizler)
8. 1 Haýal garaşlylyk (YAML)
yaml experiment: slow-downstream target: svc:api inject:
dependency:
name: currency mode: add_latency p95_ms: 300 duration: 10m guardrails:
error_rate: "< 1. 5%"
p99_latency: "< 450ms"
expectations:
breaker_open: true stale_data_served: "<= 15m"
8. 2 DB lideriniň ýitmegi
Sanjym: lideriň durmagy/mejbury gaýtadan saýlanmagy.
Garaşmak: ýazgylaryň wagtlaýyn gadagan edilmegi, kworumdan okalmagy, WAL/Outbox-yň howpsuzlygy, köpeltmegiň awto-dikeldilmegi, goşa ýazgynyň ýoklugy.
8. 3 ENOSPC log-diskde
Sanjym: 95-100% -e çenli diski doldurmak.
Garaşmak: ýazgylaryň gyssagly aýlanmagy, tankydy magazinesurnallaryň howpsuzlygy, tankydy däl şekilleriň öçürilmegi, aladalar we awto-remediasiýa.
8. 4 Burst-traffigi + şading
Sanjym: gyzgyn endpoint boýunça 5 minutda 3 RPS ×.
Garaşmak: pes ileri tutulýan, durnukly p95 "ýadro", retraý kaskadynyň ýoklugy.
9) CI/CD-de awtomatlaşdyryş
Her bir çykyş üçin steýjde Chaos-smoke (howpsuz amplitudalarda gysga sanjymlar).
Synaglaryň katalogy boýunça gijeki geçişler (matrisa hyzmatlary × şowsuzlyklaryň görnüşleri).
Geýtlar: eger "durnuklylyk bosagadan aşakda" bolsa (mysal üçin, üstünlikli fallbackiň paýy <95%) goýberilýär.
Artefaktlar: hasabat, söwda, CPU/heap flemgraflary, metrik we konwensiýa snapshotlary.
10) Oýun günleri (Oýun günleri)
"Janly" ssenariler bilen yzygiderli toparlaýyn maşklar:- Rollar: eksperimentiň alyp baryjysy, metrikleri synlaýjy, yza gaýdyp geliş operatory, işewürligiň wekili.
- Ssenariler: keshiň pese gaçmagy, AZ/sebit-feýloweriň bölekleýin şowsuzlygy, "erbet goýberilmegi", daşarky üpjün edijiniň elýeterliligi.
- Netijeler: runbook-da tapylan boşluklar, alertleri gowulandyrmak, SLO we retraý býudjetlerini düzetmek.
11) Maglumatlar, wakalar we ML üçin bulam-bujarlyk
Maglumat akymlary: dublikat synaglary, geçişler, out-of-order, gijikdirmeler; idempotent konsumerlerini we DLQ strategiýalaryny barlamak.
Ammar: indeksleriň zaýalanmagy, hot-partition, blokirlemeleriň gapma-garşylygy, lagyň aşagyndaky köpeltmek.
ML: fiç-storyň gijikdirilmegi, baseline-modele yza çekilmegi, giriş maglumatlarynyň hiliniň ýaramazlaşmagy (drift) - ulgam ýykylmaly däl-de, "ýumşak samsyk" bolmaly.
12) Anti-patternler
Gözegçiliksiz bulam-bujarlyk: siz "kör", netijeler spekulýatiw.
Steýj we gward-relssiz önümde derrew sanjym.
Hemme zat üçin "bir uly synag" - nämäniň işländigi belli däl.
Gipotezalarsyz we fikslerden soň retestsiz ulgamsyz bulam-bujarlyk hereketleri.
Diňe infrastruktura ünsi jemlemek - işewürlik üýtgemeleri ýatdan çykaryldy.
Adamlary/prosesleri äsgermezlik etmek: alertler, on-call, runbook - ulgamyň bir bölegi.
13) Tejribäniň kämillik derejesi (model)
1. Ad-hoc: bir gezek ýerli sanjym.
2. Stage-kaos: ssenariýalaryň katalogy, gaýtalanýan geçişler, daşbordlar.
3. Goýberiş-bulam-bujarlyk: Her goýberişde smoke-bulam-bujarlyk, geýtler, hasabatlar.
4. Çäklendirmeler bilen proto-bulam-bujarlyk: az ulag, berk garawullar, taýýar yza gaýdyp gelmek.
5. Üznüksiz durnuklylyk: awto-synaglar, SLO-dolandyryş, işleriň akymy hökmünde gowulaşmalar.
14) Binagärlik tejribesi bilen integrasiýa
Durnuklylygy barlamak: bulam-bujarlyk synaglary fault-sanjymlary we zaýalanmagyň ssenarilerini doldurýar.
Ýük synagy: "ýük + şowsuzlyk" kombinirlenen synaglar retraýlaryň kaskadlaryny we tupanlaryny ýüze çykarýar.
Policy as Code/RBAC/ABAC: guardrails, yzyna gaýtarmak ädimleri we çäkleri syýasat hökmünde resmileşdiriň.
Ylalaşyklary/gizlinligi dolandyrmak: maglumatlary gaýtadan işlemegiň tertibini bozýan synaglara ýol bermäň.
Geo-arhitektura: sebitleriň feýlowerini bulam-bujarlyk bilen barlamak we maglumatlary ýurisdiksiýalara baglanyşdyrmak.
15) Kiçi reseptler (psevdokod)
Arakesme
if breaker. open():
return serve_stale(cache. max_age=15m)
try:
res = call(dep, timeout=250ms)
return res except Timeout:
breaker. trip()
return serve_stale()
Limiter + shading
if cpu. load() > 0. 85 or queue. depth() > HIGH:
if req. priority < HIGH: return 503_SHED limiter. acquire()
Idempotent zyýanly täsiri
key = "payout:"+external_id if kv. exists(key): return kv. get(key)
res = side_effect()
kv. put(key, res, ttl=30d)
return res
16) Arhitektoryň çek-sanawy
1. Steady State we guardrails kesgitlenildi?
2. Ssenarileriň katalogy barmy (tor/CPU/ammar/garaşlylyk/maglumatlar/amallar)?
3. Syn etmek çeşmeleri, gizlinlik guýruklaryny, iş üýtgemelerini öz içine alýarmy?
4. Taýmautlar/retrailer/breýkerler/çäklendirijiler/bulkheads açykmy we parametrlenýärmi?
5. Runbook we "gyzyl düwme" taýýarlandyňyzmy?
6. Steýjde bulam-bujarlyk we gijeki synaglar barmy?
7. Oýun günleri üçin "howpsuz" penjireler we rollar ýazyldymy?
8. Synaglary gaýtalap bolýar (IaC/skriptlar), netijeler wersiýalanýarmy?
9. Gowulaşmalar wezipeler bilen kesgitlenýär, retest edilýär?
10. Diňe HTTP däl, ML-konweýerler hem öz içine alýarmy?
Netije
"Chaos Engineering" "garaşylmadyk hadysalary" öňünden aýdyp boljak ssenariýalara öwürýär. Durnuklylyk gipotezasy, gözegçilik edilýän sanjymlar, berk garawullar, baý gözegçilik we retest düzgüni, goýberiş töwekgelçiligini azaldýan we platforma bolan ynamy ýokarlandyrýan gurallardyr. Netijede, topar ulgamyň çäklerine düşünýär, şowsuzlyk şertlerinde-de hyzmaty owadan peseltmegi we ulanyja çalt gaýtaryp bermegi bilýär.