GH GambleHub

Rollback strategiyasi va atom relizlari

Rollback strategiyalari va atom relizlari

1) Nega tezkor qaytarish kerak

Hatto mukammal test qoplamasida ham prod xatosizlikni kafolatlamaydi. Rollback - bu SLO/biznes-metrik yoki hodisa signaliga ko’ra tizimning oldingi barqaror holatiga boshqariladigan qaytishi. Maqsadlar:
  • MTTRni daqiqaga qisqartirish.
  • Shikastlanish radiusini cheklash (minimal ta’sir ko’rsatgan foydalanuvchilar/tranzaksiyalar).
  • Ma’lumotlarning yaxlitligini va kontraktlarning muvofiqligini saqlab qolish.

Kalit: relizlarni mini-loyiha emas, balki arzimas harakat sifatida tuzish.

2) «Atom relizi» tushunchasi

Atom relizi - yangi versiya/xulq-atvorni qo’shishni uzoq muddatli nojo’ya ta’sirlarsiz bitta atom operatsiyasi bilan bajarish (va bekor qilish) mumkin bo’lganda.

Atomarlik komponentlari:
  • Immunutable artefakt (imzolangan rasm/paket).
  • Versionirovannыe konfigi (promoushen versiya, emas ruchnыe pravki).
  • Yetkazib berish bo’limi «qo’shishdan» (marshrutlash/bayroqlar).
  • Mos maʼlumotlar sxemasi (ikkala versiya bir vaqtning oʻzida yashashi mumkin).
  • Runbook orqaga qaytish: bitta tushunarli qadam (selektor/ogʻirlik/bayroqni oʻzgartirish) + tekshirish.

3) Rollbek-mexanizmlar inventari

3. 1 Trafik darajasi (eng tezkor)

Blue-Green: selektor/target guruhini barqaror versiyaga o’tkazish.
Canary: vaznni 0% ga tushiring va progressni muzlating.
Gateway/NGINX/Service Mesh: oldingi vazn/marshrutlarni qaytarish.

3. 2 Konveyer darajasi

Helm/Argo Rollouts:’abort/rollback’oldingi revizga.
GitOps: revert MR/commit manifest-repozitoriyada (boshqaruvchi qolganini bajaradi).

3. 3 Ilova/fichlar

Feature-flags/kill-switch: Xavfli yoʻlni bir zumda oʻchirish.
Tugmalar: oldingi snapshotga qaytish.

3. 4 Ma’lumotlar

Roll-forward migratsiyasi (afzal) + moslik.
Point-in-time recovery (PITR) va avariyalar uchun bekaplar.
Qaytariladigan harakatlar uchun kompensatsiya (Saga) va idempotency.

4) Pattern «expand → migrate → contract» (BD)

Orqaga qaytish xavfsiz bo’lishi uchun ma’lumotlar sxemasi eski va yangi versiyalarni yashashga imkon berishi kerak.

1. Expand - eski mantiqni buzmasdan yangi maydonlarni/indekslarni (nullable) qoʻshish.
2. Migrate - ikki tomonlama yozuv/o’qish, bek-fill, idempotency bilan fon job’lari.
3. Contract - Eski maydonlarni/kodni 100% chiqilgandan keyin olib tashlash.

💡 Qoida: Ilovaning chiqarilishi hech qachon tezkor migratsiyaga bogʻliq emas. Har qanday operatsiya xavfsiz ravishda toʻxtatilishi va qayta ishga tushirilishi mumkin.

5) SLO-geyting va avto-qaytish

Relizning har bir bosqichiga kirish metrlar bilan «qo’riqlanishi» kerak.

Texnik SLO: p95/p99 latentlik, 5xx-rate, saturation (CPU/Memory), error-budget burn.
Biznes-metrika: depozit/kassaut uchun CR, to’lovlarni rad etish, foyda foizi, KYC xatolari.

Avto-stop (mantiqiy misol):
  • 5xx > 0. 5% 10 daqiqa → rollback.
  • p95 ↑> 20% bazaviy → hold + tahlil.
  • PSP> 0 da xato roʻy berdi. 3 p.p. → rollback + to’lov yo’nalishini o’zgartirish.

6) Misollar: Kubernetes/Helm/Argo/NGINX

6. 1 Blue-Green (K8s Service selector)

yaml
Service points to "blue"; switch to green - change selector apiVersion: v1 kind: Service metadata: {name: app-svc}
spec:
selector: { app: app, version: blue }
ports: [{ port: 80, targetPort: 8080 }]

Orqaga qaytish = selektorni’blue’ga qaytarish.

6. 2 Canary (Istio VirtualService веса)

yaml http:
- route:
- destination: { host: app, subset: stable } # 100 weight: 100
- destination: { host: app, subset: canary } # 0 weight: 0

Orqaga qaytish = weight canary → 0, stable → 100.

6. 3 Argo Rollouts — abort

yaml kubectl argo rollouts abort app # stop and return to stableService

6. 4 Helm - taftish uchun rollback

bash helm history app -n prod helm rollback app 17 -n prod # revert to revision 17

6. 5 NGINX - upstream vazni

nginx upstream app {
server blue:8080 weight=100;
server green: 8080 weight = 0; # rollback - return 100/0
}

7) Feature-flags va kill-switch «parashyut» sifatida

Yuqori tavakkalchilik oqimlari uchun Kill-switch (depozitlar/to’lovlar/bonuslar) - majburiydir.
Stickiness: xesh-kalit orqali foydalanuvchilarga «variant» ni tayinlash - oldindan aytib bo’ladigan taqqoslashlar.
Fail-safe: bayroqlarning serveri mavjud boʻlmasa - xavfsiz defolt.

Misol (psevdo-kod):
ts const enabled = flags. bool("new_cashout_flow", false);
if (! enabled) return classicFlow () ;//instant rollback - disable the return newFlow () flag;

8) API va voqealar kontraktlari: qanday qilib «qaytarishni sindirmaslik»

Shartnomalarni versiya qiling (OpenAPI/gRPC/Yevro): yangi versiya maydonlarni qoʻshadi, eskisining semantikasini oʻzgartirmaydi.
Event-versioning:’type = v2’, isteʼmolchilar nomaʼlum maydonlarni eʼtiborsiz qoldirishlari shart.
Outbox + Idempotency: har qanday takrorlash xavfsiz, isteʼmolchi idempotentdir.

9) Kompensatsion tranzaksiyalar (Saga)

Agar «qattiq» qaytarish boʻlmasa (pul ketdi, xat yuborildi), compensation dan foydalaning:
  • Hisobdan chiqardik - kompensatsiya: qaytarish, stornlash, tuzatish yozuvi.
  • Kompensatsiya operatsiyalari va muvaffaqiyatli retrajlar jurnaliga yozish.
  • Har bir operatsiya uchun idempotent kalitlar.
Xabar namunasi (soddalashtirilgan):
json
{
"sagaId": "b7d2...",
"action": "withdraw. execute",
"idempotencyKey": "user123:withdraw:7845",
"compensation": "withdraw. refund"
}

10) Konfigi va sirlari: versiya sifatida orqaga qaytish

Konfiguralarni versiyali artefaktlar sifatida saqlang (semver/commit-sha).
Orqaga qaytish = oldingi versiyaga qaytish (GitOps revert), «qoʻllar bilan tuzatish» emas.
Sirlar - ombor orqali (KMS/Vault); rotatsiya va versiyalash chiqarilishga kiritilgan.

11) Qaytarish Runbook (minimal)

1. Progression pauza (canary/rollouts).
2. Trafikni qaytarish (og’irlik/selektor).
3. SLO/biznes metrik tekshiruvi asosiy chiziqqa qaytdi.
4. Fon job’larini barqarorlashtirish (zarurat bo’lganda migratsiyani/bek-fillni to’xtatish).
5. Hodisa va post-faktum: artefaktlar (loglar/treyslar/metriklar), gipotezalar, tuzatishlar.
6. Tozalash: bayroqlarni yopish, qolgan kodni olib tashlash, jadvalni qaytarish.

12) Avtomatik himoya siyosati

Tasvirlar uchun’latest’va mutabel teglarni taqiqlash.
Admission-control: faqat imzolangan artefaktlar.
CI-darvoza: SAST/SCA/Policy-checks reklama uchun yashil bo’lishi kerak.
Freze oynalar: xavf davrlarida reliz/ogʻirlikni taqiqlash> X%.

13) Tez-tez anti-patternlar

Mos kelish o’rniga DDL-pastga «haydash» - uzoq blokirovka/oddiy.
Idempotency va backfillsiz «peshonaga» tezkor migratsiyalar.
«Yetkazib berish» va «qoʻshish» ni aralashtirish - trafikni tezda qaytarib boʻlmaydi.
Auditsiz prod-konfigidagi qo’lda tuzatishlar.
To’lovlar/xulosalarda kill-switch yo’qligi.
Prod uchun artefaktni qayta yig’ish («build once - run many» buzilishi).
Yagona qaytarish tugmasi/tugallanmagan runbook mavjud emas.

14) Joriy etish chek-varaqasi (0-45 kun)

0-10 kun

Asosiy xizmatlarda Blue-Green/Canary dasturini yoqish.
’latest’ ni taqiqlash, rasmlar imzosi va Helm/Argo tarixini kiritish.
SLO taxtalarini ulash (latency, 5xx, asosiy biznes signallari).

11-25 kun

Xavf-flow uchun kill-switchni amalga oshirish.
DB migratsiyasini expand-migrate-contract + idempotency ga oʻtkazish.
SLO (Argo AnalysisTemplate/alertlar) boʻyicha avto-stop/rollback qoʻshish.

26-45 kun

Config (GitOps) ni MR-revert orqali qaytarish.
Runbook’game-day’da (hodisa va orqaga qaytish simulyatsiyasi) aylantiriladi.
Saga kompensatsiyalarini «pastga» qaytarib boʻlmaydigan joylarga kiritish.

15) Etuklik metrikasi

MTTR orqaga qaytish: maqsad <5 min.
% relizlar, bu yerda qaytish = marshrut/bayroqni almashtirish (qayta yigʻmasdan)> 90%.
expand-migrate-contract sxemasi bo’yicha migratsiya ulushi> 90%.
Kill-switch xizmatlarini bayroqlar bilan qoplash> 95%.
Nomuvofiq sxemalar/kontraktlar tufayli sodir bo’lgan hodisalar soni → 0.

16) Ilovalar: mini-shablonlar

Argo AnalysisTemplate: 5xx

yaml apiVersion: argoproj. io/v1alpha1 kind: AnalysisTemplate metadata: { name: guard-5xx }
spec:
metrics:
- name: http_5xx_rate interval: 1m successCondition: result < 0. 005 provider:
prometheus:
address: http://prometheus. monitoring:9090 query:
sum(rate(http_requests_total{app="app",status=~"5.."}[5m])) /
sum(rate(http_requests_total{app="app"}[5m]))

Kubernetes: Deployment tezkor orqaga qaytish

bash kubectl rollout undo deploy/app -n prod

Helm: atom relizi

bash helm upgrade --install app chart/ \
--atomic \
--timeout 5m \
--set image. tag=v1. 9. 3

NGINX: kanareykalar uchun «kran»

nginx map $cookie_canary $weight {
default 0;
"~ on" 10; # enable 10% by cookie
}

17) Xulosa

Ishonchli orqaga qaytish - bu «o’t o’chirish tugmasi» emas, balki arxitektura xususiyati: immutable artefaktlar, etkazib berish va qo’shish taqsimoti, ma’lumotlarning mos sxemasi, fich-bayroqlar va SLO-geyting. Relizlarni atom bilan tuzing, runbook-ni mashq qiling va himoya darvozalarini avtomatlashtiring - va har qanday reliz biznes va foydalanuvchilar uchun og’riqsiz daqiqalarda qaytariladi.

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.