DevOps-amaliyotlar va CI/CD
1) Maqsad va prinsiplar
Tez va xavfsiz: qisqa tsikllar, kichik o’zgarishlar, avtomatik tekshiruvlar.
Takrorlanuvchanlik: infratuzilma kod sifatida (IaC), muhit = kod + siyosat.
Kuzatish darajasi: metriklar/treyslar/qutidan loglar, SLO kontrakt sifatida.
Komplayens: audit, o’zgarishlarni nazorat qilish, ma’lumotlarni mintaqaviy izolyatsiya qilish.
Oltin qoida: «Avval sifat, keyin tezlik - aks holda tezlik hech qachon paydo bo’lmaydi».
2) Tarmoqlar va atrof-muhit
Trunk-based + feature flags - asosiy tanlov.
Qisqa fiche novdalari (2-5 kundan ≤), kundalik merge trunk.
Inkremental yetkazib berish va xavfsiz qaytish uchun bayroqlar (server-side).
Git-muhitlar:’dev’→’stage’→’prod’(+ mintaqaviy’prod-eu’,’prod-latam’).
Artefaktlarni targ’ib qilish: to’plangan bitta tasvir muhit orqali harakatlanadi (immutable tag by digest).
GitFlow: regulyator toʻplamlarining kamdan-kam relizlari/SDK - keyin reliz filiallari + «hardening».
3) Sifat piramidasi va «qizil chiziq»
1. Statik tahlil (SAST, linterlar, litsenziyalar).
2. Unit/Property-based testlari (soniya).
3. API va hodisalar uchun Contract-tests (CDC) (OpenAPI/AsyncAPI, Schema Registry).
4. Integratsiyalashgan (Testcontainers, mahalliy brokerlar).
5. Muhim yo’llar E2E: ro’yxatdan o’tish → KYC → depozit → o’yinni boshlash → chiqish.
6. To’lovlar/hamyon/o’yin provayderlari uchun yuklama/xaos-testlar.
Sifat oʻtmaydi → deploy bilan bloklanadi. change-recordsiz qoʻlda istisnolar yoʻq.
4) PO yetkazib berish zanjiri (supply chain)
Har bir rasm/paket uchun SBOM (CycloneDX/SPDX).
Artefaktlar imzosi (cosign), admission’da «faqat imzolangan» siyosat.
SCA/Dependabot: zaifliklar va litsenziyalar.
Provenance/SLSA: takrorlanadigan toʻplamlar, yopiq bild agent, attestations.
Sirlar: Menejerda (KMS/External Secrets), repo/loglarda hech qanday sir yo’q.
5) GitOps и IaC
Infra as Code: Bulut uchun Terraform/Pulumi; k8s uchun Helm/Kustomize.
GitOps-kontroller (ArgoCD/Flux): deklarativ manifestlar, PR-revyu, audit trail.
Oyna/muzlatish: turnir haftalari/eng yuqori soatlar - prod-relizlarning avto-pauzasi.
OPA/Kyverno siyosati: no’: latest’, non-root, read-only FS, taqiqlash hostPath.
6) Progressiv yetkazib berish
Canary: 1 → 5 → 10 → 25 → 50 → 100% guardrail metriklari bo’yicha (p95 latency, 5xx, error budget burn).
Blue-Green: tezkor o’tkazgich + orqaga qaytish rejasi.
Shadow/Mirroring: soʻrovlarni javobsiz koʻchirish (yangi PSP adapterlari uchun).
Feature flags: segmentlar boʻyicha qoʻshish (mintaqa/rol/sherik/kanal) + kill-switch.
7) Migratsiya DB (expand-and-contract)
1-qadam: sxemani kengaytiring (yangi ustunlar/indekslar) - eski kod bilan mos keladi.
2-qadam: ikkala variant/maydonga yozuvchi kod.
3-qadam: orqa fon jobasi, progress metrikasi ma’lumotlarining ko’chishi.
4-qadam: oʻqishni yangi maydonlarga oʻtkazish.
5-qadam: eskisini olib tashlash - alohida reliz.
Praym-taymda bloklovchi DDLni taqiqlash; yuqori jadvallar uchun - onlayn migratsiya.
8) Kuzatuv va SLO
Metriklar: RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/lag brokerlari.
Biznes-metriklar: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
Treyslar: shlyuzdan DBgacha trace-id.
SLO: masalan,’Deposit p95 ≤ 300-500 ms’,’success ≥ 98. 5%`, `availability ≥ 99. 9%`.
Burn rate alerta + degradatsiyada avto-pauza relizlari.
9) Hodisalar, postmortemalar, smenalar
Runbooks tanqidiy oqimlarga (depozit/chiqish/KS, live-o’yinlar).
Ustuvorlik shkalasi: P1...P4, egasi, ETA, kommunikatsiya (banner, maqom-sahifa, sheriklar).
action items va sanalar bilan Blameless postmortem.
Har N daqiqada on-call navbati, chat xabarnomalari, status yangilanishlari.
Doc-track: kim/qachon/nima (commit, artefakt, chorshanba, bayroq).
10) Xavfsizlik va komplayens (DevSecOps)
SAST/DAST/IAST, sir-skaner CI.
mTLS servisi, kichik TTL bilan JWT servisi, kalitlar rotatsiyasi.
loglarda/treyslarda Masking PII/PAN; Ma’muriy harakatlarning WORM jurnallari.
Geo-segregation: mintaqalar bo’yicha klasterlar/DB, shlyuz orqali yo’naltirish.
Change management: sezgir zonalar uchun tiket/approval (hamyon/limitlar).
11) DORA-metrika va FinOps
Deployment Frequency (kundalik kichik relizlar).
Lead Time for Changes (ideal: soat).
MTTR (tiklash: daqiqa/soat).
Change Failure Rate (maqsad ≤ 15%).
FinOps: atrof-muhit qiymati, RPS-keshlash, issiq pullar, vorkerlarning avto pauzasi, «cost per transaction».
12) iGaming-spetsifikasi
Piki (turnirlar/layv): yirik o’zgarishlarni muzlatish, kesh/obrazlarni isitish, kvotalar bustlari.
To’lovlar/hamyon: alohida pullar/uzellar, yuqori SLO, hududlar bo’yicha kanar rollout, PSP provayderlarining ikki tomonlama telemetriyasi.
KS/komplayens: alohida cadence relizlar, majburiy post-aprues komplayens.
Hamkorlar/affiliats: xavfsiz SDK, eski mijozlarni qo’llab-quvvatlash va monitoring qilish oynasi bilan API versiyasi.
13) CI/CD misoli (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
14) Chek-varaqlar
Main’dan oldin
- Unit/CDC/integratsiyasi yashil.
- Linterlar/SAST/litsenziyalar toza.
- OpenAPI/AsyncAPI va DB migratsiya sxemalari yangilandi.
- Fiche bayroqlari qo’shildi, follbeklar aniqlandi.
Prodga chiqarishdan oldin
- Rasm imzolangan, SBOM ilova qilingan, HIGH/CRIT zaifliklari yopilgan.
- Dashbordlar/alertlar yaratilgan; SLO-geytlar ulangan.
- Qaytarish rejasi, kill-switch, Shadow (agar kerak boʻlsa).
- Mintaqaviy cheklovlar va ma’lumotlar siyosati tasdiqlandi.
Hodisalar
- Runbook topildi va dolzarbdir.
- Foydalanuvchilar/hamkorlar uchun aloqa (namuna, ETA).
- 48 soatda postmortem, sana bilan action items.
15) Anti-patternlar
«Har bir muhit uchun qayta yig’iladi» (reklama artefakti yo’q).
Auditsiz/takrorlanmaydigan qo’l qadamlari.
DB «peshonaga» migratsiyasi, APIning mos kelmaydigan javoblari.
O’zgaruvchan CI yoki repozitoriyadagi sirlar.
Bayroqsiz halokatli chichlar.
Kanar relizida SLO/guardrails mavjud emas.
PII/PAN bilan ro’yxatga olish, niqobning yo’qligi.
16) Foydali microcopy shablonlari
Reliz (sheriklar):- "Biz to’lov modulining yangilanishini bosqichma-bosqich amalga oshirmoqdamiz (10% → 100%). 2 daqiqagacha qisqa muddatli kechikishlar bo’lishi mumkin. ETA tugallanishi - 21:00 EET"
- "To’lov provayderi X beqaror. Qabul qilish 15 daqiqagacha davom etishi mumkin. Biz tuzatish ustida ishlamoqdamiz. Keyingi maqom yangilanishi 30 daqiqadan keyin amalga oshiriladi"
- "Kechikishlar ortib borayotgani sababli yangilanish toʻxtatildi. Oldingi versiya qaytarilmoqda. Maʼlumotlar va operatsiyalar saqlandi"
17) Joriy etish jarayoni (4 ta sprint)
1. Sifat standartlari va payplaynlar: SAST/Unit/CDC, yagona rasm, imzolar, SBOM.
2. GitOps + muhit: Helm/Kustomize, ArgoCD, artefaktni targ’ib qilish, sirlar siyosati.
3. Progressiv relizlar va SLO-geytlar: canary/shadow, guardrails, avtopauza.
4. Ishonchliligi va qiymati: xaos-testlar, avtoskeyl/issiq hovuzlar, FinOps-dashbordlar.
Yakuniy shpargalka
Trunk + flags + kichik partiyalar = stresssiz tezlik.
Yagona imzolangan artefakt + SBOM = nazorat qilinadigan yetkazib berish zanjiri.
GitOps + siyosati = takrorlanuvchanlik va audit.
Canary/Blue-Green + SLO-geytlar = xavfsiz relizlar.
Expand-and-contract DB = nol nuqta.
Kuzatilganlik va DORA = boshqariladigan yaxshilanishlar.
Mintaqaviy izolyatsiya va komplayens = qonunlarga muvofiqlik va ishonch.