Oyun platformaları üçün CI/CD: kanarya relizləri və ficheflages
1) Niyə mütərəqqi çatdırılma iGaming üçün vacibdir
Real vaxt və pul: giriş/depozit/faiz səhvləri dərhal gəlir vurur.
Trafik zirvələri: promo və turnirlər → «uçqun» baqaj riski.
Multi-bazarlar və markalar: funksiyaların məqsədyönlü dayandırılması imkanı ilə mərhələli buraxılış tələb olunur.
Məqsəd: tədricən daxil edilə bilən buraxılışlar, SLO-nun təsirini ölçmək və dərhal downtime olmadan yuvarlanmaq.
2) CI/CD istinad arxitekturası
CI (build & test):1. Mənbə taraması (SAST), artefaktların/şəkillərin yığılması (SBOM, imza).
2. Vahid/müqavilə/inteqrasiya testləri, test stendində e2e.
3. Manifestlərin təsdiqi (OPA/Kyverno), Helm/Kustomize lintinq.
CD (progressive delivery):- GitOps (Argo CD/Flux) yeganə tətbiq mexanizmi kimi.
- Argo Rollouts/Flagger для canary/blue-green/shadow.
- Release-gates: SLO yaşıl olduqda yuyulur (giriş/depozit/bahis).
- Eşiklərin pozulması halında avto-rollback.
Çərşənbə: 'dev → stage → canary-prod → prod' (bazarlar/brendlər üzrə). canary üçün - ayrıca namespace/hüceyrə.
3) Təchizat zəncirinin təhlükəsizliyi
Immutable şəkillər 'sha256', qadağan 'latest'.
Şəkil imzası (Cosign) + admission-webhook-da yoxlama.
Həssaslıq Scan (SCA) kimi «blocking step».
Secrets - External Secrets vasitəsilə Vault/Cloud SM-dən; giriş auditi.
4) Kanarya relizləri: nümunələr
Variantlar:- Canary trafik: 1% → 5% → 10% → 25% → 50% → 100%.
- Seqmentlər üzrə Canary: yalnız işçilər, sonra bir marka/bazar, sonra bütün region.
- Shadow: cavablara təsir etmədən real trafik güzgüsü («ağır» dəyişikliklər üçün).
- Blue-Green: iki eyni yığını, ani marşrut keçid.
- SLI: Login/depozit/bahis müvəffəqiyyəti, p95 API və WS-RTT, 4xx/5xx, retrains növbəsi.
- Biznes SLO: dönüşüm qeydiyyat → depozit, uğurlu nəticələr payı.
- «Sərt» stop siqnalları: charjback səhvlərinin artması, PSP success ratio düşməsi, oyun provayderinin səhvləri.
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) Ficheflages: buraxılmadan risklərin idarə edilməsi
Bayraq növləri:- Release flags - yeni funksiyanın daxil edilməsi (kanareit «daxili» versiyası ola bilər).
- Ops flags (kill-switch) - bahalı/qeyri-sabit hissələrin dərhal bağlanması (məsələn, yeni oyun provayderi).
- Experiment flags - UI/astanalar üçün A/B.
- Permissioning flags - yalnız markets/VIP/partnyorlar üçün giriş.
- Bayraqlar - mərkəzləşdirilmiş/SDK xidmətində (Unleash/LaunchDarkly/Rollout, ya da öz).
- Bayrağa TTL və «borclar» - sabitləşmədən sonra təmizlənir.
- "Bayraq həlli 'ni 'trace _ id' ilə (hata ayıklamaq üçün) qeyd edin.
- Qəzalar üçün «pre-sets» saxlayın («köhnə ödənişi geri qaytarmaq» düyməsi).
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-geytalar və avtootkat
Büdcə səhvi: pəncərədən 10-15 dəq SLI qapıdan çıxırsa - avtopauza və geri dönüş.
Metrik mənbələr: Prometheus/OTel → Argo Rollouts/Flagger AnalysisRun.
Saxta pozuntuların damperi: «sıçrayışlardan qorunma» (required consecutive violations ≥ 3).
Eşik nümunələri:- `login_success_ratio ≥ 99. 9%`
- `p95_payments_deposit ≤ 400ms`
- `ws_rtt_p95 ≤ 120ms`
- 'deposit _ success _ by _ psp ≥ 99%' (hər PSP üzrə)
7) DB miqrasiyası və downtime olmadan uyğunluq
expand → migrate → contract şablonu:1. Expand: Yeni sütunlar/indekslər əlavə edin, sxemləri uyğun edin (ikiqat qeyd).
2. Migrate: app köhnə + yeni yazır, yeni ficheflagdan oxuyur.
3. Contract: stabilizasiya sonra - köhnə aradan qaldırılması.
Alətlər: Liquibase/Flyway, CI miqrasiya, «idempotent & backward-compatible» qaydaları.
Anti-tələ: köhnə versiyasını pozan miqrasiyaların qadağan edilməsi, kanarya <100%.
8) Mütərəqqi çatdırılma üçün test strategiyası
Xidmətlər və xarici provayderlər arasında müqavilələr (Pact/Buf) (PSP/oyunlar).
E2E ssenariləri: giriş → depozit → bahis → settlement → çıxış (və mənfi yolları).
Promoda sintetika (canary-hüceyrə): kiçik məbləğlərdə sınaq depozitləri/dərəcələri.
Ficheflags testləri: Hər bir filialda dev/stage/canary üçün bayraqların konfiqurasiyası var.
9) Domenlər üzrə relizlərin orkestri
Auth/profil: qısa vaxt və limitlər; test 2FA/SSO.
Ödənişlər/cüzdan: yalnız kiçik pay və bir bazar üçün canary; PSP kvotalarının ciddi monitorinqi.
Game-gateway (WS): ayrı-ayrı nodpullar; PDB; sticky-routing; yeni codec/protokol ficheflag.
Promo/bonuslar: idempotentlik '/promo/claim '; canary trafik məhdudlaşdırıcılar.
10) GitOps axını (nümunə)
1. main → CI-də Merge bir şəkil topladı, imzaladı, testləri qaçırdı.
2. Bot canary-manifest versiyasını yenilədi → Argo CD tətbiq.
3. Argo Rollouts: 5% trafik + metrik analiz.
4. 25/50/100% -ə qədər avtomobil yuyulur.
5. «Tam satış» üçün PR və bayraq/konfiqurasiya təmizlənməsi.
11) Müşahidə və telemetriya relizləri
'version', 'rollout _ step', 'flag _ variant' işarələri metrik/log/treyslərdə.
«Release Health» Dashboard: SLI əsas flow, müqayisə 'baseline vs canary'.
Ficheflags həllərinin qeydləri (rate-limited), problemli spanlara Trace Links.
12) Hadisələr, geri çəkilmə, hotfiks
Runbook: «Sərbəst buraxmaq/bayraq söndürmək/PSP keçid necə».
Kill-switch düyməsi: deploi olmadan yeni funksiyanı dərhal söndürmək.
Hotfix: canary vasitəsilə hot-patch 1-5% + yaşıl SLO ilə sürətləndirilmiş yuyulur.
13) Komplayens və audit
Tam izləmə qabiliyyəti: kim/nə vaxt/nə yuvarlandı, hansı bayraqlar və harada daxildir.
WORM-relizlər və bayraq dəyişiklikləri jurnalları.
Ödəniş xidmətləri və DB miqrasiya üçün «dörd göz» siyasəti.
14) Konfiqurasiya nümunələri
GitHub Actions (CI fraqmenti):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 siyahısı (prod-ready)
- GitOps aktiv; əl 'kubectl apply' qadağandır.
- Şəkillər imzalanmış, normalarda zəifliklər; admission imzanı yoxlayır.
- Canary/blue-green özelleştirilmiş; SLO ilə Release-gates bağlıdır.
- Kill-switch ilə fitness; bayraq həlləri jurnalı.
- expand → migrate → contract sxemi üzrə miqrasiya; keçid zamanı ikiqat qeyd.
- Daşbordlar 'baseline vs canary'; metriklərə görə avtomatik cavab.
- Runbook geri/PSP keçid/oyun provayderi off.
- Xarici provayderlərlə müqavilələr canary-də sınaqdan keçirilir.
- Təhlükəsizlik Siyasəti (OPA/Kyverno), Vault/SM-dən gizli.
- Buraxıldıqdan sonra «ölü» bayraqların və konfiqurasiyaların təmizlənməsi.
16) Tipik tələlər
Kanarya «IP», oyunçuların real seqmentlərinə görə deyil → metrik təhrif.
SLO geytlərinin olmaması → kanarya «gözə» gedir.
aktiv köhnə versiyası ilə Cracking miqrasiyaları.
Ödənişlərdə limitsiz retras/idempotentlik → dubl kaskadları.
TTL olmadan «əbədi» fitness → konfiqurasiya xaos.
Kanaryadakı yeganə PSP → success ratio ilə müqayisə edilə bilməz.
Xülasə
iGaming üçün CI/CD proqressiv çatdırılma + zaman konfiqurasiyasıdır: kanarya relizləri, kill-switch, SLO geytləri və avtomatik geri dönüşlər. Təhlükəsiz miqrasiyalar, GitOps intizamı, «baseline vs canary» telemetriyası və ciddi təhlükəsizlik siyasətləri əlavə edin - və buraxılışlarınız proqnozlaşdırıla bilən, sürətli və hətta pik yüklər və ciddi komplayens altında idarə oluna bilər.
