GH GambleHub

Operatsiyalar va Boshqaruv → Servislarga qaramlik

Servislarga bog’liqlik

1) Nima uchun bu zarur?

Har qanday ishlab chiqarish platformasi grafikdir: foydalanuvchilar → Edge/API → domen xizmatlari → navbatlar/oqimlar → DB/keshlar → tashqi provayderlar (to’lovlar, KYC, o’yin provayderlari). Grafaning bir qovurg’asidagi xato ko’pincha butun tarmoq bo’ylab «yuradi»: kechikishlar ko’payadi, retralar ishlaydi, navbatlar tugaydi, kaskadli nosozliklar paydo bo’ladi. Qaramlikni boshqarish «portlash radiusini» pasaytiradi va relizlarni oldindan aytib bo’lmaydigan qiladi.

Maqsadlar:
  • Qo’ng’iroqlarning to’liq grafigini ko’rish va kim kimga bog’liqligini tushunish.
  • Kaskadli nosozliklar va «retray bo’roni» ning oldini olish.
  • Relizlarni muvofiqligi va SLO targ’ibotini hisobga olgan holda rejalashtirish.
  • MTTRni oshirish: haqiqiy asosiy tugunni tezroq topish (root cause).

2) Qaramlik turlari

Sinxron (RPC: REST/gRPC/GraphQL): maxfiylik/foydalanish imkoniyati boʻyicha qattiq bogʻlanish. Taymautlar, breykerlar, retrajlar byudjeti kerak.
Asinxron (Event/Stream: Kafka/Rabbit/Pulsar): barqaror aloqa, lekin lag/backlog va yetkazib berish semantikasi (at-least-once, idempotency) mavjud.
Omborlar (DB/Cache/Object store): ajratiladigan resurslar → kontenshn, konnektlar limitlari/IOPS, eviction, replikatsiya.
Tashqi provayderlar (PSP/KYC/oʻyin provayderlari): kvotalar, pullik qoʻngʻiroqlar, xizmat koʻrsatish oynalari, yuridik SLA.
Operatsion (relizlar, ficheflaglar, konfiglar): sozlamalar, sirlar, schema registry orqali bilvosita qaramlik.

3) Xizmatlar katalogi va qaramliklar grafalari

Katalogda (Backstage/Service Catalog/CMDB) nima qayd etilyapti:
  • Egalari (Squad/chat/On-call rota), repo, chorshanba, artefaktlar.
  • API (OpenAPI/AsyncAPI), versiyalar, muvofiqlik (back/forward) shartnomalari.
  • Kiruvchi/chiquvchi qaramliklar (upstream/downstream) turi (sync/async), tanqidiylik, SLOni kutish.
  • Taymaut/retray byudjeti, breykerlar, bulkhead-pullar.
  • Tashqi integratsiya kvotalari va limitlari to’g "risidagi ma’lumotlar.
Kartochkaning mini-namunasi:
  • `service: payments-api`
  • Upstream: `user-profile` (sync), `risk-score` (async).
  • Downstream: `PSP-X` (sync, квота 2k RPS), `ledger` (async).
  • SLO: p99 ≤ 300 ms, 99. 9% uptime.
  • Taymautlar: 200 ms k’PSP-X’, 150 ms k’user-profile’.
  • Retray: 2 eksponensial kechikish, jitter.
  • Breyker: open 30 s uchun 5% xato/10 s

4) SLO-targ’ibot va «latentlik budjeti»

Sinxron qo’ng’iroqlar zanjirida yakuniy SLO kechikishlar va muvaffaqiyatsizliklar ehtimollari yig’indisidan shakllantiriladi.

Prinsiplar:
  • So’rov byudjeti yuqoridan pastga bo’linadi: front SLO 500 ms → Edge 50 ms → API 150 ms → domen xizmatlari 200 ms → provayder 100 ms.
  • Vaqt oralig’i «ichkariga qaraganda qisqaroq»: zombi qo’ng’iroqlarini to’plashdan ko’ra resurslarni yangilash uchun ichki vaqt oralig’i kamroq.
  • Faqat xavfsiz kodlar/istisnolar va jitter bilan retraylar; tor joylardagi taymautlarda retrajlarsiz (aks holda «bo’ron»).

5) Kontraktlar va muvofiqlik

Shartnomalar uchun API: SemVer versiyasini yaratish; «optional» maydonlari orqali backward-compatible o’zgarishlar, sxemani kengaytirish; olib tashlash - faqat «deprekeyt-davr» orqali.
Consumer-driven contracts (CDC): isteʼmolchilar testlari (Pact kabi) CI provayderiga qarshi ishga tushiriladi; muvofiq bo’lmaganda chiqarish bloklanadi.
Sxema-registrlar (Async): topiklar/hodisalar versiyasi, sxemalar evolyutsiyasi (Euro/JSON-Schema), «can-read-old/can-write-new» siyosati.

6) Barqarorlik muhandislik patternlari

Timeouts: SLA biznesini texnik kutilishlardan ajratamiz; har bir chiqadigan ulanish - aniq vaqt.
Retries + backoff + jitter: o’zgaruvchanlikni hisobga olgan holda 2-3 urinishdan ko’p emas.
Circuit Breaker: downstream degradatsiyasida «tez pasayish»; half-open namunalari.
Bulkhead (pullar izolyatsiyasi): turli daunstrimlar uchun - oqimlar/podlar/birikmalarning alohida pullari.
Rate-limit/Leaky-bucket: cho’qqilarni o’ldirmaslik uchun.
Idempotency & deduplikatsiya: so’rov/xabar darajasidagi idempotentlik kaliti; leyterlar va retraj navbatlar.
Keshlash va follbeklar: lokal/taqsimlangan keshlar, «stale-while-revalidate» maqomi, kontent degradatsiyasi.

Psevdo- (g’oya):

outbound:
psp-x:
timeout_ms: 200 retries: 2 retry_on: [5xx, connect_error]
backoff: exponential jitter: true circuit_breaker:
error_rate_threshold: 0. 05 window_s: 10 open_s: 30 pool: dedicated-psp (max_conns: 200)

7) Qaramliklar kuzatilishi

Taqsimlangan trastirovkalar (TraceID, Baggage): boʻgʻinlar boʻyicha soʻrov yoʻlini koʻrish; ’peer’ tagli chiquvchi qoʻngʻiroqlarga uxlangan. service`, `retry`, `timeout`.
Метрики per-dependency: `outbound_latency_p99`, `outbound_error_rate`, `open_circuit`, `retry_count`, `queue_lag`.

Dashbordlar Upstream/Downstream:
  • SLO va noto’g’ri qovurg’alar rang ko’rsatkichiga ega servislar xaritasi.
  • Oxirgi hafta uchun «Top N muammoli qaramliklar».
  • «Blast radius» - X. qulaganida zarar ko’radigan xizmatlar ro’yxati.
  • Korrelyatsiya daftarlari:’trace _ id ’/’ span _ id’jurnallarga kiritiladi.

8) Qaramliklarni hisobga olgan holda relizlarni boshqarish

Dependency-aware payplaynlar: agar isteʼmolchilarning CDC testlari qizil boʻlsa, provayderning chiqarilishi bloklanadi.
Bosqichma-bosqich yoqish (ficheflaglar): yangi maydonlar/endointlar → 1% iste’molchilar uchun → 10% → 100%.
Kanareykali relizlar: asosiy qaramlikni va trafikning ulushiga nisbatan «yashirin byudjet» ni tekshiramiz.
Sxemalarning mosligi: prodyuser’vNew’deb yozadi, konsumerlar’vOld/vNew’deb o’qiydilar; o’tgandan keyin - eski dalalarning «axlat yig’ish».

9) Ushbu Nizomning

«Haqiqiy aybdorni» aniqlaymiz: alert-korrelyatsiya - agar «PSP-X» degradatsiya qilingan bo’lsa, butun «to’lov butasi» emas, balki integratsiya egasi.
Avtodegradatsiya: «minimal rejim» ficheflagi (og’ir bo’lmagan endpindlar, qisqartirilgan bandlalar, kritik bo’lmagan fichlarni o’chirish).
Kaskadlardan gardlar: parallellikni cheklaymiz, issiq filialda retrajlarni o’chiramiz, breykerni oldindan ochamiz (pre-open).

Runbook namunasi:
  • Diagnostika: qanday dashbordlar/metriklar, kvotalar/limitlarni qanday tekshirish kerak.
  • Amallar: RPSni pasaytirish, zaxira provayderga oʻtish, vaqtincha kesh javoblarini yoqish.
  • Qaytarish va validatsiya: parametrlarni qaytarish, p95/p99 va error-rate normalariga ishonch hosil qilish.

10) Qaramliklar tanqidiyligi matritsasi

Har bir aloqani oʻqlar boʻyicha baholang:
JuftTuriKritik (GGR/SLA)Aylanma yo’lKvotalar/limitlarEgasi
`api → payments`syncYuqoriqisman offlayn depozit2k RPSsquad-payments
`payments → PSP-X`syncTanqidiyPSP-U/tokenlar keshi1. 5k RPSintegrations
`bets → risk-score`asyncO’rtadegrade to defaultrisk
Qoidalar:
  • «Tanqidchilar» uchun - ikki tomonlama provayding, breykerlar, alohida pullar, xaos-testlar.
  • «Yuqori» uchun - hech bo’lmaganda degradatsiya va chichni o’chirishning «yashil tugmasi».
  • «O’rta/past» uchun - retralar uchun limitlar va navbatlar budjeti.

11) Jarayon: inventarizatsiyadan foydalanishgacha

1. Grafani xaritalash: katalogdan haqiqiy qo’ng’iroqlar (trassalar) + deklarativ bog’liqliklarni yig’ish.
2. Egalarini tayinlash: har bir xizmat va tashqi integratsiyaga javobgar on-call.
3. SLO va byudjetlarni belgilash: yashirin/xato, taymaut/retraj/pullar.
4. OpenAPI/AsyncAPI, sxemalar va CDC shartnomalarini rasmiylashtirish.
5. Barqarorlik patternlarini yoqish: timeouts/retries/circuit/bulkhead.
6. per-dependency dashbordlari va alertlarini moslash.
7. CDC/moslashuvchanlik/kanareyka blokini qoʻyish.
8. Muntazam game-days: asosiy qovurg’alarning tushishi bo’yicha xaos-eksperimentlar.
9. Postmortemalar aloqalarga e’tibor qaratadi: kaskadni kuchaytirgan narsa radiusni toraytirishdir.

12) Alertlar qaramlikda (qoidalar g’oyalari)

Sinxron daunstrimlar:
  • `outbound_error_rate{to="X"} > 3% FOR 10m` → warning; `>5% FOR 5m` → critical.
  • `outbound_p99_latency{to="X"} > SLO1. 3 FOR 10m` → warning.
Circuit breaker:
  • ’ circuit _ open {to =» X»} = = 1 FOR 1m’ → page integratsiya egasi.
Retray:
  • ’ retry _ rate {to =» X»}> baseline2 FOR 5m’ +’outbound _ rps> 0’→ bo’ron xavfi.
Async:
  • `consumer_lag{topic="Y"} growth > threshold FOR 10m` + `hpa at max` → крит.
Tashqi kvotalar:
  • ’ usage _ quota {provider =» PSP-X «}> 90% window ’→ ogohlantirish, avtooʻchirish.

13) Anti-patternlar

«Barcha downstrimlar uchun bitta umumiy oqim puli». Jami: head-of-line blocking. Pullarni bo’ling.
Taymautsiz/cheksiz retrajli. Shunday qilib, bo’ron paydo bo’ladi.
Noidempotent operatsiyalarning ko’r retraalari. Hisobdan chiqarish/stavkalar dubli.
Bogʻlanish nuqtasi sifatida yashirin «umumiy DB». Kuchli raqobat va blokirovka.
API versiyasi CDC va deprekeyt rejasiz o’zgaradi. Ommaviy tushishlarni ushlang.
Kuzatish faqat xizmatlar bo’yicha, aloqalar bo’yicha emas. Zanjir qayerda yirtilayotganini ko’rmayapmiz.

14) Dashbordlar: minimal to’plam

Service Map: qovurgʻa metriklari (latency/error/volume) boʻlgan interaktiv xizmat xaritasi.
Upstream/Downstream Overview: xizmat egasi uchun - kiruvchi (kim qo’ng’iroq qiladi), chiqadigan (kimga qo’ng’iroq qilamiz), «top muammolar».
Dependency Drilldown: aniq aloqa kartochkasi: p50/p95/p99, sinflar bo’yicha xatolar, ochiq breyker foizi, retryalar, ulanishlar puli, kvotalar/kod.
Release Context: bogʻliqlik grafiklaridagi relizlar/ficheflaglar izohlari.

15) Joriy etish chek-varaqasi

  • Egalari va shartnomalari bo’lgan xizmatlar katalogi (OpenAPI/AsyncAPI).
  • Izlardan to’liq bog’liqlik grafigi (har kuni yangilash).
  • Xizmat bo’yicha SLO va zanjir bo’yicha «yashirin byudjetlar».
  • Aniq taymautlar, jitter retraalari, breykerlar, bulkhead-izolyatsiya.
  • CI’dagi CDC testlari.
  • Dashbordlar per-dependency va servis xaritasi.
  • Qovurg’alar + asosiy sababga ko’ra suppression.
  • Game-days: provayder/klaster/topik qulashi va tanazzullarni tekshirish.
  • Tanazzul rejasi: qaysi fichlarni o’chiramiz, qaysi keshlarni yoqamiz.
  • Aloqani kamaytirish harakatlari bilan muntazam postmortemalar.

16) Qaramliklarni boshqarish sifati KPI

Dependency MTTR: qovurgʻa boʻyicha tiklanish mediani.
Blast Radius Index: bitta yiqilishda ishlatiladigan xizmatlarning oʻrtacha soni.
Coupling Score: hamma orasida sync-qaramlik ulushi; pasayish tendentsiyasi.
CDC Pass Rate:% Shartnomalar buzilmagan relizlar.
Retry Storms/oy: maqsadli qiymat → 0.
Cost of External Calls: 1k RPS uchun tashqi qoʻngʻiroqlar qiymati (keshlash/follbeklar effektini koʻrish).

17) Tez boshlash (defoltlar)

Taymautlar: bo’g "in budjetining 70-80 foizi; so’rovning yuqori taymaut <ichki summa.
Retrai: max 2, faqat idempotentli 5xx/tarmoq, s backoff + jitter.
Breyker: 10 soniyada 5% xato chegarasi, open = 30 soniya, half-open namunalari.
Bulkhead: har bir daunstrim uchun ajratilgan pullar/ulanish limitlari.
CDC: barcha ommaviy API va topiklar uchun majburiydir.
Async-preferens: qaerda - hodisalarga/navbatlarga o’tish (vaqt bo’yicha tanaffus).

18) FAQ

Q: Nima muhimroq: retray yoki breyker?
A: Ikkalasi ham. Retrajlar qisqa muddatli uzilishlardan qutqaradi, breyker doimiy degradatsiya va bo’rondan himoya qiladi.

Q: Aloqa «juda zaif» ekanligini qanday tushunish mumkin?
A: Xatolarning yuqori korrelyatsiyasi, taymautlarning past zaxirasi, tez-tez retralar, follbeklar/keshlar yo’qligi, sinxron uzun zanjirlar.

Q: Agar bizda integratsiya testlari bo’lsa, CDC nima uchun?
A: CDC iste’molchining umidlarini yozib oladi va provayderning chiqarilishi mos kelmasa, kodning prodga tushishidan oldin buziladi.

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.