GH GambleHub

Zero-Downtime joylashtirish

(Bo’lim: Arxitektura va Protokollar)

1) Zero-Downtime nima va nima uchun kerak

Zero-Downtime (ZDT) - bu ilovaning yangi versiyalarini foydalanuvchilar uchun mavjud bo’lmagan va so’rovlarni yo’qotmagan holda chiqarish usuli. Maqsadlar:
  • Mijozlar va integratsiyalar uchun nol oson.
  • Prognoz qilinadigan relizlar, tez qaytish va boshqariladigan xavf.
  • Kelishuvlar doirasida SLO/SLI (yashirin, xato, foydalanish imkoniyati) ni saqlash.

ZDTning kaliti - bitta «sehrli» texnika emas, balki yetkazib berish patternlarining kombinatsiyasi, ma’lumotlarning mosligi va trafikning malakali yo’nalishi.

2) Zero-Downtime asosiy tamoyillari

1. Versiyalar mosligi: yangi va eski versiyalar bir vaqtning o’zida trafikni va ma’lumotlarni to’g’ri qayta ishlashi kerak.
2. Operatsiyalarning idempotentligi: qayta ishlash holatni buzmasligi kerak.
3. Goʻzal yakunlash (graceful shutdown) va ulanishlarni drenaj qilish.
4. Salomatlikni bosqichma-bosqich tekshirish: readiness/liveness namunalari, health-endpointlar.
5. Birinchi darajali fuqaro sifatida orqaga qaytish: rollback hotfixdan osonroq va tezroq.
6. Kuzatilganlik by design: reliz belgilari, yagona dashbordlar, SLO alertlari.
7. Avtomatlashtirish: reliz va qaytarish ssenariylari - qo’l yo’riqnomalari emas, balki kod.

3) Dauntaymsiz yetkazib berish patternlari

3. 1 Rolling Update

Asta-sekin eski versiyadagi instansiyalarning bir qismini trafikdan chiqarib, yangilab, pulga qaytaramiz.

Afzalliklari: infratuzilma jihatidan tejamkor, shunchaki k8s/ASG.
Minuslar: klaster bir vaqtning o’zida ikkita versiya bilan ishlaydi (version skew).

3. 2 Blue-Green

Ikkita toʻliq prod-stek: faol (Blue) va nomzod (Green). Trafikni almashtirish - atomik flip.

Ijobiy tomonlari: bir zumda orqaga qaytish, toza izolyatsiya.
Minuslar: ↑ infratuzilma xarajatlari, stateful bilan qiyinroq.

3. 3 Canary/Progressiv rollout

Metrik geytali yangi versiyadagi trafikning kichik qismini (1-5-10-25-50-100%) beramiz.

Plyuslar: minimal blast radius, data-driven yechimi.
Kamchiliklar: yetuk kuzatuv va intellektual yo’nalish kerak.

3. 4 Shadow traffic / Dark launch

Haqiqiy so’rovlarni yangi versiyada aks ettiring (foydalanuvchiga javobsiz) yoki metrikalarni yig’ish uchun yashirincha ishga tushiring.

Ijobiy tomonlari: muammolarni erta aniqlash.
Kamchiliklar: giyohvandlikka ikki baravar yuk, nojo’ya ta’sirlarni nazorat qilish kerak.

4) Trafik va birikmalarni boshqarish

4. 1 Readiness/Liveness

Liveness orkestrga «meni qayta ishga tushiring» deydi.
Readiness - «trafikni yo’naltirmang, men hali tayyor emasman».
To’g’ri readiness-mantiq va taymautlarsiz chiqarish mumkin emas.

4. 2 Ulanishlar drenaji (Connection Draining)

Instansiyani puldan chiqarishdan oldin:
  • yangi ulanishlarni qabul qilishni to’xtatamiz,
  • Biz faollarning tugashini kutmoqdamiz
  • Taymaut bo’yicha «osilgan» larni to’xtatamiz.

4. 3 Sticky-sessiyalar va L7 darajasini yoʻnaltirish

Sticky stateful-stsenariylarda foydali, ammo yuk balansini murakkablashtiradi.
L7 qoidalari (yo’l, sarlavha, kuke, API versiyasi) canary/ring uchun qulay.

4. 4 Uzoq umr ko’radigan birikmalar

WebSocket/gRPC streaming: yangilashdan oldin drain mode + «GOAWAY» signalini yoqing.
Mijozlarning oqimlari va orqa retralarini yuklash uchun Windows dasturini rejalashtiring.

5) Ma’lumotlar va DB migratsiyasining mosligi

5. 1 Expand-Migrate-Contract

1. Expand: Eski versiyani buzmasdan yangi ustunlar/indekslar/jadvallarni qoʻshing.
2. Migrate: ma’lumotlarni fon va idempotent (batchi, chekpint) bilan ko’chiramiz.
3. Contract: eskisini faqat barqarorlashgandan keyingina olib tashlaymiz.

5. 2 Amaliyot

Reliz oynasida eksklyuziv DDL loklaridan qoching.
API/hodisa shartnomalarini (schema registry, CDC) versiya qiling.
Og’ir migratsiyalar uchun - onlayn vositalar, replikalar, bosqichma-bosqich o’zgarishlar.
Ikki konturli yozuv (dual-write) faqat deduplikatsiya va idempotent iste’molchilar bilan.
Navbatlar orqali ishonchli integratsiya qilish uchun Outbox/Inbox.

6) Keshlar, sessiyalar va fon vazifalari

Versiyalar almashtirilishi uchun sessiyalar va kesh tashqi (Redis/Memcached).
Pulga qoʻshishdan oldin kesh/jit/temp indekslarini isitish.
Orqa fon chiziqlarini ajrating yoki poygalardan qochish uchun etakchilikdan foydalaning.

7) SLO bo’yicha kuzatuv va geytlar

Golden signals: latentlik p95/p99, error rate, RPS, saturation, lag navbatlar.
Biznes-SLA: avtorizatsiya, konvertatsiya, muvaffaqiyatli to’lovlar, huni qadamlari bo’yicha rad etish.
Geytlar: rollout faqat canary ≤ baseline + degradatsiya chegarasi va error budget yonmasa harakatlanadi.

8) Xavfsiz tugatish va orqaga qaytish

Orqaga qaytish - bu xuddi shu payplayn, faqat teskari tomonga: «qo’l krafti» emas, balki qat’iy buyruqlar.
blue-green uchun - flip back; canary uchun - 0% gacha vazn yo’qotish yoki oldingi barqaror qadam.
Ma’lumotlar: kompensatsiya qilingan tranzaksiyalar, qayta ishlov berish, voqealarni deduplikatsiya qilish.

9) Zero-Downtime chek-varaqlari

Chiqarishdan oldin

  • Bitta imzolangan artefakt (immutable), SBOM va qaramlikni tekshirish yig’ildi.
  • Readiness/liveness amalga oshirildi va sinovdan o’tkazildi.
  • Expand rejimidagi migratsiya rejasi, qaytariluvchanlik tasdiqlandi.
  • Dashbordlar va alertlar yangi versiya uchun tayyor, reliz belgilari tashlangan.
  • Qaytish staging/pre-prod orqali tekshirildi.

Reliz paytida

  • Ulanishlar drenaji yoqilgan, taymautlar etarli.
  • Trafik asta-sekin tarjima qilinadi (canary/ring) yoki flip (blue-green).
  • Metriklar baseline bilan solishtiriladi, geyt ostonalariga rioya qilinadi.

Chiqarilgandan keyin

  • N soat post-monitoring, hodisalar yo’q.
  • Contract migratsiyasi tugadi, vaqtinchalik bayroqlar/marshrutlar olib tashlandi.
  • Retrospektiv, pleybuklarni yangilash.

10) Anti-patternlar

Drenajsiz recreate-deploy va readiness ⇒ so’rovlarning uzilishi.
Tayyorlanmagan DDL ⇒ praym-taymdagi blokirovka va taymautlar.
Xizmat versiyalari o’rtasida nomuvofiq sxemalarni aralashtirish.
Ishlov beruvchilar va vorkerlarda idempotentlik yo’qligi.
«Hissiyotlarga ko’ra» geytsiz va baseline bilan taqqoslanmagan.
Uzun DNS-TTL blue-green bilan flip soatlab davom etadi.
rolling/canary tizimida lokal sessiyalar/kesh.

11) Joriy etish stsenariylari

11. 1 Kubernetes (rolling + canary)

Deployment с `maxUnavailable=0`, `maxSurge=25%`.
Readiness isinishni kutmoqda (kesh boshlanishi, minor migratsiyasi).
Servis-mesh/Ingress bilan weighted routing (1-5-10-25-50-100%).
Alertlar: p95, 5xx, navbat, biznes huni.

11. Bulutda 2 ta Blue-Green

Balanschi uchun ikki stek:’blue. example. com` и `green. example. com`.
Isitish green, smoke/regress, so’ngra listener/route swap (yoki past TTL bilan DNS almashtirish).
Muammoga duch kelganda - tezkor flip back.

11. 3 Stateful-servis

Ma’lumotlar nusxalari + onlayn-migratsiya; validatsiya bilan ikki marta oʻqish.
Orqa fon joblari «etakchilik» versiyasi yoki bo’lingan navbatlar bo’yicha ko’chiriladi.
Sessiyalar/instansiyadan tashqari kesh; sticky faqat vaqtincha yoqilgan.

12) Jismoniy naflaglar va mijozlar ilovalari

Yangi chichlar bayroqlar bilan faollashtiriladi (segmentlar: xodimlar → beta → hammasi).
Mobil/ish stoli mijozlar uchun protokolning mos kelishi chegaralarini va eski versiyalarning (deprecation policy, server-side fallback) chidamliligini hisobga oling.

13) Unumdorlik va qiymat

Rolling arzonroq, ammo ehtiyotkorlik bilan moslashishni talab qiladi.
Blue-Green chiqarilganda qimmatroq, ammo orqaga qaytish bir zumda.
Canary xavflar va xarajatlarni muvozanatlaydi, ammo kuchli kuzatishni talab qiladi.
Ephemeral prevyu va stendlarni avtomatik tozalash orqali tejang.

14) Minimal referens-payplayn ZDT

1. Build: yagona artefakt, imzo, SBOM.
2. Test: unit/integration/contract + security.
3. Staging: smoke, yuk, expand rejimida migratsiya, qaytishni tekshirish.
4. Prod: shadow → canary (geytlar) yoki blue-green flip.
5. Post-deploy: kuzatish, contract-cleanup, retro.

15) Qisqacha xulosa

Zero-Downtime - bu intizom: mos keladigan versiyalar + to’g’ri marshrut + boshqariladigan migratsiya + kuzatish va tez orqaga qaytish. Kontekst (rolling, blue-green, canary) uchun pattern tanlang, SLO bo’yicha geytlarni avtomatlashtiring, ma’lumotlarni idempotentda saqlang - va relizlar ishonchli odatiy jarayonga aylanib, voqea bo’lishni to’xtatadi.

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.