GH GambleHub

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ň.

💡 Düzgün: Programmanyň çykmagy hiç haçan çalt göçmäge bagly däldir. Islendik amalyň durmagy we täzeden başlamagy howpsuz.

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.

Awto-stop (logikanyň mysaly):
  • 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.

Mysal (psevdo-kod):
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.
Habar şablony (ýönekeý):
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.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.