Logo GH

Blue-Green va Canary relizlari

(Bo’lim: Arxitektura va Protokollar)

1) Nima uchun «xavfsiz otish» kerak?

Zamonaviy tizimlarda chiqarish nafaqat kod yetkazib berish, balki prodda boshqariladigan tajribadir: biz xavfni minimallashtiramiz (foydalanuvchilarni buzmaymiz) va fikr-mulohazalar vaqtini qisqartiramiz (samarani tezda ko’ramiz). Ikkita klassik strategiya - Blue-Green va Canary - buni turli yo’llar bilan hal qiladi, lekin umumiy maqsad bilan: nol pastlik, tezkor orqaga qaytish, SLO bo’yicha kuzatish.

2) Bazaviy ta’riflar

Blue-Green

Prod-muhitning ikkita to’liq nusxasini saqlaymiz: faol (Blue) trafikka xizmat ko’rsatadi, passiv (Green) esa yangi versiyani tayyorlaydi. Almashtirish - balanslovchi/marshrutizator darajasida atom (switch/flip). Agar yomonlashsa, darhol Blue-ga qaytamiz.

Canary

Qismlarga ajratamiz: avval trafikning kichik foizini (masalan, 1-5%), metrik/SLOni kuzatamiz, keyin ulushni bosqichma-bosqich oshiramiz (10% → 25% → 50% → 100%). Degradatsiyada - oldingi barqaror qadamda orqaga qaytish yoki to’xtash.

3) Qaysi yondashuv yaxshiroq

Blue-Green - quyidagi hollarda tanlaymiz:
  • Murakkab manevrlarsiz bir zumda orqaga qaytish kerak.
  • Arxitektura/byudjet infratuzilmani ikki tomonlama takrorlash imkonini beradi.
  • Biz keng ko’lamli migratsiya yoki platforma yangilanishlarini (OS/JDK/rantaym) alohida o’tkazmoqchimiz.
  • Ilova/birikmalar pullari asta-sekin «aralash» holatga sezgir.
Canary - quyidagi hollarda tanlaymiz:
  • Blast radiusni minimallashtirish va foydalanuvchilar ulushidagi xatti-harakatlarni ko’rish kerak.
  • Relizlarning yuqori chastotasi, progressiv yetkazib berish norma sifatida.
  • Etuk kuzatuv va avtomatik geytlar (error budget, latency, conversion) mavjud.
  • Mahsulot guruhi gipotezalarni tekshirishni xohlaydi: konversiya, ushlab turish, LTV va hokazolarga ta’siri.

4) Muvaffaqiyatli chiqishning umumiy prinsiplari

Idempotent bild-artefaktlar: barcha bosqichlarda bir xil tasvir/paket.
Determinirlangan konfiguratsiya: kod sifatida, atrof-muhitning taqqoslanishi.
Kuzatilganlik by design: loglar, metriklar, trastirovkalar, alertlar; SLI/SLO oldindan.
Tezkor, avtomatlashtirilgan orqaga qaytish: tugma/orqaga qaytish buyrug’i - qo’l sehri emas, balki payplaynning bir qismidir.
Sxemalarning mos keladigan o’zgartirishlari: expand-migrate-contract strategiyasi (§ 10 ga qarang).
L7 darajasida marshrutlash (iloji boricha): sarlavhalar/kuklar/yoʻllar/API versiyalari boʻyicha moslashuvchanlik.

5) Blue-Green: arxitektura va jarayon

5. 1 Topologiya

Ikkita prod-stek: Blue (faol) va Green (nomzod).
Umumiy tashqi qaramliklar: CDN, tashqi API, navbatlar; DQ - alohida holat (§ 10 ga qarang).
Almashtirish nuqtasi: Balans/Ingress/Gateway.

5. 2 Bosqichma-bosqich flou

1. Green’ni yangi artefakt (vNext) ostida ko’taramiz, smok-testlar o’tkazamiz.
2. Avtotestlarni Green (e2e, kontrakt, regression) ga qarshi haydash.
3. Kesh/sessiyalarni isitib, orqa fon joblarini/navbatlarini sinxronlashtiramiz.
4. Trafikni Green ga o’tkazing: atom flip (DNS TTL past, Route/Listener swap, Ingress weight = 100%).
5. Biz SLOni dastlabki daqiqalarda/soatlarda kuzatmoqdamiz (golden signals: latency, errors, saturation + biznes metrika).
6. Muammoga duch kelganda - Blue (flip back) ga bir zumda qaytish.

5. 3 Ijobiy/salbiy tomonlari

Afzalliklari: bir zumda orqaga qaytish, oddiy aqliy model, toza izolyatsiya.
Kamchiliklar: infratuzilmani ikki baravar oshirish, stateful komponentlar va ma’lumotlar migratsiyasi bilan bog’liq murakkablik.

6) Canary: arxitektura va jarayon

6. 1 Topologiya

Yagona prod-klaster; yagona jabhada xizmatning bir nechta versiyalari (stable va canary).
Trafik tarozilar bo’yicha (1-5-10-25-50-100%) yoki targetlar bo’yicha (sarlavha/kuke/ID bo’yicha) bo’linadi.

6. 2 Bosqichma-bosqich flou

1. Xuddi shu klaster/ASG/NSGga canary-versiya deploy.
2. Trafikning bir qismini (masalan, 1-5%) canariga yoʻnaltirish.
3. SLI/SLO va biznes-metriklarni avtomatik tekshirish; geytlar CI/CD (error rate, p95 latency, CPU/RES, konvertatsiya, rad etish/qaytarish).
4. Geytlardan o’tishda trafik ulushini bosqichma-bosqich oshirish.
5. 100% gacha to’liq rollout va eski versiyani o’chirish; degradatsiyada - avto-rollback.

6. 3 Ijobiy/salbiy tomonlari

Afzalliklar: aksariyat foydalanuvchilar uchun minimal xavf, data-driven yechimi.
Kamchiliklar: etuk kuzatuv, malakali marshrutlash, instantsiyalar o’rtasida «version skew» xavfi.

7) Trafikni yo’naltirish

L4 darajasi: IP/portlar bo’yicha balans; oddiy, lekin moslashuvchanlik kam.
L7 darajasi: HTTP/S qoidalari - yo’l, xost, sarlavha, cookie, User-Agent, GeoIP, SNI.

Texnikalar:
  • Weighted routing (ogʻirligi 1-100%).
  • Header-based/Cookie-based (foydalanuvchini guruhga belgilash).
  • Session stickiness (stateful/keshli skriptlar uchun muhim).
  • Shadow/Traffic mirroring

8) Instrumentlar va sotuvlar (misollar)

Kubernetes: Ingress (NGINX, Contour), Service Mesh (Istio/Linkerd), Argo Rollouts, Flagger.
Облака: AWS ALB/ELB, Route 53 weighted records, ECS/EKS; GCP Load Balancing + NEG; Azure Front Door/App Gateway.
CD platformalari: Spinnaker, Argo CD, GitHub Actions + Progressive Delivery plaginlari, GitLab/CD.

💡 Printsip bir: versiya - kod, trafik - siyosat, targ’ibot - SLO bo’yicha avtomatlashtirilgan geytlar.

9) Kuzatish darajasi, SLI/SLO va geytlar

Golden signals: Latency (p95/p99), Error rate (5xx/4xx по типам), RPS, Saturation (CPU/Memory/GC), Queue lag.
Biznes-metrika: konvertatsiya, avtorizatsiya, to’lovlar/muvaffaqiyatlar, o’rtacha chek, huni qadamlari bo’yicha rad etish.

Geytlar:
  • Xato chegarasi (masalan, error rate canary ≤ baseline + X%).
  • Latentlik p95 bazeline dan bir Δ kam emas.
  • Biznes chegarasi (masalan, konversiyaning pasayishi
  • Error budget SLO tezda yonmasligi kerak.

Qadam davomiyligi: statistik ahamiyat uchun yetarli bo’lgan minimal vaqt (trafikka bog’liq).

10) DB migratsiyasi va sxemalarning muvofiqligi

Asosiy qoida: agar versiyalar orqaga va orqaga mos kelsa, relizlar xavfsiz.

expand-migrate-contract strategiyasi:

1. Expand: Eski versiyani buzmasdan yangi ustunlar/indekslar/jadvallarni qoʻshing.

2. Deploy app vNext (yangi sxemani o’qiydi/yozadi, lekin eskisi bilan ham ishlay oladi).

3. Migrate data (backgraund/batch, idempotent, chekpindlar bilan).

4. Contract: Barqarorlashgandan soʻng eski maydonlarni olib tashlaymiz.

Anti-pattern: Blue-Green o’zgarishi paytida eksklyuziv blokirovka qilishni talab qiladigan migratsiyalar; sxemani tushirishning mumkin emasligi; «ikki baravar yozuv» da duplikatsiyasiz.

11) Qaytish (rollback) va avariyalar rejalari

Blue-Green: Blue’dagi tezkor flip; Green fon joblarining «quyruqlarini» monitoring qilamiz.
Canary: ogʻirlik orqaga qaytishi (masalan, 25% dan 5% yoki 0% ga orqaga); alertlarda avtomatik abort.
Ma’lumotlar: takrorlash/kompensatsiya qilishning puxta o’ylangan siyosati (idempotency keys, «inbox/outbox» pattern, xabarlarni deduplikatsiya qilish).
Ficheflaglar: qisman chiqarilgan imkoniyatlarni oʻchirish uchun tezkor kill switch.

12) Steyt va sessiyalar bilan ishlash

Sticky sessions kanareykalar uchun yoki versiyalar almashtirilishi uchun sessiyalarni tashqi saqlash (Redis/Memcached).
Kesh oldindan isitiladi (Green warm-up) va flip paytida invalidation hisobga olinadi.
Orqa fon vorkerlari: versiyalar o’rtasida «poygalar» ga yo’l qo’ymang - navbatlar bo’linishi yoki versiya bo’yicha «etakchilik».

13) Xavfsizlik va muvofiqlik

Green/Canary-ga kirish - Zero Trust orqali: servis hisoblari, minimal zarur rollar.
Sirlar va kalitlar - KMS/Secrets Manager orqali; rotatsiyani yoqing.
Trafik - faqat TLS; endpoint’larning versiyalari aniq belgilangan; yo’naltirish va reliz harakatlari auditi.

14) Qiymati va unumdorligi

Blue-Green infratuzilmani ikki baravar oshiradi (chiqish vaqtida yoki doimiy ravishda) - byudjetni belgilang.
Canary tejamkor, ammo avtomatlashtirish uchun kuzatish va muhandislik vaqtini talab qiladi.
Optimallashtirish: avtoskeyling, ephemeral muhit, versiyalarning parallel mavjudligi oynasini qisqartirish.

15) Chek-varaqlar

Chiqarishdan oldin

  • Rasm/bild bitta manbadan olingan, imzolar tekshirilgan.
  • Test-reja, alertlar va SLO-geytlar sozlangan.
  • DB migratsiyasi - expand rejimida, to’xtash rejalari mavjud.
  • Qaytarish rejasi - staging/production-like da tekshirildi.

Reliz paytida

  • Metrika va loglar baseline bilan solishtiriladi.
  • Canary uchun - qadamlar va chegaralar qayd etilgan; Blue-Green uchun - flip-back tayyorligi.
  • On-call buyruqlari fikr-mulohaza oynasini biladi.

Chiqarilgandan keyin

  • SLO botmagan, error budget normal.
  • Relizdan keyingi migratsiya/tozalash tugadi.
  • Pleybuklarning retrospektivasi va yangilanishi.

16) Tez-tez xatolar va anti-patternlar

Metriksiz qaytarish: maʼlumot yoʻq - boshqariladigan yechim yoʻq.
Mos kelmaydigan DM sxemalarini aralashtirish, pastga tushirish strategiyasining yo’qligi.
Tasodifiy trafikni aralashtirish: stickiness yoʻq, foydalanuvchilar versiyalar orasida «sakrashadi».
Yashirin stateful-qaramliklar (lokal disklar, in-memory keshlar).
Uzoq DNS-TTL tezkor flip (Blue-Green) ga xalaqit beradi.
Avtogeytlar yo’qligi: qo’lda «ko’z bilan» yechimlar sekinlashadi va xavflarni oshiradi.

17) Kombinatsiyalangan yondashuvlar

Blue-Green + Canary: avval Green, keyin Green ichida alohida xizmatlar uchun Canary.
Shadow/migratsiya trafigi: Canary oldidan oynali trafikni yangi versiyaga haydaymiz.
Feature flags (progressive delivery): funktsional segmentlar bo’yicha «qorong’u» bayroqlar bilan barqaror versiya ustiga qo’shiladi.

18) Ssenariy namunalari (eskizlar)

Blue-Green (web+api):

1. Yangi Listener/Ingress uchun Green (v2) ni joylashtiring.

2. Keshlarni isitish, readonly-tekshirish, smoke.

3. Ogʻirlikni Green = 100% ga oʻtkazing.

4. SLOni 30-60 daqiqa davomida kuzatamiz; Agar hammasi yaxshi bo’lsa, Blue’ni o’chirib qo’yamiz.

Canary (to’lov mikroservisi):

1. Deploy canary vNext (nusxalari 5%).

2. Ichki hisoblar/sinov segmenti uchun 5% trafikni yoqing.

3. Avtogeyt: error rate ≤ baseline + 0. 3%, p95 ≤ +20ms.

4. 10% → 25% → 50% ni har N daqiqada ko’taring.

5. Ficheflagni barcha segmentlar bo’yicha 100% o’tkazamiz; eski versiyasini olib tashlaymiz.

19) Turli arxitektura uchun variatsiyalar

Monolit: Blue-Green osonroq, Canary chich bo’linmasligi sababli qiyinroq; ficheflaglardan foydalaning.
Mikroservislar: Canary tabiiy; xizmatlararo shartnomalarni (consumer-driven contracts) kuzatib boring.
Stateful Services: Diqqat bilan ishlab chiqilgan migratsiyalar va stickiness bilan Blue-Green’ni afzal koʻring.

20) Qisqacha taqqoslash (xulosa)

Orqaga qaytish tezligi: Blue-Green = bir zumda; Canary = tez, lekin ogʻirligi orqaga qaytgan holda.
Infratuzilma qiymati: Blue-Green ↑; Canary ↔︎/↓.
Foydalanuvchilar uchun xavf: Canary past (biz ulushni nazorat qilamiz).
Joriy etishning murakkabligi: Blue-Green-ni boshlash osonroq; Canary kuchli kuzatuv va avtomatlashtirishni talab qiladi.
Maʼlumotlar/sxemalarning mosligi: ikkalasi uchun ham muhim; expand-migrate-contract dasturini rejalashtiring.

21) Jami

Blue-Green va Canary - o’zaro istisno strategiyalar emas, balki progressiv etkazib berish elementlari. Tanlov qiymati, kuzatish qobiliyati va o’zgarishlar xususiyati bo’yicha cheklovlarga bog’liq. Yondashuvidan qat’i nazar, barqaror reliz to’rtta tayanchda saqlanadi: avtomatlashtirish, kuzatish, teskari moslik va tezkor orqaga qaytish.

Contact

Biz bilan bog‘laning

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

Telegram
@Gamble_GC
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.