Sıfır-Downtime ýerleşdirmek
(Bölüm: Binagärlik we teswirnamalar)
1) Zero-Downtime näme we näme üçin zerur?
Zero-Downtime (ZDT) ulanyjylar üçin hyzmat elýeterli bolmazdan we haýyşlary ýitirmezden programmanyň täze wersiýalaryny çykarmagyň usulydyr. Maksatlar:- Müşderiler we integrasiýa üçin nol aňsat.
- Öňünden aýdylýan goýberişler, çalt yza gaýdyp gelmek we dolandyrylýan töwekgelçilik.
- Şertnamalaryň çäginde SLO/SLI (gizlinlik, ýalňyşlyklar, elýeterlilik) saklamak.
ZDT açary bir "jadyly" enjam däl-de, eltip bermek patternleriniň, maglumatlaryň laýyklygynyň we traffigiň başarnykly ugrukdyrylmagynyň utgaşmasydyr.
2) Zero-Downtime esasy ýörelgeleri
1. Wersiýalaryň laýyklygy: täze we köne wersiýalar bir wagtyň özünde traffigi we maglumatlary dogry işlemeli.
2. Amallaryň duýgurlygy: gaýtadan işlemek ýagdaýy bozmaly däldir.
3. Birleşmeleriň ajaýyp tamamlanmagy (graceful shutdown) we drenaji.
4. Saglygyň ädimme-ädim barlagy: readiness/liveness synaglary, health-endpointler.
5. Birinji derejeli raýat hökmünde yza gaýdyp gelmek: rollback hotfix-den has aňsat we çalt.
6. Syn edilmegi by design: reliz bellikleri, ýekeje daşbordlar, SLO boýunça aladalar.
7. Awtomatlaşdyryş: goýbermegiň we yzyna gaýtarmagyň ssenarileri - el bilen görkezmeler däl-de, kod.
3) Arzasyz eltip bermek patternleri
3. 1 Rolling Update
Kem-kemden köne wersiýalaryň bir bölegini traffigiň aşagyndan çykarýarys, täzesine täzeleýäris we howuza gaýtarýarys.
Artykmaçlyklary: infrastruktura taýdan tygşytly, diňe k8s/ASG.
Minuslar: klaster bir wagtyň özünde iki wersiýa (version skew) bilen işleýär.
3. 2 Blue-Green
Iki sany doly prod-stek: aktiw (Blue) we dalaşgär (Green). Traffigi üýtgetmek - atom flip.
Plýuslar: derrew yza gaýdyp gelmek, arassa izolýasiýa.
Minuslar: ↑ infrastruktura üçin çykdajylar, stateful bilen has kyn.
3. 3 Kanary/Progressiw rollout
Traffigiň az bölegini (1-5-10-25-50-100%) metrikler boýunça geýtler bilen täze wersiýa berýäris.
Pluslary: iň az blast radius, data-driven çözgütleri.
Minuslar: kämillik ýaşyna ýeten gözegçilik we akylly marşrut gerek.
3. 4 Shadow traffic / Dark launch
Hakyky haýyşlary täze wersiýa aýnalarys (ulanyja jogap bermezden) ýa-da metrikleri ýygnamak üçin gizlin işe girizýäris.
Artykmaçlyklary: problemalary ir ýüze çykarmak.
Minuslar: endiklere goşa ýük, zyýanly täsirlere gözegçilik etmek zerur.
4) Traffigi we birleşmeleri dolandyrmak
4. 1 Readiness/Liveness
Liveness orkestrine "meni täzeden başla" diýýär.
Readiness - "traffigi ugrukdyrma, men entek taýyn däl".
Dogry readiness-logika we wagt geçirmezden çykaryp bolmaz.
4. 2 Baglanyşyk drenajy
Instant puldan çykarylmazdan ozal:- täze baglanyşyklary kabul etmegi bes edýäris,
- işjeň gutarmagyna garaşýarys,
- Taýmaut boýunça "asylanlary" kesýäris.
4. 3 Sticky sessiýalary we L7 derejesini ugrukdyrmak
Sticky stateful-ssenarilerde peýdalydyr, ýöne ýük balansyny kynlaşdyrýar.
L7 düzgünleri (ýolda, sözbaşy, kuke, API wersiýalary) canary/ring üçin amatlydyr.
4. 4 Uzak möhletli baglanyşyklar
WebSocket/gRPC streaming: täzelenmezden ozal "GOAWAY" signalyny açyň.
Müşderileriň akymlaryndan we arka taraplaryndan geçmek üçin windows meýilleşdiriň.
5) Maglumatlaryň we DB migrasiýasynyň laýyklygy
5. 1 Expand-Migrate-Contract
1. Expand: Köne wersiýany bozmazdan täze sütünleri/indeksleri/tablisalary goşuň.
2. Migrate: maglumatlary fon we idempotent (batçi, barlag nokatlary) bilen geçirýäris.
3. Contract: Könesini diňe durnuklaşandan soň aýyrýarys.
5. 2 Amallar
Goýberiş penjiresinde aýratyn DDL lokmalaryndan gaça duruň.
API/waka şertnamalaryny wersiýa ediň (shema registry, CDC).
Agyr migrasiýa üçin - onlaýn gurallary, replikalary, tapgyrlaýyn geçişleri.
Iki konturly ýazgy (dual-write) diňe duplikasiýa we idempotent sarp edijiler bilen.
Nobatlar arkaly ygtybarly integrasiýa üçin Outbox/Inbox.
6) Keşler, sessiýalar we fon wezipeleri
Sessiýalar we kesh - wersiýalary çalyşmak üçin daşarky (Redis/Memcached).
Howuza girmezden ozal keş/jit/temperatura indekslerini gyzdyrmak.
Fon nobatlaryny wersiýa görä bölüň ýa-da ýaryşlardan gaça durmak üçin liderligi ulanyň.
7) SLO boýunça gözegçilik we geýt
Golden signals: latentlik p95/p99, error rate, RPS, saturation, lag nobatlar.
Business-SLA: awtorizasiýa, konwersiýa, üstünlikli tölegler, huniniň ädimlerinden ýüz öwürmek.
Geýtlar: rollout diňe canary ≤ baseline + zaýalanma bosagasy we error budget ýanmasa öňe gidýär.
8) Howpsuz tamamlamak we yzyna gaýtarmak
Yza gaýdyp gelmek şol bir paýpline, diňe ters tarapa: kesgitlenen buýruklar, "el bilen ýasamak" däl.
Blue-green üçin - flip back; canary üçin - 0% ýa-da öňki durnukly ädim.
Maglumatlar: öwezini dolýan amallar, gaýtadan işlemek, wakalaryň duplikasiýasy.
9) Çek sahypalary Zero-Downtime
Çykmazdan ozal
- Bir gol çekilen artefakt (immutable), SBOM we endikleri barlamak ýygnaldy.
- Readiness/liveness amala aşyryldy we synagdan geçirildi.
- Göçmek meýilnamasy expand re modeiminde, yzyna dolanmak mümkinçiligi tassyklandy.
- Daşbordlar we alertler täze wersiýa üçin taýýar, goýberiş bellikleri zyňylýar.
- Yza gaýdyp barmak staging/pre-prod.
Goýberilende
- Baglanyşyklaryň drenaji açylýar, wagt ýeterlik.
- Ulag kem-kemden terjime edilýär (canary/ring) ýa-da flip (gök-ýaşyl).
- Metrikler baseline bilen deňeşdirilýär, geýtleriň bosagalary berjaý edilýär.
Çykarylandan soň
- N sagatdan soňky gözegçilik, hadysalar ýok.
- Contract göçmeleri tamamlandy, wagtlaýyn baýdaklar/ugurlar aýryldy.
- Retrospektiv, oýun kitaplaryny täzelemek.
10) Anti-patternler
Drenajsyz recreate-deploy we readiness ⇒ Soraglaryň kesilmegi.
Taýynlanmadyk DDL ⇒ prime-time blokirlemeler we wagtlar.
Hyzmatyň wersiýalarynyň arasynda gabat gelmeýän shemalary garyşdyrmak.
Prosessorlarda we workerlerde idempotentligiň ýoklugy.
Geýtsiz we baseline bilen deňeşdirmezden "Duýgulara görä çykmak".
Uzyn DNS-TTL gök ýaşyl, şonuň üçin flip birnäçe sagatlap dowam edýär.
rolling/canary.
11) Durmuşa geçirmegiň ssenariýalary
11. 1 Kubernetes (rolling + canary)
Deployment с `maxUnavailable=0`, `maxSurge=25%`.
Readiness gyzmagyna garaşýar (keş başlangyjy, minor göçmegi).
Hyzmat-mesh/Ingress bilen weighted routing (1-5-10-25-50-100%).
Alertler: p95, 5xx, nobat, iş hunisi.
11. Bulutda 2 Gök-ýaşyl
Deňagramlaýjydan soň iki stek: 'blue. example. com` и `green. example. com`.
Green, smoke/regress, soňra listener/route swap (ýa-da pes TTL bilen DNS geçiş).
Meselelerde - derrew flip back.
11. 3 Stateful-service
Maglumatlaryň göçürmeleri + onlaýn-migrasiýa; iki gezek okamak.
Fon joblary wersiýanyň "ýolbaşçylygy" ýa-da bölünen nobatlar boýunça geçirilýär.
Sessiýa/kesh; sticky diňe wagtlaýyn açylýar.
12) Fiçeflaglar we müşderi programmalary
Täze çyzgylar baýdaklar bilen işjeňleşdirilýär (segmentler: işgärler → beta → hemmesi).
Ykjam/desktop-müşderiler üçin teswirnamanyň laýyklyk çäklerini we köne wersiýalaryň (deprecation policy, server-side fallback) ýaşamagyny göz öňünde tutuň.
13) Öndürijiligi we bahasy
Rolling arzan, ýöne seresaplylyk bilen gabat gelmegini talap edýär.
"Blue-Green" çykmak üçin has gymmat, ýöne derrew yza gaýdyp gelýär.
Canary töwekgelçilikleri we bahalary deňleşdirýär, ýöne güýçli syn edilmegini talap edýär.
Ephemeral-prevyu we stendleri awto-arassalamak arkaly tygşytlaň.
14) Iň pes salgylanma paýlaýjysy ZDT
1. Build: ýekeje artefakt, gol, SBOM.
2. Test: unit/integration/contract + security.
3. Staging: smoke, ýük, expand re modeiminde göçmek, yza çekilişi barlamak.
4. Prod: shadow → canary (geýt) ýa-da blue-green flip.
5. Post-deploy: gözegçilik, contract-cleanup, retro.
15) Gysgaça rezýume
Zero-Downtime - bu düzgün-nyzam: gabat gelýän wersiýalar + dogry marşrut + dolandyrylýan migrasiýa + gözegçilik we çalt yza gaýdyp gelmek. Kontekste (rolling, blue-green, canary) nagşy saýlaň, SLO-da geýtleri awtomatlaşdyryň, maglumatlary idempotent saklaň - we goýberilişler ygtybarly adaty prosese öwrülip, waka bolmagyny bes eder.