Ekotizimni downtimsiz yangilash
(Bo’lim: Ekotizim va Tarmoq)
1) Zero-downtime maqsadi va prinsiplari
Zero-downtime-yangilanishlar kodlar, konfiguratsiyalar, ma’lumotlar sxemalari va protokollar o’zgarganda tarmoq va mahsulotlarning uzluksiz ishlashini ta’minlaydi. Asosiy tamoyillar:- Kontraktlar chegarasida oldinga/orqaga moslik (backward/forward).
- «Katta almashtirish» o’rniga bosqichma-bosqich (progressive delivery).
- Kuzatish va qaytaruvchanlik: metrika, trastirovka, tezkor orqaga qaytish.
- Tarmoq va to’lov oqimlari uchun idempotentlik va xavfsiz retrajlar.
- Nosozliklar izolyatsiyasi: cell-arxitektura, circuit-breakers, fan-aut limitlari.
2) Dauntaymsiz reliz strategiyalari
Blue-Green - ikkita bir xil stek (Blue = prod, Green = new). Trafik bir zumda orqaga qaytish imkoniyati bilan muvozanatlash darajasida atomar tarzda o’tkaziladi.
Canary - SLO-geytlar bilan bosqichma-bosqich trafik ulushi (1% → 5% → 20% → 50% → 100%).
Rolling - pochtani tayyor ekanligini tekshirish (readiness) va ulanishlarni drenaj qilish bilan uzelbop yangilash.
Shadow/Traffic Mirroring - javoblarga ta’sir qilmasdan so’rovlarni yangi versiyaga aks ettirish.
Feature Flags - oʻzgarmas API (gradual rollout) ustiga biznes fich almashtirish.
Dark Launch - telemetriya va profillash uchun yashirin mantiq tarmoqlarini yoqish.
Tavsiya: tanqidiy xizmatlar uchun - canary + rolling + feature flags kombinatsiyasi; shlyuzlar va API uchun - qisqa almashtiriladigan blue-green.
3) Kontrakt muvofiqligi (API/hodisa/protokol)
API: URI/sarlavhalar bo’yicha versiyalash; maydonlarni qoʻshish mumkin, olib tashlash/qayta nomlash faqat «deprekeyt-oyna» orqali amalga oshiriladi.
Hodisalar (event-bus): «faqat qoʻshish»; kalitlar o’zgarmas; yangi turlari - yangi mavzular/versiyalar kabi.
Sxemalar (Euro/JSON-Schema/Protobuf): sxema-reyestr, muvofiqlik’BACKWARD’FULL’.
Tarmoq protokoli/P2R: version handshake va capability negotiation (uzellar qoʻllab-quvvatlanadigan versiyalar/fichlarni eʼlon qiladi).
Gateways: migratsiya davrida vN va vN + 1 (transcoding/field mapping) orasidagi adapterlar.
Deprekeyt siyosati (misol): e’lon → 90 kunlik ogohlantirish ≥ → «deprecated» bayrog’i → maydon/endpointni olib tashlash.
4) To’xtovsiz ma’lumotlar migratsiyasi (Expand → Migrate → Contract)
1. Expand - yangi tuzilmalar/indekslar/ustunlar (nullable/c defolt), ikki yozuv (dual-write) ni eski va yangi formatga qoʻshish.
2. Migrate - fon migratsiyasi, backfill, konsistentlik validatorlari; ikkala sxemani qoʻllab-quvvatlovchi adapter orqali oʻqish.
3. Contract - eski sxemaga oʻqish/yozishni oʻchirish, «deprekeyt oynasi» tugagandan soʻng texnik qarzni olib tashlash.
sql
-- Expand
ALTER TABLE payouts ADD COLUMN payout_ref TEXT NULL;
CREATE INDEX CONCURRENTLY ix_payouts_ref ON payouts(payout_ref);
-- Migrate (batch + idempotent)
UPDATE payouts SET payout_ref = concat('ref_', id) WHERE payout_ref IS NULL;
-- Contract (after compatibility window)
ALTER TABLE payouts ALTER COLUMN payout_ref SET NOT NULL;
Hodisalarning tranzaksiyaliligi: Outbox + CDC dan foydalaning.
5) Uzoq umr ko’radigan birikmalar va drenaj
Graceful shutdown: SIGTERM → yangi so’rovlarni qabul qilishni to’xtating →’readiness = fail’→ WebSocket/HTTP2/QUIC drenajini kuting → yoping.
Connection draining balanslovchida:’deregister _ delay’30-120 s, sticky-sessiyalar - IP orqali emas, balki tokenlar orqali.
Back-pressure: p99_latency koʻpayganda yangi jadvallarni cheklash.
6) SDK va mijozlarni versiyalash
SDK uchun SemVer; LTS filiali (masalan, 12 oy).
Policy: «kamida ikkita faol minor versiya»; versiyalar bo’yicha mijozlar ulushiga telemetriya; yangilash zarurligi to’g "risida avtomatik ogohlantirish.
Muhim oʻzgarishlar (security): muddatdan keyin eski versiyalarni shlyuz orqali oʻchirish uchun majburlangan bayroq.
7) Protokol va tarmoq uzellarini yangilash
Soft-fork: eski tugunlarni (capabilities) buzmasdan qoidalarni kengaytirish.
Hard-fork: oldindan e’lon qilingan oyna, ikki baravar validatsiya, «kanar validatorlari», «reorg/rollback» mojarolardan himoya qilish, faollashtirish uchun time-lock.
Kross-zanjirli apdeytlar: governance ko’priklari faollashtirish signallarini uzatadi; rassinxronizatsiya holatida - lokal circuit-breaker.
8) Konfiguratsiyalar va ma’lumotlar sifatidagi sirlar
Markazlashtirilgan config-service versiyalash, raqamli imzolar va qaytarish bilan.
Secrets rotation no duntaym: dual kalitlar (old/new), navbatma-navbat yoqish; KMS/PKI uchun nol nuqta.
Alohida storada feature-flags, kiritish/oʻchirish auditi.
9) Pipeline reliz va avtomatik «geytlar»
Стадии: build → unit → security scan → e2e/stage → shadow → canary → 100%.
Geyt-to’xtash:- Error-budget burn-rate, p95/p99 latency, error-rate, success-rate hodisalar/to’lovlarning kamayishi, dead-letter navbatlarining o’sishi.
- Har qanday bosqichda SLO buzilganda avto-qaytish.
yaml release:
strategy: canary steps:
- name: shadow traffic_mirror: 5%
gates: [no_data_loss, no_pii_leak]
- name: canary_1 traffic: 1%
gates: [error_rate<0. 2%, p99<400ms]
- name: canary_2 traffic: 10%
gates: [slo_ok_1h, zero_deadletters]
- name: rollout traffic: 100%
gates: [stability_6h]
- name: bake duration: 24h action: finalize_or_rollback
10) Relizlar uchun kuzatish va SLO
Asosiy SLI:- endpointlar bo’yicha p95/p99 latency; error-rate (5xx + halokatli 4xx); voqealar success-rate; retraylar ulushi; navbatlar oralig’i; P2Pdagi «relay» ulushi; versiyalari bo’yicha mijozlar ulushi.
- p99 API ≤ 400 ms; error-rate ≤ 0. 2%; success-rate hodisalar ≥ 99. 5%; lag navbati ≤ 2 s; MTTR orqaga qaytish ≤ 15 daqiqa
- Reliz dashbordlari: «oldin/keyin» taqqoslash, kanareya grafalari, qaramlik xaritasi (service map), burn-rate alertlari 1 soat/6 soat.
11) Orqaga qaytish va «kill-switch»
Avto-otkat: so’nggi «yaxshi» artefaktlar va konfiguralarni saqlang; «1-tugmachali» rollback (Blue ← Green).
Partial rollback: Binar saqlanganda ficheflag yangi mantiqni oʻchiradi.
Data rollback: faqat «read-paths» uchun; «write-paths» uchun - himoyalangan migratsiyalar (hech qachon eski ustunlarni oynaning oxirigacha olib tashlamang).
Kill-switch: beqaror quyi tizimni oʻchirish uchun markazlashtirilgan bayroq.
12) Bo’sh turmasdan test o’tkazish
Mijozlar barqarorligiga qarshi kontrakt testlari (consumer-driven).
Mosligi tekshirilgan sxema testlari (schema-compat).
Steyjingdagi Chaos-testlar:% uzellar/hududlarning ishdan chiqishi, DHT/TURN/KMS/DNS degradatsiyasi, «retray bo’roni».
Yuklash/rekmarket testlari: kanareya mintaqalari va «issiq» yo’nalishlar.
13) Kommunikatsiyalar va komplayens reglamentlari
Reliz notalari: nima o’zgarishi, ta’siri, deprekeyt oynalari/muddatlari, sheriklar uchun harakatlar.
Noxush hodisalarga javoblar SLA: MTTA ≤ 5 min, birinchi maqom yangilanishi ≤ 15 min, post-mortem ≤ 72 soat.
Izlar auditi: barcha -o’zgarishlar va relizlarni buyurtmanomalar/prouzallarga bog’lash, artefaktlar imzolari.
14) Maxsus holatlar
To’lov/moliyaviy oqimlar: qat’iy idempotentlik, idempotency-key bo’yicha dedup, outbox + CDC, faqat «buzmaydigan» migratsiya.
WebSocket/oqimlar: protokolning handshake versiyasi, xulosa bilan rekonnekt (resume tokens).
Cache/edge:’stale-while-revalidate’, cachning ikki xil versiyasi, reliz davrida TTL gigiyenasi.
Mobil mijozlar: storlarda bosqichma-bosqich rollout, security-sonlarda majburiy yangilanish.
15) Chek-varaq zero-downtime
1. Kontrakt muvofiqligi va sxema-reyestr sozlangan.
2. Expand → Migrate → Contract tavsiflangan va avtomatlashtirilgan.
3. Balance/Ingress blue-green va drenaj birikmalarini qo’llab-quvvatlaydi.
4. SLO-geytlar va avto-qaytish bilan Canary-paypline.
5. Feature-flags va kill-switch 24/7 mavjud.
6. Outbox + CDC va idempotentlik barcha write-yoʻllar uchun yoqilgan.
7. «Salomatlik-reliz» dashbordlari va burn-rate alertlari faol.
8. Aloqalar va deprekeyt siyosati hamkorlarga oldindan eʼlon qilindi.
9. Har haftalik qaytish mashqlari; har chorakda chaos-day.
16) Glossariy
Progressive delivery - xavflar nazorati bilan bosqichma-bosqich fich chiqarish.
Schema registry - muvofiqlik siyosati bilan sxemalar versiyalarini saqlash.
Outbox/CDC - tranzaksiyalardagi voqealarni kafolatlangan nashr qilish namunasi.
Blue-Green - trafikni atom bilan almashtiradigan parallel oqim.
Canary - yangi versiyada trafikning ulushini bosqichma-bosqich oshirish.
Graceful shutdown/draining - aktiv ulanishlarning tugashi.
Xulosa: nol dauntaym - bu bitta hiyla emas, balki tizim: kontraktlar, sxemalarning muvofiqligi, bosqichma-bosqich reliz strategiyalari, kuzatuv, xavfsiz migratsiya va kafolatlangan orqaga qaytish. Ushbu freymvorga amal qilib, ekotizim foydalanuvchilar va hamkorlar uchun tez, oldindan aytib bo’ladigan va og’riqsiz yangilanadi.