GH GambleHub

Chaos Engineering: жүйелердің тұрақтылығы

Chaos Engineering: жүйелердің тұрақтылығы

1) Неліктен хаос-инженерия

Мақсаты - прод-сәулеттің орнықтылығын сөздермен және диаграммалармен емес, эксперименттермен дәлелдеу. Біз әдейі бақыланатын іркілістерді жасаймыз:
  • жүйенің мінез-құлқы туралы гипотезаларды тексеру және SLO валидациялау;
  • жасырын SPOF, қате таймауттар/ретрациялар, каскадты әсерлерді табу;
  • командаларды жаттықтыру: game-days, runbook's, коммуникация;
  • «жақсыға үміттенеміз» емес, «әдеттегі тұрақтылық» мәдениетін қалыптастыру.

Маңызды: Chaos Engineering «бәрін сындыруға» ≠. Бұл ғылыми әдіс: steady-state → гипотеза → эксперимент → қорытындылар → жақсарту.

2) Эксперименттің базалық циклі

1. Steady-state (базалық желі): қандай SLI тұрақты? (мысалы, табыс ≤ 500 мс 99. 95%).
2. Гипотеза: бір AZ p95 жоғалтқан кезде <10% өседі, ал қолжетімділік 99 ≥. 9%.
3. Эксперимент: шектеулі blast radius және stop-критерийлері бар жоспарланған фолт.
4. Бақылау: метриктер/трейстер/логи, burn-rate SLO, бизнес-SLI (мысалы, табысты депозиттер).
5. Жақсартулар: табыстарды тіркейміз, таймауттарды/лимиттерді/маршрутизацияны өзгертеміз, runbook жаңартамыз.
6. Автоматтандыру/регресс: кестеде қайталаймыз, CI/CD және game-days күнтізбелеріне қосамыз.

3) Қауіпсіздік қанаттары (safety first)

Blast radius: тар жолдан бастаймыз - бір pod/инстанс/маршрут/namespace.
Guardrails: SLO burn-rate (жылдам/баяу), ретра лимиттері, QPS шектеуі, инцидент бюджеті.
Stop-критерийлер: «егер error-rate> X% немесе p99> Y мс N минут - бірден stop және rollback».
Терезелер: on-call жұмыс сағаттары, ескертілген стейкхолдерлер, мұздатылған релиздер.
Коммуникация: IC/Tech lead/Comms, нақты арна (War-room), хабарламалар үлгісі.

4) Бас тарту кластары және гипотеза идеялары

Желі: кідіріс/джиттер/жоғалту, порттардың ішінара тармақталуы, сервистер/PSP арасындағы «жарқылдақ» байланыс.
Компьютер/тораптар: процестерді өлтіру, CPU қызып кету, файлдық дескрипторлардың таусылуы, қосылыстардың тар пулдары.
Қоймалар және БД: дискілердің latency өсуі, lag репликалары, бір шоқтың/көшбасшының тоқтауы, split-brain.
Тәуелділік: сыртқы API деградациясы, провайдерлердің лимиттері, 5xx/429 жарылыс.
Өзгерістерді басқару: сәтсіз релиз, жаман фича-жалау, partial rollout.
Периметр: CDN деградацияланады, DNS/Anycast дрифт, 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.
Трафик-бағыттау: GSLB/DNS weights, canary/blue-green фейловер-тексеру үшін ауыстырып қосу.

6) Сценарий үлгілері (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 }

Гипотеза: клиенттік таймауттар/ретраилер және CB p95 <300 мс және 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% өсімсіз бір дананың loss орнын толтырады.

6. 3 Желілік хаос (ДБ кідірісі)

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 (идея үлгісі)

Auto Scaling Group-та N% EC2 «өлтіру» тәжірибесі, EBS-latency-ді жасанды түрде көтеру, NAT-GW-ді бір AZ-да өшіру.
CloudWatch SLO-метриктер бойынша орнатылған тоқтату өлшемдері.

8) Хаос кезіндегі бақылау өлшемдері

SLO/SLI: fraction of good requests, p95/p99, burn-rate.
Критикалық бағыттар бойынша RED-модель (Rate, Errors, Duration).
Пулы: p95, utilization қосылысын күту.
БД: lag реплика, locks, дрейф p95 сұрау.
Желі: retransmits, RTT, dscp/ecn мінез-құлық.
Бизнес-SLI: транзакциялардың табысы (депозиттер/чекаут), қайтарымдар/қателер%.
Трассировка: таңдамалы трестер (exemplars), релиз-аннотацияларды корреляциялау.

9) SLO/Error-budget интеграциясы

Қателіктер бюджетінің шеңберінде эксперименттерді жоспарлаңыз: хаос тоқсандық мақсаттарды «бұзбауы» тиіс.
Burn-rate алерта автоматты kill-switch ретінде.
Есептілік: «қанша бюджетті өртеген», «қандай девиациялар steady-state».

10) Game-days (жаттығулар)

Сценарий: қысқаша аңыз (мысалы, «өңір-Шығыс жоғалды»), инъекция қадамдары, SLO мақсаттары, рөлдері, уақыты.
Бағалау: RTO/RPO нақты, коммуникация сапасы, runbook дұрыстығы.
Ретро: иелерімен және мерзімдерімен жақсартулар тізімі, құжаттаманы/дашбордтарды жаңарту.

11) Автоматтандыру және CI/CD

Smoke-chaos: әрбір релизде staging бойынша қысқа тесттер (мысалы, бір маршрутқа 1 pod-kill + 200 mс delay).
Түнгі/апталық: есеппен неғұрлым ауыр сценарийлер (5-15 мин).
Промо-гейттер: егер р95/қателер> canary табалдырығы - авто-кері қайту.
Эксперименттер каталогы бар репозиторийлер (YAML + runbook + SLO-thresholds).

12) Қарсы үлгілер

«Сүйенішсіз сынықтарды сындыру»: stop-критерийлер жоқ, on-call → нағыз оқыс оқиғаның қаупі жоқ.
Процестің орнына бір реттік акция.
steady-state жоқ хаос: табыс/сәтсіздік деп есептеген не түсініксіз.
Кідірістерді инъекциялау кезінде өздігінен DDoS артық ретраялары.
Бизнес-SLI елемеу: төлемдердің/тапсырыстардың сәтсіздігі кезіндегі «техникалық» табыстар.
Постталдаудың және жақсартулар иелерінің болмауы.

13) Енгізу чек-парағы (0-45 күн)

0-10 күн

steady-state SLI (пайдаланушы + бизнес).
Құралды таңдау (Chaos Mesh/Litmus/Toxiproxy/FIS).
Сүйеніштерді сипаттау: blast radius, stop-критерийлер, терезелер, рөлдер.

11-25 күн

Алғашқы эксперименттерді іске қосу: pod-kill, 100-200 мс delay критикалық апстримге, drop 1% пакеттер.
burn-rate алаңдарын баптау, kill-switch-ті stop-критерийлерімен байланыстыру.
Бірінші game-day өткізу, ретро және фикстер жинау.

26-45 күн

AZ/тәуелділік деңгейін қосу (сыртқы PSP, БД-lag).
staging-те nightly-хаосты автоматтандыру; маусымдық сценарийлер (шыңдар) дайындау.
/ SRE нұсқауы үшін эксперименттер каталогы және тұрақты есептер.

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

Сыни бағыттардың 80% ≥ сипатталған эксперименттер мен steady-state метрикасы бар.
Авто 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 мс' 3 терезе, 'deposit _ success <99. 5%`.
Blast radius төмендеуі: манифестің авто-кері қайтуы, GSLB таразыларының қайтуы, fault-инъекцияларды ажырату.
Stop пәрмені: себептері жазылған бір түймешік/скрипт.

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

Хаос - бұл «экстрим» емес, SRE ырғағының бір бөлігі.
Ашық есептер, осалдықтарды тану, түзетуші әрекеттер.
On-call оқыту, клиенттермен/әріптестермен коммуникацияларды симуляциялау.
SLA/SLO-мен және бюджеттермен байланыс: хаос сенімділікті бұзбай, көтеруі тиіс.

17) Қорытынды

Chaos Engineering «тоғызға үміт» дәлелденетін тұрақтылыққа айналдырады. steady-state формуласын жасаңыз, сүйеніштерді қойыңыз, шағын және бақыланатын бөлшектерді сындырыңыз, SLO және бизнес-SLI қадағалаңыз, жақсартуларды белгілеңіз және автоматтандырыңыз. Сонда нақты іркілістер басқарылатын оқиғаларға айналады: болжамды RTO, қорғалған error-budget және команданың үрей тудырмай әрекет етуге дайындығы.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.