GH GambleHub

Chaos Engineering

1) Հիմնական սկզբունքները

Steady State-ը որպես սկզբնական վարկած։ Պարզ է նորմը (օրինակ ՝ p95 <200 ms, error rate <0։ 3%, կրիտիկական ֆլոուի հաջողությունը> 99։ 5%).

Մեկուսացված ձեռնարկություններ։ Հնարավորության դեպքում փոխեք մեկ գործոն մեկ անգամ 'էֆեկտը և բարելավումը կապելու համար։

Աստիճանությունը։ Մենք սկսում ենք փոքր ամպլիտուդից ապահով միջավայրում ընդարձակել կայունությունը և ինտենսիվությունը։

Guardrails. Ակնհայտ stop պայմանները SLO/alertam/210 սխալներով։

Կրկնությունը։ Փորձը պետք է մանրամասն վերարտադրվի (ջութակներ/մանիֆեստներ/IaC)։

Էթիկան և անվտանգությունը։ Ռիսկի փորձերում իրական անձնական տվյալներ և ֆինանսական գործարքներ չկան։

2) Ի՞ նչ է «կայուն վիճակը»

Steady State-ը դիտարկված մետրի հավաքածու է, որը նկարագրում է օգտագործողի և բիզնեսի ինվարանտների արժեքը

P50/p95/p99 հիմնական էնդպոինտները։

Հաջողակ գործարքների մասնաբաժինը և կրիտիկական ճանապարհների փոխակերպումը։

Error rate, timauts, «shed» հարցումների մասնաբաժինը (կրճատվել է հագեցվածությամբ)։

Ինքնազարգացման արագությունը (MTTR), գետերի դիմադրությունը (առանց փոթորիկների)։

Տիրույթի ինվարիատորները '«մինուսների բացակայությունը հավասարակշռության մեջ», մի անգամ կատարված վճարումները, հաշվետվական օրվա կոնսիստենտը և այլն։

3) Միգրացիաների կատալոգը (որը «կոտրում»)

Ցանցը 'ուշացում, ջիտթեր, կորուստ/կրկնօրինակներ, աշխատանքային կարողությունների սահմանափակում, TIM-բեկորներ, RF-flapping։

Հաշվարկները 'CPU ծանրաբեռնվածությունը, հիշողության ճնշումը/GC, ձայնագրիչների սպառումը, clock skew-ը։

Պահեստ 'բարձր p95 I/O, ENOSPC, առաջնորդի/կրկնօրինակի մերժումը, split-brain, ձգված fsync։

Կախվածությունը ՝ 5xx/429, «դանդաղ հաջողությունը», արտաքին API դեգրադացիան, rate-limit։

Տվյալները ՝ կրկնակի/բաց հաղորդագրությունների, out-of-order, «կեղտոտ» ձայնագրություններ, տարբերակների հակամարտություն։

Վիրահատությունները 'ձախողված թողարկումը/www.org, ֆիչի դրոշը, որն ավարտեց վկայականը, ստեղնաշարի լուծումը։

Մարդիկ և գործընթացները 'անհասանելիությունը, ձեռքի ապրուվը, սխալ runbook-ը։

4) Փորձի դիզայն (ձևանմուշ)

1. Հիպոթեզը ․ «+ 300 մգ արժութային ծառայությանը p99 հիմնական API <450 ms, բացվում է Breaker, տալիս է stale պատասխանը 15 րոպե առաջ»։

2. Միգրացիան 'մերժման պրոֆիլը (տիպ/ամպլիտուդա/տևողություն) և 108։

3. Մետրիկները/լոգ-թեգերը 'մակնշումը' chaos։ experiment_id`, `phase=inject|recover`.

4. Guardrails: abium 'error _ rate> 2% կամ p99> SLA 242 ավելի քան 1 րոպե։

5. Արդյունքները/եզրակացությունը 'դիտարկումների, ուղիների, բարելավումների, աշխատանքի պլանի և կրկնվող պրոթոնի ցանկը։

5) Դիտարկումը հետևյալն է

Թրեյսինգ 'հարցման ուղին կախվածության միջոցով։ դեգրադացիայի հատվածները նշված են։

Ռեսուրսների չափումները ՝ CPU, heap/GC, FD, սկավառակի IOPS/lat, ցանցային bandwidth, հերթերի խորությունը։

Բիզնես մետր 'փոխակերպում/վիրահատության հաջողությունը, փոխհատուցված գործարքների մասը։

Իրադարձությունների լոգները 'բացահայտումը/ռուսական բրեյքերները, ռետերանները և նրանց բյուջեն, BD առաջնորդի անցումը։

Փորձի վահանակ '108-dashbord' guardrails և «կարմիր կոճակ» աբորտ։

6) Guardrails և անվտանգություն

Տեխնիկական 'վերևի սահմանները error rate/latency, հաջողակ վիրահատությունների մասնիկի նվազումը, DLQ աճը։

Կազմակերպական 'ժամանակի պատուհանը, որը ներգրավված է on-call, «մեկ գոտի' մեկ փորձ» սկզբունքը։

Տվյալները/կոմպլենսը 'միայն սինթետիկ կամ անանուն հավաքածուներ։ փորձարկումների արգելքը, որոնք հանգեցնում են կարգավորիչների խախտմանը։

Արձագանք ՝ պատրաստի կարգը rollback/wwww.ain։

7) Կայունության պատրանքները, որոնք պետք է դրսևորվեն

Թայմաութ բյուջեները և ջիթերի ռետրան (առանց փոթորիկների)։

Circuit Breaker-ը կիսագնդի (half-open) և էքսպոնենցիալ վերականգնմամբ։

Bulkheads: Պուլերի մեկուսացումը քննադատության վրա (վճարումները vs վերլուծություն)։

Backpressure-ը և rate-limit-ը 'ցածր գերակայության կանխատեսելի խցիկ։

Քեշը coalescing-ից, պաշտպանությունը «փոթորիկներից»։

Կողմնակի էֆեկտների և սագայի համադրելիությունը փոխհատուցող գործողությունների հետ։

Քվորումները, ֆեյլովերը և Անտի Էնտրոպիան տվյալների վերականգնելու համար։

8) Կղզիների (սկետչիի) օրինակներ

8. 1 Պղնձի կախվածությունը (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 BD առաջնորդի կորուստ

Միգրացիան 'առաջնորդի կանգառը/հարկադիր վերընտրումը։

Սպասումը 'ձայնագրությունների արգելք, kvorum կարդալը, WAL/Disbox պահպանումը, վերարտադրության վերականգնումը, կրկնակի ձայնագրման բացակայությունը։

8. 3 ENOSPC լոգ-2019

Միգրացիա 'սկավառակի լրացումը մինչև 95-100 տոկոսը։

Սպասումը 'լոգարանների արտակարգ լուծարումը, քննադատական ամսագրերի պահպանումը, ոչ ռիթմիկ փուչիկների անջատումը, ալերտը և մեքենայական-արհեստավորությունը։

8. 4 Burst-71 + շեյդինգը

Միգրացիա: 353 RPS հինգ րոպե տաք էնդպոինտով։

Սպասումը 'ցածր գերակայությունը, կայուն p95 «միջուկը», գետերի կասկադի բացակայությունը։

9) CI/CD ավտոմատիզացիան

Chaos-smoke-ը յուրաքանչյուր թողարկման համար staide-ում (կարճ ներարկումներ անվտանգ ամպլիտուդներում)։

Գիշերային պրոգրեսները փորձարկումների վրա (մատրիցա ծառայությունները բացատրում են ձախողումների տեսակները)։

Խաղացողները 'թողարկումը արգելափակված է, եթե «դիմադրությունը ցածր է շեմից» (օրինակ, հաջողակ fallback <95%)։

Արտեֆակտներ ՝ զեկույց, թրեյսներ, CPU/heap ֆլեյմոգրաֆներ, նետաձիգներ և եզրեր։

10) Գեյմ օրեր (Game Days)

Ռուսական թիմային ուսուցումները «կենդանի» սցենարների հետ

Դերերը 'փորձի հաղորդավարը, դիտորդը, արձագանքի օպերատորը, բիզնեսի ներկայացուցիչ։

Սցենարները 'քեշի քայքայումը, AZ/feilover տարածաշրջանը, «վատ թողարկումը», արտաքին պրովայդերի անհասանելիությունը։

Արդյունքները 'հայտնաբերված օրինագծերը runbook-ում, alerts բարելավում, SLO-ի և ռուսական գետերի։

11) Հաոսը տվյալների, իրադարձությունների և ML-ի համար

Տվյալների հոսքերը 'կրկնօրինակներ, բացթողումներ, out-of-order, ձգձգումներ։ Idempotent կոնսուլների և DLQ ռազմավարության ստուգում։

Ֆորումը 'ինդեքսների քայքայումը, hot-part.ru, բլոկների հակամարտությունը, լագայի տակ կրկնապատկումը։

ML 'Fich Store-ի ուշացումը, baseline-մոդելը, մուտքային տվյալների որակի վատացումը (drift), համակարգը պետք է «փափուկ փակվի», ոչ թե ընկնի։

12) Anti-patterna

Քաոսը առանց դիտարկման 'դուք կույր եք, եզրակացությունները սպեկուլյատիվ են։

Միգրացիաները անմիջապես վաճառում են առանց սթեյջի և գվարդիական ռեյլների։

«Մի մեծ փորձ» անմիջապես, պարզ չէ, թե ինչ է աշխատել։

Ոչ համակարգային քաոս ակցիաները առանց վարկածի և ռետեսից հետո։

Միայն ենթակառուցվածքի վրա կենտրոնացումը մոռացված է բիզնեսի ինվարանտները։

Անտեսելով մարդկանց/գործընթացները 'ալտերտերը, on-call, runbook-ը համակարգի մի մասն է։

13) Պրակտիկայի հասունությունը (մոդել)

1. Ad-hoc 'տարբեր միգրացիաներ տեղական։

2. Սթեյջ քաոսը 'կոդավորման կատալոգը, կրկնվող պրոգոնները, դաշբորդները։

3. Ռելս քաոսը 'smoke-haos յուրաքանչյուր թողարկման, գեյթի, հաշվետվությունների մեջ։

4. Prod-քաոսը սահմանափակումներով 'փոքր կղզիներ, խիստ guardrails, պատրաստ արձագանք։

5. Շարունակական կայունություն 'ավտոմեքենաների փորձարկումներ, SLO կառավարում, բարելավումներ որպես աշխատանքի հոսք։

14) Ինտեգրումը ճարտարապետական պրակտիկայի հետ

Կայունության փորձարկումը 'քաոս փորձարկումները ավելացնում են fox-ներարկումը և դեգրադացիայի սցենարները։

Բեռի փորձարկումը 'համակցված փորձարկումները «07 + մերժումը» բացահայտում են կասկադները և ռետրերի փոթորիկը։

Policy as Code/RBAC/ABAC: guardrails, արձագանքման քայլերը և սահմանները նախագծեք որպես քաղաքականություն։

Համաձայնությունների կառավարումը/գաղտնիությունը 'մի թույլ մի տվեք փորձեր, որոնք խախտում են տվյալների վերամշակման ռեժիմը։

Geo-ճարտարապետություն 'տարածաշրջանի ֆեյլերի քաոս ստուգում և տվյալների տեղադրում։

15) Մինի բաղադրատոմսեր (կեղծ)

Բրեյկեր + դեգրադացիա


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 + sheding


if cpu. load() > 0. 85 or queue. depth() > HIGH:
if req. priority < HIGH: return 503_SHED limiter. acquire()

Idempotent կողմնակի ազդեցություն


key = "payout:"+external_id if kv. exists(key): return kv. get(key)
res = side_effect()
kv. put(key, res, ttl=30d)
return res

16) Ճարտարապետի չեկի թերթիկը

1. Որոշե՞ լ են Steady State-ը և guardrails-ը։

2. Կա կոդավորման կատալոգ (ցանց/CPU/կախվածության/տվյալների/վիրահատության)։

3. Դիտարկումը ծածկում է ռեսուրսները, լատենտության պոչերը, բիզնեսի ինվարանտները։

4. Timauts/retrai/brekers/limiters/bulkheads ներառո՞ ւմ են նաև medrizums։

5. Eurunbook-ը և կարմիր կոճակը։

6. Գոյություն ունի քաոս-smoke սթեյջի և nightly-փորձարկումների մեջ։

7. Գրված են «անվտանգ» պատուհաններ և դերեր խաղային օրերին։

8. Փորձարկումները վերարտադրվում են (IaC/ջութակներ), արդյունքները տարբերակվում են։

9. Բարելավումները ամրագրված են առաջադրանքներով, կատարվում է։

10. Ծածկված են ներքևի և ML փոխակրիչները, ոչ միայն HTTP-ը։

Եզրակացություն

Chaos Engineering-ը «անսպասելի միջադեպերը» վերածում է կանխատեսելի սցենարների։ Կայունության վարկածը, վերահսկվող միգրացիաները, կոշտ guardrails-ը, հարուստ դիտողությունն ու ռետեստերի կարգապահությունը գործիքներ են, որոնք նվազեցնում են ածխաջրածինների ռիսկը և ավելացնում վստահությունը պլատֆորմի նկատմամբ։ Արդյունքում թիմը հասկանում է համակարգի սահմանները, կարող է էլեգանտորեն քայքայել և արագ վերադարձնել ծառայությունը օգտագործողի նույնիսկ ձախողումների պայմաններում։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։