GH GambleHub

Chaos Engineering: ulgamlaryň durnuklylygy

Chaos Engineering: ulgamlaryň durnuklylygy

1) Näme üçin bulam-bujarlyk in engineeringenerçiligi

Maksat prod-arhitekturanyň durnuklylygyny sözler we diagrammalar bilen däl-de, synaglar arkaly subut etmek. Biz bilkastlaýyn gözegçilik edilýän şowsuzlyklary döredýäris:
  • ulgamyň özüni alyp barşy baradaky çaklamalary barlamak we SLO-ny tassyklamak;
  • gizlin SPOF, nädogry wagt/retrailer, kaskad täsirlerini ýüze çykarmak;
  • toparlar: game-days, runbook 'lar, aragatnaşyklar;
  • "iň gowusyna umyt etmek" däl-de, "durnuklylyk" medeniýetini emele getirmek.

Möhüm: Chaos Engineering "hemme zady döwmek" ≠. Bu ylmy usul: steady-state → gipoteza → synag → netijeler → gowulaşmalar.

2) Synagyň esasy sikli

1. Steady-state (esasy çyzyk): haýsy SLI durnukly? (mysal üçin, üstünlik ≤ 500 ms 99. 95%).
2. Çaklama: bir AZ p95 ýitirilende <10%, elýeterlilik bolsa 99 ≥ ýokarlanar. 9%.
3. Synag: çäkli blast radius we stop kriteriýalary bilen meýilleşdirilen folt.
4. Syn etmek: metrikler/söwdalar/girdejiler, burn-rate SLO, biznes-SLI (mysal üçin, üstünlikli goýumlar).
5. Gowulaşmalar: tapyndylary düzedýäris, wagtlary/çäkleri/marşrutlary üýtgedýäris, runbook täzelenýär.
6. Awtomatlaşdyryş/regress: meýilnamada gaýtalaýarys, CI/CD we game-days senenamalaryna goşýarys.

3) Howpsuzlyk ýelekleri (safety first)

Blast radius: dar - bir pod/instans/marşrut/namespace.
Guardrails: SLO burn-rate (çalt/haýal) alertleri, retraý çäkleri, QPS çäklendirmeleri, hadysanyň býudjeti.
Stop-kriteriýalar: "eger error-rate> X% ýa-da p99> Y ms N minut - derrew stop we rollback".
Penjireler: on-call iş wagty, habarly steýkholderler, doňdurylan goýberilişler.
Aragatnaşyk: IC/Tech lead/Comms, açyk kanal (War-room), habar şablony.

4) Ret ediş synplary we çaklamalaryň pikirleri

Tor: gijikdirme/jitter/ýitgiler, portlaryň bölekleýin döwülmegi, hyzmatlaryň/PSP-leriň arasyndaky "ýapylýan" baglanyşyk.
Kompýut/düwünler: prosesleriň öldürilmegi, CPU-nyň aşa gyzmagy, faýl deskriptorlarynyň tükenmegi, baglanyşyklaryň dar howuzlary.
Ammar we DB: diskleriň latency ösüşi, lag replikalary, bir çardagyň/lideriň durmagy, split-brain.
Garaşlylyk: daşarky API-leriň zaýalanmagy, üpjün edijileriň çäkleri, 5xx/429 partlamalar.
Üýtgeşmeleri dolandyrmak: şowsuz goýberiş, erbet fika baýdagy, partial rollout.
Perimetri: CDN pese gaçýar, DNS/Anycast drift, WAF/bot gorag şowsuzlygy.
Sebit/AZ: doly ýitgi ýa-da "bölekleýin" waka (birneme erbet we öňünden aýdyp bolmajak).

5) Gurallar we tehnikalar

Kubernetes: Chaos Mesh, Litmus, PowerfulSeal, kube-monkey.
Bulutlar: AWS Fault Injection Simulator (FIS), Bulutlaryň golaýyndaky Fault Domains.
Tor/proxy: Toxiproxy (TCP-zäher), tc/netem, iptables, Envoy fault (delay/abort), Istio fault injection.
Prosesler/düwünler: 'stress-ng', cgroups/CPU-throttle, disk fill.
Traffic-routing: GSLB/DNS weights, canary/blue-green Feylower-checking switches.

6) Ssenarileriň mysallary (Kubernetes)

6. 1 Delay/abort (Istio VirtualService)

yaml apiVersion: networking. istio. io/v1alpha3 kind: VirtualService metadata: { name: api-chaos }
spec:
hosts: ["api. internal"]
http:
- route: [{ destination: { host: api-svc } }]
fault:
delay: { percentage: { value: 5 }, fixedDelay: 500ms }
abort: { percentage: { value: 1 }, httpStatus: 503 }

Çaklama: müşderi wagtlary/retraýlary we CB p95 <300 ms we error-rate <0 saklar. 5%.

6. 2 Pod Kill (Chaos Mesh)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: PodChaos metadata: { name: kill-one-api }
spec:
action: pod-kill mode: one selector:
namespaces: ["prod"]
labelSelectors: { "app": "api" }
duration: "2m"

Gipoteza: deňagramlaşdyryjy we HPA p99> 20% ýokarlanmazdan bir nusganyň lossynyň öwezini dolýar.

6. 3 Tor bulam-bujarlygy (DB gijä galmak)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: NetworkChaos metadata: { name: db-latency }
spec:
action: delay mode: all selector: { namespaces: ["prod"], labelSelectors: {"app":"payments"} }
delay: { latency: "120ms", jitter: "30ms", correlation: "25" }
direction: to target:
selector: { namespaces: ["prod"], labelSelectors: {"role":"db"} }
mode: all duration: "5m"

Çaklama: howuzlar/wagtlar/kesh täsirini azaldar; p95 töleg SLO ≤ galar.

6. 4 Diski doldurmak

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: IOChaos metadata: { name: disk-fill-logs }
spec:
action: fill mode: one selector: { labelSelectors: {"app":"ingest"} }
volumePath: /var/log size: "2Gi"
duration: "10m"

Gipoteza: bloglaryň/kwotalaryň/alertleriň aýlanmagy marşrutlar zaýalanýança işlär.

7) Daşarky synaglar K8s

7. 1 Toxiproxy (lokal/integrasiýa)

bash toxiproxy-cli create psp --listen 127. 0. 0. 1:9999 --upstream psp. prod:443 toxiproxy-cli toxic add psp -t latency -a latency=200 -a jitter=50 toxiproxy-cli toxic add psp -t timeout -a timeout=1000

7. 2 Envoy HTTP fault (perimetri/mesh)

yaml fault:
delay: { fixed_delay: 0. 3s, percentage: { numerator: 10, denominator: HUNDRED } }
abort: { http_status: 503, percentage: { numerator: 1, denominator: HUNDRED } }

7. 3 AWS FIS (ideýanyň mysaly)

Auto Scaling Group-da N% EC2 "öldürmek" synagy, EBS-latency emeli usulda götermek, bir AZ-da NAT-GW-ni öçürmek.
CloudWatch SLO metrikleri boýunça gurlan durmak ölçegleri.

8) Bulam-bujarlyk döwründe syn ediliş ölçegleri

SLO/SLI: fraction of good requests, p95/p99, burn-rate.
Kritiki ugurlar boýunça RED-model (Rate, Errors, Duration).
Howuzlar: birikmä garaşmak p95, utilization.
BD: lag replika, locks, driff p95 soraglar.
Tor: retransmits, RTT, dscp/ecn özüni alyp barşy.
Biznes-SLI: amallaryň üstünligi (goýumlar/çekaut), yzyna gaýtarmalar/ýalňyşlyklar%.
Yzarlamak: saýlama söwdalar (exemplars), goýberiş-düşündirişleriň baglanyşygy.

9) SLO/Error-budget bilen integrasiýa

Hata býudjetiniň çäginde synaglary meýilleşdiriň: bulam-bujarlyk çärýekleýin maksatlary "bozmaly" däldir.
Burn-rate alertleri awtomatiki öldüriji switch hökmünde.
Hasabat: "Näçe býudjet ýakyldy", "steady-state".

10) Game-days (maşklar)

Ssenarisi: gysga rowaýat (mysal üçin "sebit-Gündogar ýitdi"), sanjym ädimleri, SLO maksatlary, rollary, wagty.
Baha bermek: RTO/RPO hakyky, aragatnaşyklaryň hili, runbook düzgünliligi.
Retro: eýeler we möhletler bilen gowulaşmalaryň sanawy, resminamalary/daşbordlary täzelemek.

11) Awtomatlaşdyryş we CI/CD

Smoke-chaos: Her çykarylanda staging boýunça gysga synaglar (mysal üçin, 1 pod-kill + bir ugur üçin 200 ms delay).
Gijeki/hepdelik: has agyr ssenariýalar (5-15 minut) hasabat bilen.
Mahabat oýunlary: p95/ýalňyşlyklar> canary bosagasy - awto-yzyna.
Synag katalogy bilen ammar (YAML + runbook + SLO-thresholds).

12) Anti-patternler

"Perilsiz döwmek": stop-kriteriýalar ýok, bu hadysanyň töwekgelçiligi ýok.
Amalyň ýerine bir gezeklik hereket.
Stady-state bolmasa bulam-bujarlyk: Üstünlik/şowsuzlyk hasaplamagyň nämedigi belli däl.
Gijikdirme sanjymynda artykmaç retralar → öz-DDoS.
Biznes-SLI-ni äsgermezlik etmek: tölegleriň/sargytlaryň şowsuzlygynda "tehniki" üstünlikler.
Post-derňewiň we gowulaşmalaryň eýeleriniň ýoklugy.

13) Giriş çek-sanawy (0-45 gün)

0-10 gün

Stady-state SLI (ulanyjy + iş).
Guraly saýla (Chaos Mesh/Litmus/Toxiproxy/FIS).
Relsleri suratlandyryň: blast radius, stop-kriteriýalar, penjireler, rollar.

11-25 gün

Ilkinji synaglary başla: pod-kill, kritiki akymda 100-200 ms delay, paketleriň 1% -ini bölmek.
Burn-rate alertlerini sazla, kill-switch-i stop-kriteriýalara bagla.
Ilkinji oýny geçiriň, retro we fiksleri ýygnaň.

26-45 gün

AZ/garaşlylyk derejesini goşuň (daşarky PSP, BD-lag).
Staging-de gijeki bulam-bujarlygy awtomatlaşdyrmak; "möwsümleýin" ssenariýalary (pikleri) taýýarlamak.
Synag katalogy we/SRE gollanmasy üçin yzygiderli hasabatlar.

14) Kämillik ölçegleri

Möhüm ugurlaryň 80% ≥ beýan edilen synaglar we stady-state metrikleri bar.
Awto kill-switch p99/error-rate çäklerinden ýokary bolanda işleýär.
Çärýekde - AZ/sebit derejesindäki game-day; ≥ 1 gezek/aý - garaşlylygyň maksatly ssenarisi.
MTTR gowulaşmalar siklinden soň azalýar, "release" hadysasy azalýar.
Hakyky şowsuzlyklarda "garaşylmadyk" pese gaçmagyň paýy → nola çalyşýar.
Daşbordlar KPI (burn-rate, dikeldiş wagty, üstünlikli DR-hereketleriň paýy) hökmünde "durnuklylygy" görkezýär.

15) Guardrails we stop triggerleriniň mysallary

Stop: 'http _ req _ failed> 1%' 3 minut, 'p99> 1000 ms' 3 penjireler, 'deposit _ success <99. 5%`.
Blast radiusynyň peselmegi: manifestiň awto-yza gaýdyp gelmegi, GSLB agramynyň gaýdyp gelmegi, fol-sanjymlaryň öçürilmegi.
"Stop" buýrugy: sebäpleri ýazmak bilen bir düwme/skript.

16) Medeniýet we prosesler

Bulam-bujarlyk SRE ritminiň bir bölegi, "aşa" däl.
Aç-açan hasabatlar, gowşaklyklaryň ykrar edilmegi, düzediji hereketler.
On-call okuwy, müşderiler/hyzmatdaşlar bilen aragatnaşyklaryň simulýasiýasy.
SLA/SLO we býudjetler bilen baglanyşyk: bulam-bujarlyk ygtybarlylygy pese gaçyrmaly däl-de, ýokarlandyrmalydyr.

17) Netijenama

"Chaos Engineering" "dokuz umydy" subut edilip bilinjek durnuklylyga öwürýär. Stady-state düzüň, relsleri goýuň, kiçi we gözegçilikde saklanýanlary döwüň, SLO we Business SLI synlaň, gowulaşmalary düzüň we awtomatlaşdyryň. Şonda hakyky şowsuzlyklar dolandyrylýan wakalara öwrüler: öňünden aýdyp boljak RTO, error-budget goragy we toparyň howsala düşmezden hereket etmäge taýýarlygy.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.