Sıfır-Downtime yerləşdirilməsi
(Bölmə: Memarlıq və Protokollar)
1) Zero-Downtime nədir və niyə lazımdır
Zero-Downtime (ZDT) istifadəçilər üçün əlçatmaz və sorğuları itirmədən tətbiqin yeni versiyalarını buraxmaq üçün bir yoldur. Məqsədlər:- Müştərilər və inteqrasiyalar üçün sıfır asandır.
- Proqnozlaşdırıla bilən buraxılışlar, sürətli geri dönüş və idarə edilə bilən risk.
- Razılaşmalar çərçivəsində SLO/SLI (gizli, səhv, əlçatanlıq) saxlamaq.
ZDT-nin açarı bir «sehrli» texnika deyil, çatdırılma nümunələrinin birləşməsi, məlumatların uyğunluğu və səriştəli trafik marşrutudur.
2) Zero-Downtime əsas prinsipləri
1. Versiyaların uyğunluğu: Yeni və köhnə versiyalar eyni zamanda trafik və məlumatları düzgün emal etməlidir.
2. Əməliyyatların idempotentliyi: təkrar emal vəziyyəti pozmamalıdır.
3. Zərif tamamlama (graceful shutdown) və drenaj birləşmələri.
4. Səhhətin addım-addım yoxlanılması: readiness/liveness testlər, sağlamlıq end-pointlər.
5. Birinci dərəcəli vətəndaş kimi geri dönüş: rollback hotfix daha asan və daha sürətli.
6. Müşahidə by design: buraxılış etiketləri, vahid daşbordlar, SLO-da alertlər.
7. Avtomatlaşdırma: buraxılış və geri qaytarma ssenariləri - kod, əl təlimatları deyil.
3) Downtime olmadan çatdırılma nümunələri
3. 1 Rolling Update
Tədricən köhnə versiyanın bəzi instansiyalarını trafikdən çıxarırıq, yenisinə yeniləyərək hovuza qaytarırıq.
Üstünlüklər: infrastruktur baxımından qənaətcil, sadəcə k8s/ASG.
Mənfi cəhətləri: bir müddət klaster eyni anda iki versiyası ilə işləyir (version skew).
3. 2 Blue-Green
İki tam prod yığın: aktiv (Mavi) və namizəd (Yaşıl). Trafik keçid - atom flip.
Üstünlüklər: ani geri dönüş, təmiz izolyasiya.
Dezavantajları: ↑ infrastruktur xərcləri, stateful ilə daha çətin.
3. 3 Canary/Proqressiv rollout
Metrik geytlərlə yeni versiyada trafikin kiçik bir hissəsini (1-5-10-25-50-100%) veririk.
Üstünlüklər: minimum blast radius, data-driven həllər.
Mənfi cəhətləri: yetkin müşahidə və intellektual marşrutlaşdırma lazımdır.
3. 4 Shadow traffic / Dark launch
Yeni versiyada real sorğuları əks etdirin (istifadəçiyə cavab vermədən) və ya metrikləri toplamaq üçün gizli çalışdırın.
Üstünlüklər: problemlərin erkən aşkarlanması.
Mənfi cəhətləri: asılılığın ikiqat yükü, yan təsirlərə nəzarət etmək lazımdır.
4) Trafik və əlaqələrin idarə edilməsi
4. 1 Readiness/Liveness
Liveness orkestrinə «məni yenidən işə salın» deyir.
Readiness - «trafiki yönəltmə, mən hələ hazır deyiləm».
Düzgün readiness-məntiq və vaxt olmadan buraxmaq olmaz.
4. 2 Drenaj birləşmələri (Connection Draining)
Hovuzdan instansiya çıxarılmadan əvvəl:- yeni bağlantıları qəbul etməyi dayandırırıq,
- aktiv başa gözləyirik,
- Taymaut boyunca «asılmış» kəsilir.
4. 3 Sticky sessiyaları və L7 səviyyəli marşrutlaşdırma
Sticky stateful ssenarilərində faydalıdır, lakin yük balansını çətinləşdirir.
L7 qaydaları (yol, başlıq, cooke, API versiyaları) canary/ring üçün əlverişlidir.
4. 4 Uzunmüddətli birləşmələr
WebSocket/gRPC streaming: yeniləmədən əvvəl «GOAWAY» siqnalını açın.
Müştərilərin axınlarını və backoff retrajlarını asmaq üçün windows planlaşdırın.
5) Data və miqrasiya DB uyğunluğu
5. 1 Expand-Migrate-Contract
1. Expand: köhnə versiyasını qırmadan yeni sütunlar/indekslər/cədvəllər əlavə edin.
2. Migrate: verilənləri fon və idempotent (batches, check-point) ilə köçürürük.
3. Contract: köhnə yalnız sabitləşdikdən sonra silinir.
5. 2 Təcrübə
Buraxılış pəncərəsində eksklüziv DDL kilidlərindən çəkinin.
API/hadisə müqavilələrini (schema registry, CDC) versiyası.
Ağır miqrasiyalar üçün - onlayn alətlər, replikalar, mərhələli keçid.
İki dövrəli qeyd (dual-write) yalnız duplication və idempotent istehlakçıları ilə.
Outbox/Inbox növbələr vasitəsilə etibarlı inteqrasiya üçün.
6) Keşlər, sessiyalar və arxa plan tapşırıqları
Sessiyalar və cache - xarici (Redis/Memcached), belə ki, versiyalar bir-birini əvəz edə bilər.
Hovuza daxil edilməzdən əvvəl cache/jit/temp indekslərini qızdırın.
Arxa xətləri versiyaya görə ayırın və ya yarışlardan qaçmaq üçün liderlikdən istifadə edin.
7) SLO ilə müşahidə və geytalar
Golden signals: gecikmə p95/p99, error rate, RPS, saturation, lag növbələri.
Biznes SLA: avtorizasiyalar, konvertasiyalar, uğurlu ödənişlər, huni addımlarından imtina.
Geytalar: rollout yalnız canary ≤ baseline + deqradasiya həddi olduqda irəliləyir və error budget yanmır.
8) Təhlükəsiz tamamlama və geri dönüş
Geri dönüş eyni paylayndır, yalnız əks istiqamətdə: sabit komandalar, «əl kraft» deyil.
Blue-green üçün - flip back; canary üçün - 0% -ə qədər kilo və ya əvvəlki sabit addım.
Məlumatlar: kompensasiya əməliyyatları, təkrar emal, hadisələrin təkrarlanması.
9) Sıfır-Downtime yoxlama vərəqləri
Buraxılışdan əvvəl
- Bir imzalı artefakt (immutable), SBOM və asılılıq testi toplanmışdır.
- Readiness/liveness həyata və sınaqdan keçirilmişdir.
- Expand rejimində miqrasiya planı, geri dönüş təsdiqləndi.
- Yeni versiya üçün dashbordlar və alertlər hazırdır, buraxılış etiketləri atılır.
- Geri dönüş staging/pre-prod.
Buraxılış zamanı
- Drenaj bağlantıları aktiv, vaxtlar adekvat.
- Trafik tədricən tərcümə olunur (canary/ring) və ya flip (blue-green).
- Metriklər baseline ilə müqayisə olunur, geytlərin astanaları müşahidə olunur.
Buraxıldıqdan sonra
- N saat post-monitorinq, heç bir hadisə.
- Contract miqrasiyaları tamamlandı, müvəqqəti bayraqlar/marşrutlar silindi.
- Retrospektiv, playbook yeniləmə.
10) Anti-nümunələr
Drenaj və readiness olmadan Recreate deploy ⇒ qırılma sorğular.
Hazırlıqsız DDL ⇒ prime-time kilidləri və zaman.
Uyğunsuz sxemlərin xidmət versiyaları arasında qarışdırılması.
Emallayıcılarda və işçilərdə idempotentliyin olmaması.
Baseline ilə heç bir geyt və müqayisə etmədən «hissi çıxarın».
Uzun DNS-TTL mavi-yaşıl, buna görə flip saatlarla davam edir.
rolling/canary-də instansiya yaddaşında lokal sessiyalar/cache.
11) Tətbiq ssenariləri
11. 1 Kubernetes (rolling + canary)
Deployment с `maxUnavailable=0`, `maxSurge=25%`.
Readiness istiləşməni gözləyir (cache initiative, migration minor).
weighted routing ilə xidmət mesh/Ingress (1-5-10-25-50-100%).
Alertlər: p95, 5xx, növbə, iş hunisi.
11. Buludda 2 Blue-Green
Balanslaşdırıcıdan sonra iki yığın: 'blue. example. com` и `green. example. com`.
Isıtma yaşıl, smoke/regress, sonra listener/route swap (və ya aşağı TTL ilə DNS keçid).
Problemlərdə - ani flip back.
11. 3 Stateful xidməti
Məlumat replikaları + onlayn miqrasiya; validasiya ilə ikiqat oxu.
Fon jobları «liderlik» versiyasına və ya bölünmüş növbələrə görə köçürülür.
Instansiyadan kənar sessiyalar/cache; sticky yalnız müvəqqəti daxildir.
12) Fayllar və müştəri proqramları
Yeni xüsusiyyətlər bayraqlarla aktivləşdirilir (seqmentlər: işçilər → beta → hamısı).
Mobil/masaüstü müştərilər üçün protokolun uyğunluq sərhədlərini və köhnə versiyaların ömrünü nəzərə alın (deprecation policy, server-side fallback).
13) Performans və dəyəri
Rolling daha ucuz, lakin diqqətli uyğunluq tələb edir.
Blue-Green buraxılış zamanı daha bahalıdır, lakin geri dönüş ani olur.
Canary riskləri və dəyəri balanslaşdırır, lakin güclü müşahidə tələb edir.
Ephemeral preview və stendlərin avtomatik təmizlənməsi ilə qənaət edin.
14) Minimum referans paypline ZDT
1. Build: vahid artefakt, imza, SBOM.
2. Test: unit/integration/contract + security.
3. Staging: smoke, yük, expand rejimində miqrasiya, geri yoxlama.
4. Prod: shadow → canary (geyta) və ya mavi-yaşıl flip.
5. Post-deploy: müşahidə, contract-cleanup, retro.
15) Qısa xülasə
Zero-Downtime intizamdır: uyğun versiyalar + düzgün marşrut + idarə olunan miqrasiyalar + müşahidə və sürətli geri dönüş. Kontekstə bir model seçin (rolling, mavi-yaşıl, canary), SLO ilə geytləri avtomatlaşdırın, məlumatları idempotent saxlayın - və buraxılışlar etibarlı rutin prosesə çevrilərək hadisə olmaqdan çıxacaq.