Staging-payplaynlar we goýberişler
1) Näme üçin staging-paypline gerek?
Staging-paypline - bu artefaktyň PR-den önümçilige çenli hil we howpsuzlyk barlaglary bilen standartlaşdyrylan ýoly. Maksatlar:- ýygnamagyň we goýbermegiň gaýtalanmagy;
- çalt we öňünden aýdyp boljak fidbek;
- töwekgelçiligi azaltmak (progressiw aýlawlar, fiçeflaglar, yza gaýdyp gelmek);
- ylalaşyga laýyk gelmek we üýtgeşmelere gözegçilik etmek.
2) Eltip bermegiň salgylanma akymy (ýokary derejeli)
1. PR → awtomatiki barlaglar (lint, unit, SAST, ygtyýarnamalar).
2. Build → kesgitlenen şekil/paket, gol we SBOM.
3. Test on Ephemeral → per-PR gurşawy.
- şekiliň deplosy;
- kontrakt-, integrasiýa, e2e-synaglar;
- DAST/IAST, regressler, ýükleýji smoke;
- zerur bolan halatynda UAT/QA gollary.
- 5. Release Candidate (RC) → freeze window → Prod (canary/blue-green).
- 6. Post-deploy barlaglary we SLO/error budget boýunça awto jogap.
- 7. Runbook/Changelog → goýberilişiň we retrospektiviň ýapylmagy.
3) Standartlaşdyrylan ÝAML şablony
yaml
.ci/release.pipeline.yml stages: [verify, build, test, stage, approve, release, post]
verify:
- run: make lint test:unit sbom sast sca build:
- run:
docker build -t registry/app:$GIT_SHA.
cosign sign registry/app:$GIT_SHA oras push registry/sbom:$GIT_SHA sbom.json test:
- run: make test:contract test:integration
- run: make deploy:preview && make test:e2e stage:
- run: make deploy:staging IMAGE=registry/app:$GIT_SHA
- run: make test:e2e:staging && make dast approve:
manual gate: CAB/QA lead
- type: manual required_roles: [release_manager, qa_lead]
release:
- run: make release:canary TRAFFIC=5%
- run: make release:progressive STEPS="5,25,50,100"
post:
- run: make verify:slo && make notify && make create:changelog
4) Gates we taýýarlyk ölçegleri (Quality Gates)
Kod we howpsuzlyk: lintlar, örtük, SAST/SCA, garaşlylyk syýasaty, "critical/high" ýoklugy.
Şertnamalar: shemalaryň laýyklygy (API/wakalar), Pact/Buf barlagy.
Synaglar: unit/integration/e2e p-geçiş bosagasy, durnuklylyk (flake-rate).
Ýük smoke: p95/p99 býudjetiň çäginde, zaýalanma ýok.
DAST/IAST: Hiç bir möhüm kemçilik ýok, duýgur ýollar üçin synag ssenarileri.
Observability: dashboards/alerts "as code" täzelendi, runbooks ulanyldy.
CAB/UAT: goýberiş penjirelerinde tassyklama (eger kadalaşdyryjy/iş tarapyndan talap edilse).
5) Goýberiş strategiýalary
Feature Flags - redeploy bolmazdan fiçiň logiki goşulmasy; "dark launch" we A/B mümkinçiligi
Canary - traffigiň paýynyň kem-kemden ýokarlanmagy (5% → 25% → 50% → 100%), SLO we anomaliýalar boýunça awtomatiki roll-forward/rollback.
Blue-Green - paralel gurşaw; derrew geçiş, ýönekeý yza gaýdyp gelmek.
Shadow/Traffic Mirroring - ulanyjylara täsir etmezden traffigiň täze wersiýasyna passiw geçmegi.
Ring Deployments - sebitler/tenantlar boýunça tolkunlar.
6) Yza gaýdyp gelmek we relizleriň howpsuzlygy syýasaty
Triggerler boýunça awtookat: error-rate beýikligi, bosagadan ýokary p95/TTFB, 5xx/timeout beýikligi, DLQ köpelmegi.
El bilen yza gaýdyp gelmek: '/rollback <service> <sha> 'chatbotda, goýberiş konsolynda bir düwme.
Freeze windows: Möhüm wakalara (ýaryşlar/iň ýokary oýunlar) goýbermek gadagandyr.
Changelog & Release Notes: PR-den nesil, SemVer bellikleri, komponentler, göçmeler.
7) DB migrasiýasy we gabat gelmek
Expand → Migrate → Contract:1. gabat gelýän meýdanlary/indeksleri goşmak;
2. programmany deploý (iki shemada okaýar/ýazýar);
3. fon joblary bilen maglumatlaryň göçmegi;
4. Köne aýyryň.
Shemalar wersiýa edilýär, göçmek idempotent, dry-run staging.
Protect destructive SQL: require flag/approval, awtomatiki ekaplar we plan-check.
8) Fiziki baýlyklar we progressiw işjeňleşdirmek
Ops-baýdaklary (howpsuz işlemek üçin) we product-baýdaklary bölüň.
Tomaşaçylar boýunça goşulma: göterim, geo, tenant, rol.
Baýdaklaryň metrikasy: öwrülişige täsiri, latency, ýalňyşlyklar.
Meselelerde - baýdagy yzyna gaýtarmakdan has çalt bukmak.
9) Observability
Söwda: gateway-den DB/nobatlara çenli 'trace _ id' geçişi; Köne/täze wersiýalary deňeşdirmek.
Metrikler: p50/p95/p99, error-rate, RPS, saturation, DLQ, retrai, Time-to-Wallet/Business KPI.
Loglar: gurluş, gizlemek PII, korrelasiýa 'request _ id'.
Alertler: SLO-býudjet, on-call-iň gyssagly sahypalary, reliziň awto-bukjasy.
10) Üpjünçilik zynjyrynyň howpsuzlygy (supply chain)
Her bir bild üçin SBOM, ammar we reliz belligine baglanyşyk.
Şekilleriň gollary (cosign), klaster barlagy (policy admission).
SLSA-attestasiýa: artefaktyň subut edilip bilinjek gelip çykyşy.
Policy-as-Code (OPA/Conftest): infrastruktura PR üçin deny-by-default.
Syrlar: diňe KMS-den, gysga ömürli tokenlerden, paýlaýnlarda aýlanmalardan.
11) Üýtgeşmelere gözegçilik we prosesler
RFC → CRQ → CAB: özüni alyp barşyň/şertnamalaryň dokumentleşdirilen üýtgemegi öňünden ylalaşylýar.
Release Calendar: önümler/sebitler/toparlar boýunça görünýän penjireler.
Runbooks: her bir komponent üçin - açmak/yzyna almak/anyklamak proseduralary.
Postmortem/Retro: möhüm neşirlerden soň - derňew we hereket.
12) Staging synag profilleri
Şertnama (API/Events): gabat gelmeýän üýtgeşmeleri bloklaýar.
Integrasiýa/e2e: "goýum", "KYC", "netije".
Ýükleýji smoke: wekilçilikli belentlikler; resurs çäklerine gözegçilik edýäris.
Bulam-bujar ssenariýalary: üpjün edijini öçürmek, gizlinligi ýokarlandyrmak, tor fappingleri.
Sintetiki gözegçilik: meýilnama boýunça "synag" amallary.
13) Goýberiş maksatlarynyň Makefile mysaly (bölek)
makefile release: verify build test stage approve prod post verify:
@make lint test:unit sbom sast sca build:
docker build -t $(IMG).
cosign sign $(IMG)
test:
@make test:contract test:integration deploy:preview test:e2e stage:
kubectl apply -k deploy/staging approve:
@echo "Waiting for QA/CAB approval..."
prod:
make release:canary TRAFFIC="5 25 50 100"
post:
@make verify:slo notify changelog
14) Rollar we jogapkärçilik
Dev/Team: kod hili, synaglar, göçmeler, runbooks.
QA: UAT/regression ssenarileri, gates-de hil gözegçiligi.
SRE/Platforma: paýlaýjylaryň ygtybarlylygy, gözegçilik, syýasat.
Release Manager: senenama, penjireler, CAB, gutarnykly çözgüt.
Howpsuzlyk: SAST/DAST/SCA, supply-chain, gizlin syýasaty.
15) Relizleriň kämillik modeli
1. Esasy - el bilen barlamak, seýrek goýbermek, yza gaýdyp gelmek kyn.
2. Ösen - standartlaşdyrylan CI/CD, staging-kontury, canary/blue-green, ýygy-ýygydan çykarylýar.
3. Bilermen - tenantlar/sebitler boýunça progressiw eltip bermek, feature flags-first, policy-as-code, SLO boýunça awtookat, doly yzarlamak we SLSA.
16) Durmuşa geçirmegiň ýol kartasy
M0-M1 (MVP): paýlanyş şablony, build + sign + SBOM, staging-deploy, esasy synaglar we gates.
M2-M3: canary/blue-green, prevyu per-PR, şertnama-synaglar, DAST, synthetic checks.
M4-M6: feature flags platforma, shadow traffic, policy-as-code, awtootkat, release calendar + CAB-workflow.
M6 +: sebitler boýunça ring-deployments, SLSA-attestasiýa we berk admission, runbooks-yň doly awtomatlaşdyrylmagy.
17) Önüm çykarylmazdan öň çek-sanawy
- Surat gol çekildi, SBOM ýüklendi we goýberildi.
- Şertnamalar gabat gelýär, synaglar ýaşyl, e2e staging geçirildi.
- Göçmek barlandy (dry-run), yzyna gaýtarmak meýilnamasy beýan edildi.
- Daşbordlar/alertler täzelendi, SLO-geýtlar işjeň.
- Runbook we Changelog neşir edildi, goýberiş penjireleri ylalaşyldy.
- Feature flags progressiw işjeňleşdirildi.
- Freeze-çäklendirmeler berjaý edildi, on-call taýýar.
Gysgaça netije
Başarnykly dizaýn edilen "staging-paypline" relizleri dolandyrylýan tertibe öwürýär: ýeke-täk şablonlar, aýdyň quality gates, ygtybarly üpjünçilik zynjyry, progressiw tekizlemeler we syn etmek töwekgelçiligi azaldýar we hil we iş ölçeglerine gözegçiligi saklap, önümçilige üýtgeşmeleri çykarmak wagtyny gysgaldýar.