GH GambleHub

Chaos Engineering: системалардын туруктуулугу

Chaos Engineering: системалардын туруктуулугу

1) Эмне үчүн башаламандык-инженердик

Максаты - прод-архитектуранын туруктуулугун сөздөр жана диаграммалар менен эмес, эксперименттер менен далилдөө. Биз атайылап төмөнкүлөр үчүн көзөмөлдөнгөн мүчүлүштүктөрдү жаратабыз:
  • системанын жүрүм-туруму жөнүндө гипотезаларды текшерүү жана SLO тастыктоо;
  • жашыруун SPOF, туура эмес убакыт/retrains, каскаддык таасирлерин аныктоо;
  • командаларды үйрөтүү: оюн-күн, runbook's иштеп чыгуу, байланыш;
  • маданиятты түзүү "демейки туруктуулук" эмес, "жакшы үмүт".

Маанилүү: Chaos Engineering ≠ "баарын сындыруу". Бул илимий ыкма: steady-state → гипотеза → эксперимент → жыйынтык → жакшыртуу.

2) Эксперименттин негизги цикли

1. Steady-state (негизги сызык): кайсы SLI туруктуу? (мисалы, ийгилик ≤ 500 ms 99. 95%).
2. Гипотеза: бир АЗ p95 жоготуу <10% өсөт, ал эми жеткиликтүүлүгү ≥ 99. 9%.
3. Эксперимент: чектелген blast radius жана stop критерийлери менен пландаштырылган folt.
4. Байкоо: метриктер/соода/логи, бурн-rate SLO, бизнес-SLI (мисалы, ийгиликтүү депозиттер).
5. Жакшыртуулар: табылгаларды оңдоп, убакытты/лимиттерди/маршрутту өзгөртүп, runbook жаңыртабыз.
6. Automation/регресс: күн тартибинде кайталап, CI/CD жана оюн-күн календарлары кошуу.

3) Коопсуздук тосмо (safety first)

Blast radius: тар менен башталат - бир pod/бийлик/маршрут/namespace.
Guardrails: SLO burn-rate боюнча алерталар (тез/жай), retray чеги, QPS чектөө, окуя бюджети.
Stop-критерийлери: "эгерде error-rate> X% же p99> Y ms N мүнөт - заматта stop жана rollback".
Терезелер: on-call жумуш сааттары, эскертилген стейкхолдерлер, тоңдурулган релиздер.
Байланыш: IC/Tech lead/Comms, так канал (War-room), билдирүү шаблон.

4) Ийгиликсиз класстары жана гипотеза идеялары

Тармак: кечигүү/життер/жоготуулар, порттордун жарым-жартылай кыйроо, кызматтардын/PSP ортосундагы "флапинг" байланыш.
Compute/түйүндөр: өлтүрүү жараяндар, CPU ысып, файлдык дескрипторлордун түгөнүшү, тар байланыш пулдары.
Сактоо жана DD: өсүш latency дисктер, lag реплика, бир чард/лидер токтотуу, split-brain.
Көз карандылык: тышкы API деградациясы, провайдерлердин лимиттери, 5xx/429 жарылуулар.
өзгөрүүлөрдү башкаруу: ийгиликсиз бошотуу, жаман Ficha желек, partial rollout.
Периметри: CDN начарлап, DNS/Anycast drift, WAF/бот коргоо ката.
Аймак/AZ: толук жоготуу же "жарым-жартылай" окуя (бир аз жаман жана күтүүсүз).

5) Аспаптар жана техникалар

Kubernetes: Chaos Mesh, Litmus, PowerfulSeal, kube-monkey.
Булуттар: AWS Fault Injection Simulator (FIS), булуттардын жанында Fault Domains.
Тармак/прокси: Toxiproxy (TCP-уу), tc/netem, iptables, Envoy fault (delay/abort), Istio fault injection.
Процесстер/түйүндөр: 'stress-ng', cgroups/CPU-throttle, disk fill.
Traffic багыттоо: GSLB/DNS weights, canary/blue-green Feylover текшерүү үчүн которуу.

6) Сценарий мисалдары (Kubernetes)

6. 1 Delay/аборт маршруту боюнча (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 }

Гипотеза: кардар таймауттар/retrailer жана CB p95 <300 ms жана error-rate <0 кармап турат. 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"

Гипотеза: Балансировщик жана HPA p99> 20% өсүү жок бир нускада жоготуу ордун толтурат.

6. 3 Тармактык башаламандык (DD кечигүү)

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"

Гипотеза: пулдар/таймауттар/кэш таасирин азайтат; p95 төлөмдөр SLO ≤ калат.

6. 4 диск толтуруу

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"

Гипотеза: Логдордун/квоталардын/алерттердин айланышы маршруттардын деградациясына чейин иштейт.

7) эксперименттер K8s

7. 1 Toxiproxy (жергиликтүү/интеграция)

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 (периметри/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 (идея мисал)

Эксперимент "өлтүрүү" N% EC2 Auto Scaling Group, жасалма EBS-latency жогорулатуу, бир AZ боюнча NAT-GW өчүрүү.
CloudWatch SLO-метриктер боюнча орнотулган токтоо критерийлери.

8) башаламандык учурунда байкоо параметрлери

SLO/SLI: fraction of good requests, p95/p99, burn-rate.
RED-модель критикалык жолдор боюнча (Rate, Errors, Duration).
Pool: p95 байланыш күтүү, утилизация.
BD: lag реплика, locks, p95 суроолор.
Тармак: retransmits, RTT, dscp/ecn жүрүм-туруму.
Бизнес-SLI: транзакциялардын ийгилиги (депозиттер/чекаут),% кайтарымдар/каталар.
Trace: тандалма соода (exemplars), релиз-аннотацияларды корреляциялоо.

9) SLO/Error-budget менен бириктирүү

ката бюджеттин алкагында эксперименттерди пландаштырып: башаламандык чейректик максаттарды "бузууга" тийиш эмес.
Burn-rate автоматтык kill-switch катары алерт.
Отчеттуулук: "канча бюджет өрттөлгөн", "кандай девиация steady-state".

10) Game-days (машыгуу)

Сценарий: кыскача уламыш (мисалы, "аймак-Чыгыш жоголгон"), инъекция кадамдары, SLO максаттары, ролдору, убактысы.
Баалоо: RTO/RPO иш жүзүндө, сапаттуу байланыш, туура runbook.
Retro: ээлери жана мөөнөттөрү менен жакшыртуулардын тизмеси, документтерди/дашборддорду жаңыртуу.

11) Automation жана CI/CD

Smoke-chaos: ар бир чыгарылышында staging боюнча кыска тесттер (мисалы, 1 pod-kill + 200 ms бир каттам боюнча delay).
Түнкү/жумалык: оор жагдайлар (5-15 мин) отчет менен.
Промо-Гейтс: p95/каталар> canary босого болсо - auto артка.
тажрыйба каталогу менен сактоо (YAML + runbook + SLO-thresholds).

12) Анти-үлгүлөрү

"Таянычсыз прод сындыруу": эч кандай stop-критерийлер, жок on-call → чыныгы окуя коркунучу.
Процесстин ордуна бир жолку акция.
Steady-state жок башаламандык: ийгилик/ийгиликсиздик деп эсептей турган нерсе түшүнүксүз.
Ашыкча Retray → өзүн-өзү DDoS Injection кечигүү.
Бизнес-SLI четке кагуу: төлөмдөр/буйрутмалар аткарылбай калганда "техникалык" ийгиликтер.
пост-талдоо жана жакшыртуу ээлери жоктугу.

13) киргизүү чек-тизмеси (0-45 күн)

0-10 күн

steady-state SLI аныктоо (колдонуучу + бизнес).
Тандоо куралы (Chaos Mesh/Litmus/Toxiproxy/FIS).
тосмолорду сүрөттөө: blast radius, stop-критерийлер, терезелер, ролдору.

11-25 күн

Биринчи эксперименттерди баштоо: pod-kill, 100-200 ms delay боюнча критикалык агымы, drop 1% пакеттер.
burn-rate alerty орнотуу, stop-критерийлер менен kill-switch байланыштыруу.
Биринчи оюн-күнүн өткөрүү, ретро жана фикстер чогултуу.

26-45 күн

АЗ/көз карандылык деңгээлиндеги сценарийлерди кошуу (тышкы PSP, BD-lag).
staging боюнча түнкү башаламандыкты автоматташтыруу; "сезондук" сценарийлерди (чокуларды) даярдоо.
Колдонмо/SRE үчүн эксперименттер каталогу жана үзгүлтүксүз отчеттор.

14) Жетилүү метрикасы

≥ 80% критикалык маршруттардын сүрөттөлгөн эксперименттер жана туруктуу мамлекеттик метрика бар.
Auto kill-switch p99/error-rate чегинен ашкан учурда иштейт.
Чейрек сайын - AZ/аймак деңгээлиндеги game-day; ≥ 1 жолу/ай - көз карандылыктын максаттуу сценарийи.
MTTR өркүндөтүү айлампасы кийин төмөндөйт, корреляция "релиздик окуя" азаят.
Чыныгы каталар учурунда "күтүүсүз" түшүүлөрдүн үлүшү → нөлгө умтулат.
Дашборддор KPI катары "туруктуулукту" көрсөтөт (burn-rate, калыбына келтирүү убактысы, ийгиликтүү DR иш-аракеттердин үлүшү).

15) guardrails жана триггер stop мисалдар

Stop: 'http _ req _ failed> 1%' 3 мүнөт, 'p99> 1000 ms' 3 терезелер, 'deposit _ success <99. 5%`.
Blast radius кыскартуу: auto-артка манифест, GSLB таразасын кайтаруу, fault-инъекцияларды өчүрүү.
Команда stop: себептери логин менен бир баскычы/скрипт.

16) Маданият жана процесстер

Башаламандык - бул "экстремалдык" эмес, SRE ритминин бир бөлүгү.
Ачык отчеттор, алсыздыктарды таануу, оңдоочу аракеттер.
On-call окутуу, кардарлар/өнөктөштөр менен байланыш симуляциялоо.
SLA/SLO жана бюджеттер менен байланыш: башаламандык ишенимдүүлүктү бузууга эмес, жогорулатуу керек.

17) Корутунду

Chaos Engineering далилденген туруктуулукка "тогуз үмүт" бурат. Туруктуу статусту формулировкалоо, тосмолорду коюу, кичине жана башкарылуучу, SLO жана бизнес-SLIди байкоо, оңдоп-түзөө жана жакшыртууларды автоматташтыруу. Андан кийин реалдуу каталар башкарылуучу иш-чаралар болуп калат: алдын ала RTO, корголгон error-budget жана команда паника жок иш-аракет кылууга даяр.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.