Practici DevOps și CI/CD
1) Obiective și principii
Rapid și sigur: cicluri scurte, loturi mici de modificări, verificări automate.
Repetabilitate: infrastructură ca cod (IaC), mediu = cod + politică.
Observabilitate: măsurători/trasee/jurnale din cutie, SLO ca un contract.
Conformitate: audit, control al schimbării, izolare regională a datelor.
Regula de aur: „În primul rând de calitate, apoi viteza - altfel viteza nu va apărea niciodată”.
2) Ramuri și medii
Trunk-based + feature flags - selecție de bază.
Linii de caracteristici scurte (≤ 2-5 zile), fuziune zilnică în portbagaj.
Steaguri de server pentru livrare incrementală și rollback securizat.
Medii GIT: "dev" → "etapa" → "prod' (+ regional" prod-eu "," prod-latam ").
Promovarea artefactelor: o imagine colectată este promovată prin mass-media (etichetă imuabilă prin digest).
Când GitFlow: lansări rare de ansambluri de reglementare/SDK-uri - apoi eliberați ramuri + „întărire”.
3) Piramida de calitate și „linia roșie”
1. Analiza statică (SAST, lintere, licențe).
2. Încercări bazate pe unitate/proprietate (secunde).
3. Contract-teste (CDC) pentru API-uri și evenimente (OpenAPI/AsyncAPI, Schema Registry).
4. Integrare (Testcontainere, brokeri locali).
5. căi critice: înregistrarea KYC depunerea lansarea jocului.
6. Teste de încărcare/haos pentru furnizorii de plăți/portofel/joc.
Calitatea nu trece → depozitul este blocat. Nu există „excepții manuale” fără o schimbare-înregistrare.
4) Lanțul de aprovizionare
SBOM pentru fiecare imagine/pachet (CycloneDX/SPDX).
Semnături artefact (cosign), „semnat numai” politica în admitere.
SCA/Dependabot: vulnerabilități și licențe.
Proveniență/SLSA: ansambluri reproductibile, agent de construcție închis, atestate.
Secretele: în manager (KMS/Secretele Externe), nu un singur secret în repo/jurnale.
5) GitOps и IaC
Infra ca cod: Terraform/Pulumi pentru Cloud; Helm/Kustomize pentru k8s.
Controler GitOps (ArgoCD/Flux): manifeste declarative, revizuire PR, pistă de audit.
Windows/freezes: săptămâni de turneu/ore de vârf - auto-pauză de lansări de producție.
Politici OPA/Kyverno: nu „: cele mai recente”, non-root, read-only FS, hostPath interzice.
6) Livrare progresivă
Canare: 1→5→10→25→50→100% pe măsurători de parapet (latență p95, 5xx, ardere buget de eroare).
Blue-Green: comutator rapid + plan de rollback.
Shadow/Mirroring: cereri de copiere fără a afecta răspunsul (pentru noile adaptoare PSP).
Caracteristici: includerea pe segment (regiune/rol/partener/canal) + kill-switch.
7) Migrarea bazelor de date (extindere și contract)
Etapa 1: extinde schema (coloane noi/indici) - compatibil cu codul vechi.
Etapa 2: codul de dump care scrie la ambele versiuni/câmpuri.
Etapa 3: Fundal de migrare a datelor joba, metrici de progres.
Pasul 4: Comutați citirea pe câmpuri noi.
Pasul 5: Scoaterea celui vechi este o eliberare separată.
Blocarea interdicției DDL în prime time; pentru mese înalte - migrații online.
8) Observabilitate și SLO
Valori: RPS, p50/95/99, 4xx/5xx, saturație (CPU/mem/coadă), DLQ/broker lag.
Valori de afaceri: TTP (time-to-play), TtW (time-to-wallet), FTD-succes, KYC-TtV.
Urme: urme de la poarta de acces la baza de date.
SLO: de exemplu, „Depozit p95 ≤ 300-500 ms',” succes ≥ 98. 5% „,” disponibilitate ≥ 99. 9%`.
Arde alerte rata + auto-pauză eliberează în timpul degradării.
9) Incidente, post-morteme, schimburi
Runbooks pe fluxuri critice (depozit/ieșire/ACC, jocuri live).
Scala prioritară: P1...P4, proprietar, ETA, comunicare (banner, pagina de stare, parteneri).
Blameless postmortem cu elemente de acțiune și date.
Alternări la apel, alerte de chat, actualizări de stare la fiecare N minute.
Doc traseu: cine/când/ce postat (comite, artefact, mediu, pavilion).
10) Securitate și conformitate (DevSecOps)
SAST/DAST/IAST, scanare secretă în CI.
mTLS servis↔servis, JWT cu mic TTL, rotație cheie.
Mascarea PII/PAN în jurnale/piste; VIERME admin jurnalele de activitate.
Geo-segregare: clustere/baze de date pe regiuni, rutare gateway.
Managementul schimbării: bilet/aprobare pentru zonele sensibile (portofel/limite).
11) DORA și FinOps
Frecvența de implementare (versiuni zilnice mici).
Timp de plumb pentru modificări (ideal: ceas).
MTTR (recuperare: minute/ore).
Modificarea ratei de eșec (țintă ≤ 15%).
FinOps: costul mediilor, caching RPS, piscine calde, auto-pauză a lucrătorilor, „costul pe tranzacție”.
12) Specificitatea iGaming
Vârfuri (turnee/live): înghețarea schimbărilor majore, încălzirea memoriei cache/imaginilor, creșterea cotelor.
Plăți/pungă: piscine/noduri individuale, SLO-uri ridicate, rulaj canar pe regiuni, telemetrie dublă de către furnizorii PSP.
CC/conformitate: cadență separată a versiunilor, post-actualizări obligatorii ale conformității.
Parteneri/Afiliați: SDK securizat, versiunea API cu fereastră de asistență și monitorizarea clienților vechi.
13) Exemplu CI/CD (YAML, Acțiuni GitHub → 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) Liste de verificare
Înainte de a fuziona la principal
- Unitate/CDC/integrare verde.
- Linters/SAST/licențele sunt curate.
- Actualizat OpenAPI/AsyncAPI scheme și migrații de baze de date.
- Fiche steaguri adăugate, folback definite.
Înainte de eliberare în prod
- Image semnat, SBOM atașat, vulnerabilități HIGH/CRIT închis.
- Tablouri de bord/alerte create; Porţile SLO sunt conectate.
- Plan de rollback, kill-switch, Shadow (dacă este necesar).
- Restricții regionale și politica de date confirmate.
Incidente
- Runbook găsit și actualizat.
- Comunicarea către utilizatori/parteneri (șablon, ETA).
- Postmortem la 48 de ore, elemente de acțiune cu date.
15) Anti-modele
„Reasamblare pentru fiecare mediu” (fără promovare artefact).
Implementați pași manuali fără audit/repetabilitate.
Migrații de baze de date „head-on”, răspunsuri API incompatibile.
Secrete în variabilele CI sau în depozit.
Caracteristici catastrofale fără steag/rollback.
Lipsa SLO/guardrails la eliberarea canarului.
Jurnale cu PII/PAN, fără mascare.
16) Șabloane microcopie utile
Release (către parteneri):- "Implementăm actualizarea modulului de plată în etape (10%→100%). Sunt posibile întârzieri pe termen scurt de până la 2 minute. ETA de finalizare - 9 p.m. EET"
- "Furnizorul de plăți X este instabil. Înscrierea poate dura până la 15 minute. Lucrăm la o rezolvare. Următoarea actualizare de stare este în 30 de minute"
- "Actualizarea este în aşteptare din cauza întârzierilor tot mai mari. Returnăm versiunea anterioară. Datele și operațiunile au fost salvate"
17) Procesul de implementare (4 sprinturi)
1. Standarde de calitate și conducte: SAST/Unit/CDC, imagine unică, semnături, SBOM.
2. Medii GitOps +: Helm/Kustomize, ArgoCD, promovare artefact, politică secretă.
3. Versiuni progresive și porți SLO: canar/umbră, parapete, auto-hub.
4. Fiabilitate și cost: teste de haos, autoscale/piscine calde, tablouri de bord FinOps.
Foaie de trișat finală
Trunchi + steaguri + loturi mici = viteză fără stres.
Artefact unic semnat + SBOM = lanț de aprovizionare controlat.
Politici GitOps + = reproductibilitate și audit.
Porti Canare/Blue-Green + SLO = versiuni sigure.
Extindeți-și-contract pentru DB = zero downtime.
Observabilitate și DORA = îmbunătățiri ușor de gestionat.
Izolare regională și conformitate = respectarea legilor și a încrederii.