GH GambleHub

DevOps Practices & CI/CD

1) Maksatlar we ýörelgeler

Çalt we ygtybarly: gysga aýlawlar, üýtgeşmeleriň kiçi toparlary, awtomatiki barlaglar.
Gaýtalanma: infrastruktura kod hökmünde (IaC), gurşaw = kod + syýasat.
Syn edilişi: metrikler/söwdalar/gutudan loglar, SLO şertnama hökmünde.
Komplayens: audit, üýtgeşmelere gözegçilik, maglumatlaryň sebitleýin izolýasiýasy.

Altyn düzgün: "Ilki hil, soň tizlik - ýogsam tizlik hiç haçan görünmez".

2) Şahalar we gurşaw

Trunk-based + feature flags - esasy saýlaw.

Gysga şahalar (≤ 2-5 gün), gündelik merge trunk.
Inkremental eltip bermek we howpsuz yza gaýdyp gelmek üçin baýdaklar (server-side).
Git-gurşaw: 'dev' → 'stage' → 'prod' (+ sebitleýin 'prod-eu', 'prod-latam').
Artefaktlaryň mahabaty: toplanan bir şekil daşky gurşawdan geçýär (immutable tag by digest).

Haçan-da GitFlow: düzgünleşdiriji gurnamalaryň seýrek çykarylmagy/SDK - onda goýberiji şahalar + "hardening".

3) Hil piramidasy we "gyzyl çyzyk"

1. Statiki derňew (SAST, linterler, ygtyýarnamalar).
2. Unit/Property-based synaglary (sekunt).
3. API we wakalar üçin Contract-tests (CDC) (OpenAPI/AsyncAPI, Schema Registry).
4. Integrasiýa (Testcontainers, ýerli brokerler).
5. Möhüm ýollaryň E2E: hasaba alyş → KYC → goýum → oýny başlamak → çykyş.
6. Tölegler/gapjyk/oýun üpjün edijileri üçin ýüklemek/bulam-bujarlyk synaglary.

Hil geçmez → deploy tarapyndan petiklenýär. change-record bolmasa "el bilen kadadan çykmalar" ýok.

4) Programma üpjünçilik zynjyry (supply chain)

Her şekil/paket üçin SBOM (CycloneDX/SPDX).
Artefaktlaryň gollary (cosign), admission-da "diňe gol çekilen" syýasat.
SCA/Dependabot: gowşaklyklar we ygtyýarnamalar.
Provenance/SLSA: oýnap bolýan gurnama, ýapyk bild-agent, attestations.
Syrlar: Dolandyryjyda (KMS/External Secrets), repo/loglarda ýekeje syr hem ýok.

5) GitOps и IaC

Infra as Code: Bulut üçin Terraform/Pulumi; k8s üçin Helm/Kustomize.
GitOps-kontroller (ArgoCD/Flux): deklaratiw manifestler, PR-revyu, audit trail.
Penjireler/aýazlar: ýaryş hepdeleri/iň ýokary sagatlar - prod-relizleriň awto-arakesmesi.
OPA/Kyverno syýasaty: no ': latest', non-root, read-only FS, hostPath gadaganlygy.

6) Progressiw eltip bermek

Canary: 1 → 5 → 10 → 25 → 50 → 100% guardrail metrikleri boýunça (p95 latency, 5xx, error budget burn).
Blue-Green: çalt geçiş + yzyna gaýtarmak meýilnamasy.
Shadow/Mirroring: Jogaplara täsir etmezden haýyşlary göçürmek (täze PSP adapterleri üçin).
Feature flags: segmentler boýunça goşulma (sebit/rol/hyzmatdaş/kanal) + kill-switch.

7) Göçmek DB (expand-and-contract)

1-nji ädim: shemany giňeldýäris (täze sütünler/indeksler) - köne kod bilen gabat gelýär.
2-nji ädim: iki wersiýa/meýdana ýazýan kody deple.
3-nji ädim: fon joby, ösüş metrikasy bilen maglumatlaryň göçmegi.
4-nji ädim: Okamagy täze meýdanlara geçirmek.
5-nji ädim: köne aýyrmak - aýratyn goýbermek.
Prime-time bloklaýjy DDL-leri gadagan etmek; ýokary tablisalar üçin - onlaýn migrasiýa.

8) Synlamak we SLO

Metrikler: RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/lag brokerleri.
Iş metrikleri: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
Söwda: Şlýuzdan DB-e çenli trace-id.
SLO: Mysal üçin, 'Deposit p95 ≤ 300-500 ms', 'success ≥ 98. 5%`, `availability ≥ 99. 9%`.
Burn rate alert + zaýalananda awto-arakesme relizleri.

9) Hadysalar, postmortemler, çalşyklar

Möhüm akymlara Runbooks (goýum/pul çykarmak/KUS, göni oýunlar).
Ileri tutulýan şkala: P1...P4, eýesi, ETA, aragatnaşyk (banner, status-sahypa, hyzmatdaşlar).
Blameless postmortem action items we seneler bilen.
On-call çalşyklary, söhbetdeşlik duýduryşlary, her N minutda status täzelenmeleri.
Doc-track: kim/haçan/näme goýdy (commit, artefakt, çarşenbe, baýdak).

10) Howpsuzlyk we laýyklyk (DevSecOps)

SAST/DAST/IAST, CI-de gizlin skan.
mTLS hyzmaty, JWT kiçi TTL, açarlaryň aýlanmagy.
Masking PII/PAN log/trade; WORM dolandyryş hereketleri magazinesurnallary.
Geo-segregation: sebitler boýunça toparlar/DB, şlýuzyň üsti bilen marşrut.
Change management: duýgur ýerler üçin bilet/approval (gapjyk/çäkler).

11) DORA metrikleri we FinOps

Deployment Frequency (gündelik kiçi neşirler).
Lead Time for Changes (ideal: sagat).
MTTR (dikeldiş: minut/sagat).
Change Failure Rate (maksat ≤ 15%).
FinOps: gurşawyň bahasy, RPS-kesmek, ýyly howuzlar, workerleriň awto-arakesmesi, "cost per transaction".

12) iGaming-aýratynlygy

Piki (ýaryşlar/durmuş): uly üýtgeşmeleri doňdurmak, keş/şekilleri gyzdyrmak, kwotalary güýçlendirmek.
Tölegler/gapjyk: aýry-aýry howuzlar/düwünler, ýokary SLO, sebitler boýunça kanar rollout, PSP üpjün edijileriniň goşa telemetriýasy.
KUS/Complayens: aýratyn cadence relizleri, hökmany post-uprues Complayens.
Hyzmatdaşlar/affiliates: ygtybarly SDK, goldaw penjiresi we köne müşderileriň gözegçiligi bilen API wersiýasy.

13) CI/CD mysaly (YAML, GitHub Actions → ArgoCD)

yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}

deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"

promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
💡 Pikir: ýeke-täk keşbi ýygnaýarys we gol çekýäris, SBOM-y çap edýäris, GitOps arkaly öňe sürýäris; prod-rollaut - kanareýka, guardrails.

14) Çek-listler

Merge-den öň

  • Unit/CDC/integrasiýa ýaşyl.
  • Linterler/SAST/ygtyýarnamalar arassa.
  • OpenAPI/AsyncAPI we DB göçmek shemalary täzelendi.
  • Fiç-baýdaklar goşuldy, follbekler kesgitlenildi.

Prod-a çykmazdan ozal

  • Surat gol çekildi, SBOM goşuldy, HIGH/CRIT gowşaklygy ýapyldy.
  • Daşbordlar/alertler döredildi; SLO-geýtlar birikdirildi.
  • Yzyna gaýtarmak meýilnamasy, öldürmek-switch, Şadow (zerur bolsa).
  • Sebitleýin çäklendirmeler we maglumat syýasaty tassyklandy.

Hadysalar

  • Runbook tapyldy we aktual.
  • Ulanyjylara/hyzmatdaşlara aragatnaşyk (şablon, ETA).
  • 48 sagatda postmortem, seneler bilen action items.

15) Anti-patternler

"Her gurşaw üçin täzeden ýygnaýarys" (mahabat artefakt ýok).
Auditsiz/gaýtalanmazdan deploýyň el bilen ädimleri.
DB "maňlaýyna" göçmek, gabat gelmeýän API jogaplary.
C üýtgeýän ýa-da repozitordaky syrlar.
Baýdak/yza gaýdyp gelmezden katastrofiki çyzgylar.
Kanareýanyň goýberilişinde SLO/guardrails ýoklugy.
PII/PAN ýazgylary, gizlenmezlik.

16) Peýdaly microcopy şablonlary

Partnýorlara goýbermek:
  • "Biz töleg modulynyň täzelenmesini tapgyrlaýyn çykarýarys (10% → 100%). Hasaba almagyň gysga möhletli gijikdirilmegi 2 minuda çenli bolup biler. ETA tamamlanmagy - 21:00 EET"
Waka (önümdäki banner):
  • "Töleg üpjün edijisi X durnuksyz. Kabul etmek 15 minuda çenli dowam edip biler. Biz düzediş üstünde işleýäris. Statusyň indiki täzelenmegi - 30 minutdan soň"
Tersine:
  • "Gijikdirmeleriň köpelmegi sebäpli täzelenme togtadyldy. Öňki wersiýasyny yzyna gaýtarýarys. Maglumatlar we amallar saklandy"

17) Giriş prosesi (4 sprint)

1. Hil we ulanyş standartlary: SAST/Unit/CDC, bir şekil, gollar, SBOM.
2. GitOps + gurşaw: Helm/Kustomize, ArgoCD, artefaktyň mahabaty, syrlar syýasaty.
3. Progressiw neşirler we SLO-oýunlar: canary/shadow, guardrails, awtopauza.
4. Ygtybarlylygy we bahasy: bulam-bujarlyk synaglary, awtoskeýl/ýyly howuzlar, FinOps-daşbordlar.

Jemleýji şpargalka

Trunk + flags + kiçi partiýa = stressiz tizlik.
Ýeke-täk gol çekilen artefakt + SBOM = gözegçilik edilýän üpjünçilik zynjyry.
GitOps syýasatlary = köpeltmek we audit.
Canary/Blue-Green + SLO-geýtlar = howpsuz çykarylýar.
DB = nol duralgalary üçin Expand-and-contract.
Synlamak we DORA = dolandyrylýan gowulaşmalar.
Sebitleýin izolýasiýa we komplayens = kanunlara laýyklyk we ynam.

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.

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.