GH GambleHub

Barqarorlikni sinash

1) Bazaviy tushunchalar va maqsadlar

Ishonchlilik (reliability) - ish qobiliyati ehtimoli; barqarorlik (resilience) - nosozlik paytida va undan keyin xulq-atvor.
SLO/noto’g "ri budjet: tanazzulning" maqbulligi "mezonlari.
Steady-state hypothesis: barqaror metrikalarni rasmiy kutish (masalan, p95 <200 ms, error rate <0. 5%). Agar gipoteza saqlanib qolsa, tajriba muvaffaqiyatli hisoblanadi.
Rad etish turlari: tarmoq (latentlik, yo’qotishlar/dubli, uzilishlar), hisoblash (CPU, xotira), storij (I/O, diskning tugashi), qaramlik (5xx, timeouts, rate-limit), mantiqiy (qisman hodisalar, «sekin degradatsiya»), operatsion (reliz, ), «qorong’u» (split-brain, soatlik smenalar).

2) Barqarorlik piramidasi

1. Mantiqni buzish (retryalar, idempotentlik, taymautlar) bo’yicha yunit-testlar.
2. Fault-inject adapterli komponentlar (Testcontainers/tc-netem).
3. Tarmoq/DB/keshlar va real-world profillari bilan integratsiyalashgan/tizimli.
4. Runbook’lar bo’yicha pre-prodda (so’ngra prodda cheklangan) xaos-eksperimentlar.
5. Geym-deylar - jamoaning ssenariy mashqlari (odamlar + asboblar).

3) Kuzatuvchanlik asos sifatida

SLI: latentlik p50/p95/p99, error rate, saturation (CPU/heap/FD/IOPS), drop/timeout, queue depth.
Trastirovki: rad etilgan «tor joylarni» qidirish uchun.
Semantik barqarorlik metrikasi: muvaffaqiyatli graceful-degrade ulushi, shed-so’rovlar ulushi, o’z-o’zini tiklash tezligi (MTTR).
Tajribalarni markalash:’chaos. experiment_id',’phase = inject/recover’.

4) Rad etish inyeksiyalari katalogi (faults)

Tarmoq: kechikish/jitter, yo’qotish/dublikatlar/reordering, o’tkazish qobiliyatini cheklash, paketli «bo’ronlar», TLS-uzilishlar.
Xost: CPUni cheklash, xotira oqishi/chegaralari, GC pauzalari, deskriptorlarning tugashi, «clock skew».
Ombor: latentlikning o’sishi, EROFS, ENOSPC, replikaning degradatsiyasi, etakchini yo’qotish.
5xx/429, sekinlashuv, DNS flapping, eskirgan sertifikatlar, rate-limit, «qisman javoblar».
Ma’lumotlar: yozuvning buzilishi, oqimlardagi «teshiklar», voqealar dubli, versiyalar to’qnashuvi.
Operatsiyalar: muvaffaqiyatsiz reliz, ficha-bayroq, -dreyf, qo’l xatosi (simulyatsiya doirasida).

5) Barqarorlik patternlari (nimani tekshirish kerak)

Har bir RPCda jitter va taymautli retrajlar.
Circuit Breaker (ochish/yarim ochish, eksponensial tiklash).
Bulkheads (kritik domenlarga poulalar/navbatlarni izolyatsiya qilish).
Load Shedding (to’yinganda past prioritetli so’rovlarni tashlaymiz).
Backpressure (zanjir bo’yicha yuqori signallar, parallellik chegaralari).
Idempotency («nojo’ya ta’sirlar» dagi idempotentlik kalitlari).
Manbaning tanazzulga uchrashi bo’yicha keshlash va stablar.
Graceful Degradation (engillashtirilgan javoblar, stale-ma’lumotlar, o’chirish fich).
Timeout-budget (qo’ng’iroqlar zanjiri bo’yicha umumiy vaqt budjeti).
Atomarlik/kompensatsiyalar (Saga/Outbox/Transactional Inbox).
Kvorumlar va replikatsiya (R/W kvorumlari, foydalanish uchun konsistentlikning degradatsiyasi).
Anti-entropy/replay (hodisalarning «teshiklari» ni tiklash).

6) Inyeksiya va kutish retsepti (psevdokod)

Jitter va breyker bilan retray


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()

Sheyding va 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) Eksperimentlar: stsenariylar va farazlar

7. 1 «Sekin qaramlik»

Inyeksiya: tashqi APIga + 400 ms p95.
Kutish: vaqtning o’sishi ≤ X%, breykerning ochilishi, fallback javoblari, <SLA servisini p99 saqlash, retrajlarda kaskadning yo’qligi.

7. 2 «Keshning qisman yo’qolishi»

Inyeksiya: Redis/Kesh shard tugunlarining 50% nosozligi.
Kutish: kattalashtirilgan miss, lekin boshlang’ich ko’chkilarsiz (request coalescing/immutable TTL), avto-isitish va tiklash.

7. 3 «Split-brain v DB»

Inyeksiya: etakchini yo’qotish, replikaga o’tish.
Kutish: qisqa muddatli deny yozuvlar, kvorumdan oʻqish, maʼlumotlarni yoʻqotish, Outbox xabarlarni yoʻqotmaydi.

7. 4 «ENOSPC/disk toʻldirilgan»

Inyeksiya: 95-100% disk.
Kutish: loglarning avariya holatidagi rotatsiyalari, blokirovka qilinmaydigan fichlarning ishlamay qolishi, tanqidiy jurnallar (WAL), alertlar va avtolikvidlarning saqlanishi.

7. 5 «Burst trafigi»

Inyeksiya: issiq endpointga 3 RPS × 10 daqiqa.
Kutish: past ustuvorlik sheydingi, «yadroviy» yo’llarda barqaror p95, limitlar doirasida navbatlar ko’payishi, DLQ bo’ronlari yo’qligi.

7. 6 «Clock Skew»

Inyeksiya: nod vaqtining +/ − 2 daqiqaga siljishi.
Kutish: TTL/imzolar (leeway), retrajlardagi monotonik taymerlar, ruxsat etilgan driftda valid tokenlar.

8) Eksperimentlar muhiti va xavfsizligi

Pre-prod bilan boshlang, sintetik ma’lumotlar, eng yaqin konfiga/topologiya.
Proda - faqat nazorat qilinadigan derazalar, ficha-bayroqlar, bosqichma-bosqich amplituda, avto-orqaga qaytish, «qizil tugma».
Guardrails: RPS/xato chegaralari, SLO qo’riqchilari, tanqidiy hodisalar paytida relizlarni blokirovka qilish.
Runbook majburiydir: qanday qilib orqaga qaytish, kimni chaqirish, qayerda tomosha qilish kerak.

9) Avtomatlashtirish va CI/CD

Kod sifatida eksperimentlar katalogi (YAML/DSL): maqsadlar, in’ektsiya, metrika, chegaralar, qaytarish tugmalari.
Smoke-chaos har bir relizda: steyjda qisqa inyeksiya (masalan, 2 min + 200 ms).
Matritsaning tungi progonlari: xizmatlar × nosozliklar turlari.
Agar barqarorlik chegaradan past bo’lsa (masalan,’fallback coverage <95%’«sekin qaramlik» ostida).

10) Ma’lumotlar va konsistentlik

Kompensatsiyani tekshiring (Saga): qisman bajarilgan operatsiyalar kelishilgan holatga keltirilishi kerak.
Takrorlash/takrorlash, out-of-order yetkazib berish, «teshiklar» va gaplarni sinab ko’ring.
Muvaffaqiyatsizliklardan keyin domen invariantlarini tekshiring: balans salbiy emas, tranzaksiyalar «tiqilib qolmaydi», limitlar buzilmagan.

11) Anti-patternlar

Faqat happy-path va yukni nosozliklarsiz sinovdan oʻtkazish.
Jittersiz retralar → degradatsiya ostidagi bo’ron.
Global taymaut byudjeti yo’qligi → kaskad taymautlari.
Barcha vazifalar uchun yagona pochta → izolyatsiya yoʻq (bulkheads).
«Cheksiz» navbatlar → yashirin/MOMning o’sishi.
Tajribalarning nol telemetriyasi → «ko’r» xaos-amaliyotlar.
Javobgar egasiz/limitsiz/mahsulotdagi tartibsizlik.

12) Arxitektorning chek-varaqasi

1. Stady-state gipotezasi va SLO aniqlanganmi?
2. Har bir RPCda taymautlar, retrajlar, breykerlar bormi?
3. Amalga oshirilgan bulkheads, limiterlar, backpressure, load-shedding?
4. Kesh barqaror: coalescing, kesh boʻronlaridan himoya qilish, isitish?
5. Nojo’ya ta’sirlar uchun Outbox/Saga, idempotent kalitlar?
6. Kvorumlar/replikatsiya/feylover sinovdan o’tkazilganmi?
7. CI/CD’da tajriba katalogi, nightly xaos va geytlar bormi?
8. Metriklar/trassalar tajribalarni belgilaydi, dashbordlar bormi?
9. Runbook’i va «qizil tugma» tayyor, javobgarlik belgilanganmi?
10. Dev/SRE/Support ishtirokidagi muntazam oʻyinlar?

13) Mini-asboblar va ssenariy namunalari (YAML-eskizlari)

Tarmoq (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 }

Qaramlik

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

Xulosa

Barqarorlikni sinovdan o’tkazish «xaos bilan hiyla-nayrang» emas, balki tizimni nosozliklar ostida oldindan aytib bo’ladigan intizomdir. Aniq gipotezalar, telemetriya, boshqariladigan eksperimentlar katalogi va arxitekturaga kiritilgan patternlar (taymautlar, breykerlar, izolyatsiya, idempotentlik) potentsial hodisalarni boshqariladigan stsenariylarga aylantiradi. Jamoa relizlarga ishonch hosil qiladi, foydalanuvchilar esa muvaffaqiyatsizlikka uchragan taqdirda ham barqaror xizmat ko’rsatadilar.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.