Rollback strategiýalary we ýadro çykaryşlary
Rollback strategiýalary we atom goýberişleri
1) Näme üçin çalt yzyna gaýtarylmaly?
Ajaýyp synag örtüginde-de önümiň ýalňyşlygyny kepillendirmeýär. Rollback, SLO/iş metrikasynyň ýa-da hadysanyň signaly boýunça ulgamyň öňki durnukly ýagdaýa dolandyrylýan gaýdyp gelmegidir. Maksatlar:- MTTR-i minutlara çenli gysgaldyň.
- Zyýan radiusyny çäklendirmek (täsir eden ulanyjylaryň/amallaryň iň az).
- Maglumatlaryň bitewiligini we şertnamalaryň laýyklygyny saklamak.
Açar: relizleri yza gaýdyp gelmek kiçi taslama däl-de, ujypsyz hereket ýaly gurmak.
2) "Atom goýberilişi" düşünjesi
Atom goýberilişi - haçan-da täze wersiýany/özüni alyp barşyny goşmak uzak wagtlap täsir etmezden bir atom operasiýasy bilen ýerine ýetirilip (we ýatyrylyp) bilner.
Atom elementleri:- Imutable artefakt (gol çekilen surat/paket).
- Wersion konfigleri (el bilen düzedişler däl-de, wersiýalary mahabatlandyrmak).
- "Eltip bermek" -den "goşmak" (marşrut/baýdaklar).
- Gabat gelýän maglumatlar shemasy (iki wersiýa hem bir wagtda ýaşap biler).
- Runbook yzyna gaýdyp gelmek: bir düşnükli ädim (selektoryň/agramyň/baýdagyň üýtgemegi) + barlamak.
3) Rollbek-mehanizmleriň enjamlary
3. 1 Traffik derejesi (iň çalt)
Blue-Green: selektor/maksat toparyny durnukly wersiýa geçiriň.
Canary: Agramy 0% -e çenli peseltmek we ösüşi doňdurmak.
Gateway/NGINX/Service Mesh: öňki agram/marşrutlary yzyna gaýtarmak.
3. 2 Konweýer derejesi
Helm/Argo Rollouts: 'abort/rollback'.
GitOps: revert MR/commit.
3. 3 Goşundy/fiçalar
Feature-flags/kill-switch: töwekgelçilikli ýoly derrew öçüriň.
Toggle konfigurasiýalary: öňki -snapshot-a gaýdyp gelmek.
3. 4 Maglumatlar
Göçmegiň roll-forward (ileri tutulýar) + gabat gelmek.
Point-in-time recovery (PITR) we awariýa üçin ekaplar.
Yzyna gaýtaryp boljak hereketler üçin kompensasiýa (Saga) we idempotency.
4) Pattern "expand → migrate → contract" (BD)
Yza gaýdyp gelmek howpsuz bolar ýaly, maglumatlar shemasy köne we täze wersiýalary bilelikde ýaşamaga mümkinçilik bermeli.
1. Expand - köne logikany bozman täze meýdanlar/indeksler (nullable) goşmak.
2. Migrate - goşa ýazgy/okamak, arka fill, idempotency bilen fon job's.
3. Contract - 100% çykandan we penjire saklanandan soň köne meýdanlary/kody aýyryň.
5) SLO-geýting we awto-yza gaýdyp gelmek
Goýberilişiň her basgançagyna giriş metrikler bilen "goralmalydyr".
Tehniki SLO: p95/p99 latentlik, 5xx-rate, saturation (CPU/Memory), error-budget burn.
Iş metrikleri: Depozit/kassaut üçin CR, tölegden ýüz öwürmek, girdeji göterimi, KYC ýalňyşlyklary.
- 5xx > 0. 5% 10 minut → rollback.
- p95 ↑> 20% -den → hold + derňew.
- PSP hatasy> 0. 3 p.p. → rollback + töleg ugruny üýtgetmek.
6) Mysallar: 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 }]
Yzyna gaýtarmak = saýlaýjyny 'blue' -a gaýtarmak (atomiki, gaýtadan ýygnamazdan).
6. 2 Canary (Istio VirtualService веса)
yaml http:
- route:
- destination: { host: app, subset: stable } # 100 weight: 100
- destination: { host: app, subset: canary } # 0 weight: 0
Yza gaýdyp gelmek = weight canary → 0, stable → 100.
6. 3 Argo Rollouts — abort
yaml kubectl argo rollouts abort app # stop and return to stableService
6. 4 Helm - rewolýusiýa rollback
bash helm history app -n prod helm rollback app 17 -n prod # revert to revision 17
6. 5 NGINX - upstream agramy
nginx upstream app {
server blue:8080 weight=100;
server green: 8080 weight = 0; # rollback - return 100/0
}
7) "Paraşýut" hökmünde feature-flags we kill-switch
Ýokary töwekgelçilikli akymlar üçin Kill-switch (goýumlar/tölegler/bonuslar) hökmany.
Stickiness: ulanyjylara heş açary arkaly "warianty" bellemek - öňünden aýdyp boljak deňeşdirmeler.
Fail-safe: baýdak serweri elýeterli bolmasa - ygtybarly defolt.
ts const enabled = flags. bool("new_cashout_flow", false);
if (! enabled) return classicFlow () ;//instant rollback - disable the return newFlow () flag;
8) API şertnamalary we wakalar: nädip "yzyna gaýtarylmaly däl"
Şertnamalary wersiýa ediň (OpenAPI/gRPC/Euro): täze wersiýa meýdanlary goşýar, köne semantikany üýtgetmeýär.
Event-versioning: 'type = v2', sarp edijiler näbelli ýerleri äsgermezlik etmeli.
Outbox + Idempotency: Wakanyň islendik gaýtalanmagy howpsuz, sarp ediji - idempotentdir.
9) Öwezini dolmak amallary (Saga)
Ýagdaýyň "gaty" yzyna gaýtarylmagy ýok bolsa (pul gitdi, hat iberildi), compensation ulanyň:- Hasapdan çykardyk - öwezini dolmak: yzyna gaýtarmak, stornirlemek, düzediş ýazgysy.
- Öwezini dolmak amallarynyň we üstünlikli bolýança retraýanyň žurnalyna ýazylmak.
- Her amal üçin idempotent açarlary.
json
{
"sagaId": "b7d2...",
"action": "withdraw. execute",
"idempotencyKey": "user123:withdraw:7845",
"compensation": "withdraw. refund"
}
10) Gapma-garşylyklar we syrlar: wersiýa hökmünde yza gaýdyp gelmek
Konfigürleri wersiýalary bolan artefaktlar hökmünde saklaň (semver/commit-sha).
Yzyna gaýtarmak = öňki wersiýasyna gaýtarmak (GitOps revert), "el bilen düzetmek" däl.
Syrlar - ammar arkaly (KMS/Vault); rotasiýa we wersiýalaşdyrmak goýberilişe girizildi.
11) Yzyna gaýtarmak üçin Runbook (iň az)
1. Ösüş arakesmesi (canary/rollouts).
2. Traffigiň yzyna gaýtarylmagy (agram/selektor).
3. SLO/business-metrik barlagy esasy setire gaýdyp geldi.
4. Fon job 'olaryny durnuklaşdyrmak (zerur bolanda migrasiýany/arka doldurmagy duruzmak).
5. Waka we post-faktum: artefaktlar (loglar/söwda/metrikler), çaklamalar, düzediş.
6. Arassalamak: baýdaklary ýapyň, galan kody aýyryň, job 'ow meýilnamalaryny yzyna gaýtaryň.
12) Awtomatiki gorag syýasaty
Şekiller üçin 'latest' we üýtgeýän bellikleri gadagan etmek.
Admission-control: diňe gol çekilen artefaktlar.
CI-derwezeleri: SAST/SCA/Policy-checks mahabat üçin ýaşyl bolmaly.
Freeze penjireleri: töwekgelçilik döwürlerinde çykarylmaga/agramyna gadaganlyk> X%.
13) Ýygy-ýygydan anti-patternler
Gabat gelmek ýerine DDL-aşak bazasyny "togalamak" - uzyn gulplama/ýönekeý.
Idempotency we arka fillsiz "maňlaýyna" derrew göçmek.
"Eltip bermek" we "açmak" garyşdyrmak - traffigi çalt yzyna gaýtarmak mümkin däl.
Auditsiz prod-konfigada el bilen düzedişler.
Töleglerde/netijelerde kill-switch ýoklugy.
Prod üçin artefaktyň gaýtadan ýygnalmagy ("build once - run many" bozulmasy).
Hiç bir gaýdyş düwmesi/işlemedik runbook ýok.
14) Giriş çek-sanawy (0-45 gün)
0-10 gün
Esasy hyzmatlarda "Blue-Green/Canary" -ni açyň.
'latest' -i gadagan et, şekilleriň goluny we Helm/Argo taryhyny öz içine al.
SLO tagtalaryny birikdirmek (latency, 5xx, esasy iş signallary).
11-25 gün
Töwekgelçilik-flow üçin öldürmek-switch.
DB migrasiýalaryny expand-migrate-contract + idempotency geçiriň.
SLO (Argo AnalysisTemplate/alertler) boýunça awto-stop/rollback goşuň.
26-45 gün
Konfigürleri (GitOps) MR-revert arkaly yzyna gaýtaryp bermek.
Runbook programmasyny "game-day" -de (wakany simulýasiýa etmek we yzyna gaýtarmak).
Saga-öwezini dolmagy "aşak" yzyna gaýtaryp bolmaýan ýerlere giriziň.
15) Kämillik ölçegleri
MTTR yza gaýdyp gelmek: maksat <5 minut.
% relizler, bu ýerde yza gaýdyp barmak = marşruty/baýdagy üýtgetmek (gaýtadan ýygnamazdan)> 90%.
expand-migrate-contract shemasy boýunça migrasiýa paýy> 90%.
Kill-switch hyzmatlaryny baýdaklar bilen ýapmak> 95%.
Gabat gelmeýän shemalar/şertnamalar sebäpli ýüze çykan hadysalaryň sany → 0.
16) Programmalar: kiçi şablonlar
Argo AnalysisTemplate: 5xx üçin dur
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
bash kubectl rollout undo deploy/app -n prod
Helm: Atom çykarylyşy
bash helm upgrade --install app chart/ \
--atomic \
--timeout 5m \
--set image. tag=v1. 9. 3
NGINX: kanarlar üçin "kran"
nginx map $cookie_canary $weight {
default 0;
"~ on" 10; # enable 10% by cookie
}
17) Netijenama
Ygtybarly yza gaýdyp gelmek "ýangyn düwmesi" däl-de, arhitektura häsiýeti: immutable artefaktlar, eltip bermek we goşmak bölünişi, gabat gelýän maglumat shemasy, fiç baýdaklary we SLO-geýting. Emissiýalary atom bilen guruň, runbook-ny repetisiýa ediň we gorag derwezelerini awtomatlaşdyryň - islendik goýberiş, iş we ulanyjylar üçin agyrysyz minutlarda yzyna öwrüler.