GH GambleHub

Durnuklylygy barlamak

1) Esasy düşünjeler we maksatlar

Ygtybarlylyk (reliability) - iş ukybynyň ähtimallygy; durnuklylyk (resilience) - şowsuzlykdan soň we soň özüni alyp barşy.
SLO/nädogry býudjet: zaýalanmagyň "kabul ederlikli" ölçegleri.
Stady-state hypothesis: durnukly metriklere resmi garaşmak (mysal üçin, p95 <200 ms, error rate <0. 5%). Eger gipoteza saklanylsa, synag üstünlikli hasaplanýar.
Şowsuzlyklaryň görnüşleri: tor (gizlinlik, ýitgiler/jübütler, arakesmeler), hasaplaýyş (CPU, ýat), storij (I/O, diskiň tükenmegi), garaşlylyk (5xx, timeouts, rate-limit), logiki (bölekleýin hadysalar, "haýal pese gaçmak"), operasiýa (goýberiş)), "garaňky" (split-brain, sagat çalşygy).

2) Durnuklylyk piramidasy

1. Mantykdaky şowsuzlyklaryň unit-synaglary (retralar, idempotentlik, taýmautlar).
2. Fault-inject adapterleri bolan komponentler (Testcontainers/tc-netem).
3. Ulgam/DB/keş we real-world profilleri bilen integrasiýa/ulgam.
4. Runbook-lar boýunça pre-prod-da (soň bolsa prod-da çäkli) bulam-bujarlyk synaglary.
5. Oýun-deý - toparyň ssenariý maşklary (adamlar + gurallar).

3) Esasy hökmünde syn etmek

SLI: gizlinlik p50/p95/p99, error rate, saturation (CPU/heap/FD/IOPS), drop/timeout, queue depth.
Yşyklandyryş: ret edilen "dar ýerleri" gözlemek üçin.
Semantik durnuklylyk metrikleri: üstünlikli graceful-degrade paýy, shed-haýyşlaryň paýy, öz-özüni dikeltmegiň tizligi (MTTR).
Synaglaryň belligi: 'chaos. experiment_id', 'phase = inject/recover'.

4) Näsazlyklaryň sanjym katalogy (faults)

Tor: gijikdirme/jitter, ýitgi/dublikat/reordering, geçiriş ukybynyň çäklendirilmegi, paket "tupanlary", TLS-arakesmeler.
Host: CPU çäklendirmesi, syzmak/ýat çäkleri, GC arakesmeleri, deskriptorlaryň tükenmegi, "clock skew".
Ammar: gizlinligiň ýokarlanmagy, EROFS, ENOSPC, replikanyň pese gaçmagy, lideriň ýitmegi.
Endikler: 5xx/429, haýallamak, DNS flapping, köne şahadatnamalar, rate-limit, "bölekleýin jogaplar".
Maglumatlar: ýazgynyň zaýalanmagy, akymlardaky "deşikler", wakalaryň jübüti, wersiýalaryň gapma-garşylyklary.
Amallar: şowsuz goýberiş, ficha-baýdak, -süýşme, el ýalňyşlygy (simulýasiýa çäginde).

5) Durnuklylyk nusgalary (näme barlanmaly)

Her RPC-de jitter bilen retrauslar we wagtlar.
Circuit Breaker (açyş/ýarym açyş, eksponensial dikeldiş).
Bulkheads (möhüm domenler üçin howuzlaryň/nobatlaryň izolýasiýasy).
Load Shedding (doýanda pes derejeli soraglary taşlaýarys).
Backpressure (zynjyryň ýokarky signallary, paralellik çäkleri).
Idempotency ("zyýanly täsirlerde" idempotentlik açarlary).
Çeşmäniň pese gaçmagy bilen baglanyşykly gatlaklar.
Graceful Degradation.
Timeout-budget (jaňlar zynjyry boýunça umumy wagt býudjeti).
Atom/kompensasiýa (Saga/Outbox/Transactional Inbox).
Kworumlar we köpeltmek (R/W kworumlar, elýeterlilik üçin yzygiderliligiň pese gaçmagy).
Anti-entropy/reple (wakalaryň "deşiklerinde" dikeldiş).

6) Sanjym we garaşmak reseptleri (psevdokod)

Jitter we breýker bilen retraý


for attempt in 1..N:
if breaker. open(): return fallback()
res = call(dep, timeout = base 0. 8)
if res. ok: return res sleep(exp_backoff(attempt) jitter(0. 5..1. 5))
if attempt == N: breaker. trip()
return fallback()

Sheiding & Backpresher


if queue. depth() > HIGH          cpu. load() > 0. 85:
if request. priority < HIGH: return 503_SHED limiter. acquire () # constrain concurrency

Idempotentlik


key = hash("payout:"+external_id)
if store. exists(key): return store. get(key)
result = do_side_effect()
store. put(key, result, ttl=30d)
return result

7) Synaglar: ssenariýalar we çaklamalar

7. 1 "Haýal garaşlylyk"

Sanjym: daşarky API-e + 400 ms p95.
Garaşmak: wagt ≤ X%, braker açmak, fallback-jogaplar, p99 hyzmatyny <SLA saklamak, retralarda kaskadyň ýoklugy.

7. 2 "Nagt puluň bölekleýin ýitmegi"

Sanjym: Redis/Keş-şard düwünleriniň 50% şowsuzlygy.
Garaşmak: ulaldylan miss, ýöne çeşmä göçüp gitmezden (request coalescing/immutable TTL), awto-gyzdyrmak we dikeltmek.

7. 3 "DB-de Split-brain"

Sanjym: lideriň ýitmegi, replika geçmek.
Garaşmak: gysga möhletli deny ýazgylar, kworumdan okaýarys, maglumatlaryň ýitmezligi, Outbox habarlary ýitirmeýär.

7. 4 "ENOSPC/disk doldy"

Sanjym: 95-100% disk.
Garaşmak: bloglaryň gyssagly aýlanmagy, bloklanmaýan sahnalaryň şowsuzlygy, möhüm magazinesurnallaryň (WAL), alertleriň we awtolikwidleriň howpsuzlygy.

7. 5 "Traffigiň bursty"

Sanjym: gyzgyn × 3 RPS 10 minut.
Garaşmak: pes ileri tutulýan şeýding, "ýadro" ýollarynda durnukly p95, çäklerde nobatlaryň köpelmegi, DLQ tupanlarynyň ýoklugy.

7. 6 «Clock Skew»

Sanjym: nodanyň wagtynyň 2 minut −.
Garaşmak: Dogry TTL/gollar (leeway), retralarda monotoniki taýmerler, ýol berlen dreýfde walid bellikleri.

8) Synagyň gurşawy we howpsuzlygy

Önüme mümkin boldugyça ýakyn bolan pre-prod, sintetiki maglumatlar/topologiýa bilen başlaň.
Önümde - diňe gözegçilik edilýän penjireler, ficha-baýdaklar, ädimme-ädim amplituda, awto-yza gaýdyp gelmek, "gyzyl düwme".
Guardrails: RPS/ýalňyşlyklaryň çäkleri, SLO goragçylary, möhüm hadysalar wagtynda goýberilişleri petiklemek.
Runbook hökmanydyr: nädip aýlanmaly, kime jaň etmeli, nirä seretmeli.

9) Awtomatlaşdyryş we CI/CD

Synag katalogy kod hökmünde (YAML/DSL): maksatlar, sanjymlar, metrikler, bosagalar, yzyna gaýtarmagyň "düwmeleri".
Her goýberişde Smoke-chaos: stedge gysga sanjymlar (mysal üçin, 2 min + 200 ms garaşlylyk).
Matrisanyň gijeki geçişleri: şowsuzlyklaryň hyzmatlary × görnüşleri.
Eger durnuklylyk bosagadan pes bolsa (mysal üçin 'fallback coverage <95%' haýal garaşlylyk 'astynda).

10) Maglumatlar we yzygiderlilik

Öwezini dolmagy barlaň (Saga): bölekleýin ýerine ýetirilen amallar ylalaşylan ýagdaýa getirilmelidir.
Wakalaryň gaýtalanmalaryny/dublikatlaryny, out-of-order gowşurylyşyny, "deşikleri" we bellikleri synagdan geçiriň.
Şowsuzlyklardan soň domen üýtgemelerini barlaň: balans negatiw däl, amallar "ýapyşmaýar", çäklendirmeler bozulmaýar.

11) Anti-patternler

Diňe happy-path we ýük şowsuzlyksyz synagdan geçiriň.
Jittersiz retralar → zaýalanýan tupan.
Global wagt-býudjetiniň ýoklugy → kaskad wagtlary.
Ähli meseleler üçin bir howuz → izolýasiýa ýok (bulkheads).
"Tükeniksiz" nobatlar → gizlinligiň ýokarlanmagy/MOM.
Synaglaryň nol telemetri → "kör" bulam-bujarlyk tejribesi.
Jogapkär eýesiniň/çäklendirmesiz önümdäki bulam-bujarlygy.

12) Arhitektoryň çek-sanawy

1. Stady-state gipotezasy we SLO kesgitlenildi?
2. Her RPC-de wagtlar, jitter bilen retralar, brakerler barmy?
3. Satyldy bulkheads, limiterler, backpressure, load-shedding?
4. Keş çydamly: coalescing, keş tupanlaryndan goramak, gyzdyrmak?
5. Ters täsirler üçin Outbox/Saga, idempotent açarlary?
6. Kworumlar/replikasiýa/feýlower synag edildi?
7. CI/CD-de synaglaryň, gijeki bulam-bujarlygyň we geýtleriň katalogy barmy?
8. Metrikler/yzarlamalar synaglary belleýärler, daşbordlar barmy?
9. Runbook 'we "gyzyl düwme" taýýar, jogapkärçilik bellendimi?
10. Dev/SRE/Support bilen yzygiderli oýun?

13) Kiçi gurallar we ssenarileriň mysallary (YAML-eskizler)

Tor (tc/netem)

yaml experiment: add-latency target: svc:payments inject:
netem:
delay_ms: 300 jitter_ms: 50 loss: 2%
duration: 10m guardrails:
error_rate: "< 1%"
p95_latency: "< 400ms"

CPU/Heap

yaml inject:
cpu_burn: { cores: 2, duration: 5m }
heap_fill: { mb: 512 }

Garaşlylyk

yaml inject:
dependency:
name: currency-api mode: slow p95_add_ms: 500 fallback_expectation: "serve stale rates ≤ 15m old"

Netije

Durnuklylygy barlamak "bulam-bujarlyk bilen hile" däl-de, ulgamy şowsuzlyklar astynda öňünden aýdyp boljak düzgün. Anyk çaklamalar, telemetriýa, dolandyrylýan synaglaryň katalogy we arhitektura gurlan patternler (wagtlar, breýkerler, izolýasiýa, idempotentlik) potensial hadysalary gözegçilik edilýän ssenariýalara öwürýär. Topar goýberilişlere ynam gazanýar, ulanyjylar bolsa şowsuzlyk şertlerinde-de durnukly hyzmat alýarlar.

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.