Oýun platformalary üçin CI/CD: kanar relizleri we fiçeflaglar
1) Näme üçin progressiw eltip bermek iGaming üçin möhüm?
Real wagt we pul: login/depozit/stawkadaky ýalňyşlyklar girdejini derrew urýar.
Traffigiň iň ýokary derejesi: mahabat we ýaryşlar → bökdençlikleriň "göçmek" töwekgelçiligi.
Köp bazarlar we markalar: funksiýalary maksatly öçürmek mümkinçiligi bilen tapgyrlaýyn çykarmak talap edilýär.
Maksat: ýuwaş-ýuwaşdan girizilip bilinjek neşirler, SLO-nyň täsirini ölçemek we haýal etmän taşlamak.
2) CI/CD salgylanma arhitekturasy
CI (build & test):1. Çeşme skany (SAST), artefaktlary/şekilleri ýygnamak (SBOM, gol).
2. Birlik/şertnama/integrasiýa synaglary, synag stendinde e2e.
3. Manifestleri tassyklamak (OPA/Kyverno), Helm/Kustomize linting.
CD (progressive delivery):- GitOps (Argo CD/Flux) ýeke-täk ulanmak mehanizmi hökmünde.
- Argo Rollouts/Flagger для canary/blue-green/shadow.
- Release-gates: diňe SLO ýaşyl bolsa (giriş/goýum/stawka) ýuwular.
- Bosagalar bozulanda awto-rollback.
Gurşaw: 'dev → stage → canary-prod → prod' (bazarlar/markalar boýunça). canary üçin - aýratyn namespace/öýjük.
3) Üpjünçilik zynjyrynyň howpsuzlygy
Immutable 'sha256', gadaganlyk 'latest'.
Şekilleriň goly (Cosign) + admission-webhukda barlamak.
Gowşaklyk skaneri (SCA) "blocking step" hökmünde.
Syrlar - Vault/Cloud SM-den External Secrets arkaly; giriş barlagy.
4) Kanar relizleri: patternler
Wariantlar:- Trafik boýunça Kanary: 1% → 5% → 10% → 25% → 50% → 100%.
- Segmentler boýunça Kanary: diňe işgärler, soňra bir marka/bazar, soňra tutuş sebit.
- Shadow: jogaplara täsir etmezden hakyky traffigiň aýnasy ("agyr" üýtgeşmeler üçin).
- Blue-Green: iki sany birmeňzeş yrym, derrew marşruty üýtgetmek.
- SLI: login/depozit/stawkanyň üstünligi, p95 API we WS-RTT, 4xx/5xx, retraýlaryň nobaty.
- Biznes-SLO: öwrülişik hasaba alyş → goýum, üstünlikli netijeleriň paýy.
- "Gaty" duralgalar: çarjbek ýalňyşlyklarynyň köpelmegi, PSP-iň düşmegi, oýun üpjün edijiniň ýalňyşlyklary.
yaml strategy:
canary:
steps:
- setWeight: 5
- pause: {duration: 5m}
- analysis: {templates: [{templateName: deposit-slo}]} # гейт по SLO
- setWeight: 25
- pause: {duration: 10m}
- analysis: {templates: [{templateName: auth-error-rate}]}
- setWeight: 50
- pause: {}5) Fiçeflaglar: goýberilmezden töwekgelçiligi dolandyrmak
Baýdaklaryň görnüşleri:- Release flags - täze funksiýanyň goşulmagy (wersiýanyň "içinde" kanareýit edip bilersiňiz).
- Ops flags (kill-switch) - gymmat/durnuksyz bölekleri derrew öçürmek (mysal üçin, täze oýun üpjün ediji).
- Experiment flags - UI/bosagalar üçin A/B.
- Permissioning flags - diňe markets/VIP/hyzmatdaşlar üçin giriş.
- Baýdaklar - merkezleşdirilen/SDK hyzmatynda (Unleash/LaunchDarkly/Rollout, ýa-da öz).
- Baýdakdaky TTL we "bergiler" - durnuklaşandan soň arassalaýarys.
- Baýdak çözgüdini 'trace _ id' bilen belläň (düzetmek üçin).
- Awariýa üçin "pre-sets" saklaň ("köne tölegi yzyna gaýtarmak" düwmesi).
json
{
"feature": "payments_v2",  "rules": [
{"if": "market in ['DE','SE']", "rollout": 0. 25},   {"if": "brand == 'X' && user. isEmployee", "rollout": 1. 0}
],  "kill_switch": false
}6) SLO-geýtleri we awtookat
Býudjet ýalňyşlygy: 10-15 minutlyk penjireden SLI bosagadan çyksa - awtopauza we yza gaýdyp gelmek.
Metrik çeşmeler: Prometheus/OTel → Argo Rollouts/Flagger AnalysisRun.
Ýalan täsirleriň damperi: "partlamalardan goramak" (required consecutive violations ≥ 3).
Bosagalaryň mysallary:- `login_success_ratio ≥ 99. 9%`
- `p95_payments_deposit ≤ 400ms`
- `ws_rtt_p95 ≤ 120ms`
- 'deposit _ success _ by _ psp ≥ 99%' (her PSP boýunça)
7) DB migrasiýasy we downtaýmasyz gabat gelmek
expand → migrate → contract şablony:1. Expand: täze sütünleri/indeksleri goşmak, shemalary gabat getirmek (goşa ýazmak).
2. Migrate: programma köne + täze ýazýar, ficheflagyň aňyrsynda täzesinden okaýar.
3. Contract: durnuklaşandan soň - köne aýyryň.
Gurallar: Liquibase/Flyway, CI göçmek, "idempotent & backward-compatible" düzgünleri.
Duzaga garşy: köne wersiýasyny bozýan migrasiýa gadaganlygy, şu wagta çenli kanareýa <100%.
8) Progressiw eltip bermek üçin synag strategiýasy
Hyzmatlar bilen daşarky üpjün edijileriň arasyndaky şertnamalar (Pact/Buf) (PSP/oýunlar).
E2E-ssenariýalar: giriş → goýum → nyrh → settlment → netije (we negatiw ýollar).
Önümdäki sintetika (canary-öýjükler): az mukdarda synag goýumlary/stawkalar.
Fiçeflag synaglary: her şahada - dev/stage/canary üçin baýdaklaryň konfigurasiýasy.
9) Relizleri domenler boýunça orkestrlemek
Auth/profil: gysga wagtlar we çäkler; synag 2FA/SSO.
Tölegler/gapjyk: diňe kiçi paý we bir bazar üçin canary; PSP kwotalaryna berk gözegçilik.
Game-gateway (WS): aýratyn nokatlar; PDB; sticky-routing; täze codec/teswirnama üçin ficheflag.
Promo/bonuslar: idempotentlik '/promo/claim '; canary-trafik çäklendirijileri.
10) GitOps akymy (mysal)
1. Merge main → CI ýygnady, surata gol çekdi, synaglary kowdy.
2. Bot wersiýasyny canary-manifestde täzeledi → Argo CD ulanyldy.
3. Argo Rollouts: 5% traffik + metrik derňew.
4. 25/50/100% -e çenli awtoulag ýuwmak ýa-da awtomototkat.
5. "Doly önümçilik" üçin PR we baýdaklary/konwensiýalary arassalamak.
11) Relizleriň syn edilmegi we telemetriýasy
'version', 'rollout _ step', 'flag _ variant' bellikleri metriklerde/loglarda/trekslerde.
"Release Health" dashbordlary: "baseline vs canary".
Ficheflaglar (rate-limited) çözgütleriniň loglary, problemaly spanlara trays-linkler.
12) Hadysalar, yza gaýdyp gelmek, hotfikler
Runbook: "Nädip çykarmaly/baýdagy öçürmeli/PSP geçmeli".
Kill-switch düwmesi: Täze funksiýany deploýsyz derrew öçüriň.
Hotfix: 1-5% kanary arkaly gyzgynlyk + ýaşyl SLO-da çalt ýuwulýar.
13) Komplayens we audit
Doly yzarlamak ukyby: kim/haçan/näme çykardy, haýsy baýdaklar we nirede goşuldy.
WORM-relizleriň we baýdaklaryň üýtgemeleriniň magazinesurnallary.
Töleg hyzmatlary we DB migrasiýalary üçin "dört göz" syýasaty.
14) Konfigurasiýa mysallary
GitHub Actions (CI bölegi):yaml jobs:
build-test:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- run: make test
- run: make build && cosign sign --key $COSIGN_KEY image:tag
- run: trivy image --exit-code 1 image:tag
- run: sbom generate image:tag > sbom. spdx. jsonpython if flags. is_enabled("payments_v2", user=ctx. user, market=ctx. market):
result = deposit_v2(req)
else:
result = deposit_v1(req)rego deny[msg] {
input. request. kind. kind == "Pod"
not input. request. object. spec. securityContext. runAsNonRoot msg:= "runAsNonRoot is required"
}15) Çek-sanawy (prod-ready)
- GitOps açyldy; "kubectl apply" gollary gadagan.
- Şekillere gol çekildi, kadalardaky gowşaklyklar; admission goly barlaýar.
- Canary/blue-green sazlandy; SLO arkaly release-gates birikdirildi.
- Kill-switch jübüti; baýdaklaryň çözgütleriniň žurnaly.
- expand → migrate → contract shemasy boýunça göçmek; geçişde goşa ýazgy.
- Daşbordlar 'baseline vs canary'; metrikler boýunça awtomatiki jogap.
- Runbook/PSP/oýun üpjün edijisini öçürmek.
- Daşarky üpjün edijiler bilen baglaşylan şertnamalar canary.
- Howpsuzlyk syýasaty (OPA/Kyverno), Vault/SM-den gizlin.
- Boşadylandan soň "öli" baýdaklary we konfigurasiýalary arassalamak.
16) Adaty duzaklar
Oýunçylaryň hakyky segmentleri boýunça däl-de, "IP boýunça" kanareýa → metrikleriň ýoýulmagy.
SLO geýtleriniň ýoklugy → kanareýa "göze" gidýär.
Işjeň köne wersiýada göçýän shemalar.
Töleglerde çäklendirilmedik retralar/idempotentlik → goşa kaskadlar.
TTL → konfigurasiýadaky bulam-bujarsyz "baky" aýratynlyklar.
Kanareýkadaky ýeke-täk PSP → success ratio bilen deňeşdirip bolmaz.
Jemleme
iGaming üçin CI/CD progressiw eltip bermek + wagt konfigurasiýasy: kanar çykaryşlary, kill-switch ficheflaglary, SLO-geýtleri we awto-yzyna gaýdyşlar. Howpsuz migrasiýalary, GitOps-düzgüni, "baseline vs canary" telemetriýasyny we berk howpsuzlyk syýasatlaryny goşuň - goýberişleriňiz iň ýokary ýükler we berk utgaşmalar bilen hem öňünden aýdyp boljak, çalt we dolandyrylýan bolar.
