GH GambleHub

Pratiche DevOps e CI/CD

1) Obiettivi e principi

Veloce e sicuro: cicli brevi, piccole partite di modifiche, controlli automatici.
Ripetibilità: infrastruttura come codice (IaC), ambiente = codice + criterio.
Osservabilità: metriche/roulotte/logi da scatola, SLO come contratto.
Verifica, controllo dei cambiamenti, isolamento regionale dei dati.

La regola d'oro è: «Prima la qualità, poi la velocità, altrimenti la velocità non arriverà mai».

2) Rami e ambienti

Trunk-based + feature flags - Selezione di base.

Brevi rami fiche (2-5 giorni), merge giornaliere in trunk.
Flag (server-side) per spedizioni incrementali e riparazioni sicure.
Ambienti git: 'dev' ' ' ' prod '(+ regionali' prod-eu ',' prod-latam ').
Promozione dei manufatti: un'immagine assemblata viene promossa attraverso ambienti (immutabile tag by digest).

Quando si dice: rari lanci degli assiemi di regolazione/SDK - allora i rami di rilascio + «hardening».

3) Piramide di qualità e linea rossa

1. Analisi statica (SAST, Linter, Licenze).
2. Test Unit/Property-based (secondi).
3. Contract-test (CDC) per API ed eventi (OpenAPI/AsyncAPI, Schema Registry).
4. Integrazioni (Testcontainers, broker locali).
5. E2E percorsi critici: registrazione di un KYC, deposito per l'avvio del gioco.
6. Test di carico/caos per pagamenti/portafogli/provider di giochi.

La qualità non passa dal deposito. Non ci sono eccezioni manuali senza change-record.

4) Catena di fornitura software (supply chain)

SBOM per ogni aspetto/pacchetto (CycloneDX/SPDX).
Etichette di manufatti (cosign), criteri «solo firmati» nell'admissione.
SCA/Dipendabot - vulnerabilità e licenze.
Provenance/SLSA - Assemblaggio riproduttivo, agente bild chiuso, attrazioni.
Segreti nel gestore (KMS/Esternal Secret), nessun segreto nei repo/login.

5) GitOps и IaC

Infra as Code: Terraform/Pulumi per la nuvola; Helm/Kustomize per k8s.
Controller GitOps (ArgoCD/Flux) - Manifesti dichiarativi, revival PR, audittrail.
Finestre/congelamento: settimane di tornei/orologi di punta - auto-pausa di rilascio.
Criteri OPA/Kyverno: no ': latest', no-root, read-only FS, disabilitazione.

6) Spedizione progressiva

Canary: 1→5→10→25→50→100% per metriche di guardrail (p95 latency, 5xx, errore budget burn).
Blue-Green - Pulsante di scelta veloce + piano di ripristino.
Shadow/Mirroring - Copia delle query senza impatto sulla risposta (per i nuovi adattatori PSP).
Feature flags - Abilita per segmenti (regione/ruolo/partner/canale) + kill-switch.

7) Migrazioni database (expand-and-contract)

Passo 1: espandiamo lo schema (nuove colonne/indici) - compatibile con il codice precedente.
Passo 2: un deposito di codice che scrive in entrambe le versioni/campi.
Passo 3 - Migrazione dei dati in background, metriche di progresso.
Passaggio 4 - Passa alla lettura dei nuovi campi.
Passo 5: l'eliminazione del vecchio è una release separata.
Non bloccare il DDL in prima serata; per le tabelle più alte, le migrazioni online.

8) Osservabilità e SLO

Metriche: RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/broker.
Metriche aziendali: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
Trace-id dal gateway al database.
SLO: «Deposit p95, 300-500 ms», «success» 98. 5%`, `availability ≥ 99. 9%`.
Burn rate alert + rilascio auto-pausa in caso di degrado.

9) Incidenti, post-mortem, turni

Runbooks per flussi critici (deposito/output/CUS, giochi live).
La scala di priorità è P1... P4, proprietario, ETA, comunicazione (banner, stato pagina, partner).
Blameless postmortem con action items e date.
Alternanze on-call, avvisi chat, aggiornamenti statali ogni N minuti.
Traccia doc: chi/quando/cosa ha postato (commit, artefatto, ambiente, bandiera).

10) Sicurezza e compilazione (DevSecOps)

SAST/DAST/IAST, segreto-scan in CI.
, JWT con TTL, rotazione delle chiavi.
Masking PII/PAN in cassetti/roulotte; Registri WORM di azioni adminate.
Geo-segregation: cluster/database per regione, routing tramite gateway.
Change management: ticket/approval per zone sensibili (portafoglio/limiti).

11) Metriche e FinOps DORA

Deployment Frequency (release giornaliere piccole).
Lead Time for Changes (ideale: orologio).
MTTR (ripristino: minuti/ore).
Change Failure Rate (obiettivo 15%).
FinOps il costo degli ambienti, la cache RPS, i pool caldi, la pausa auto dei worker, «cost per le transizioni».

12) Specifica iGaming

Picchi (tornei/live) - Congelamento di grandi modifiche, riscaldamento cache/immagini, busti di quote.
Pagamenti/portafogli: pool/nodi separati, SLO avanzato, rollout canario per regione, doppia telemetria dei provider PSP.
CUS/Compilation: cadence di rilascio separato, post-apruzzi obbligatori della compilazione.
Partner/affiliati: SDK sicuro, API con finestra di supporto e monitoraggio dei vecchi client.

13) Esempio CI/CD (YAML, Action)

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
💡 Idea: raccogliamo e firmiamo l'unica immagine, pubblichiamo SBOM, promuoviamo attraverso il GitOps; Il prod-rollout è di canaria, con garrails.

14) Assegno fogli

Prima del merge nel main

  • Unità/CDC/integrazione verde.
  • I lintern/SAST/licenze sono puliti.
  • Gli schemi di OpenAPI/AsyncAPI e migrazione del database sono stati aggiornati.
  • Flag Ficce aggiunti, follback definito.

Prima del lancio in prod

  • Immagine firmata, SBOM allegato, vulnerabilità HIGH/CRIT chiusa.
  • I dashboard/alert sono stati creati; I gate SLO sono collegati.
  • Piano di ripristino, kill-switch, Shadow (se necessario).
  • I vincoli regionali e i criteri dei dati sono confermati.

Incidenti

  • Runbook trovato e aggiornato.
  • Comunicazione utente/partner (modello, ETA).
  • Postmortem alle 48, action items con date.

15) Anti-pattern

«Ricomponiamo per ogni ambiente».
Passaggi manuali senza controllo/ripetibilità.
Migrazioni di database in testa, risposte API incompatibili.
Segreti nelle variabili CI o nel repository.
Fiocchi catastrofici senza bandiera o rientro.
Assenza di SLO/Guardrail per il rilascio canaresco.
Loghi PII/PAN, nessuna maschera.

16) Modelli di microcopy utili

Rilascio (partner):
  • "Stiamo aggiornando il modulo di pagamento in modo graduale (10%→100%). Sono possibili ritardi di iscrizione di breve durata fino a 2 minuti. ETA completamento - ore 21:00 EET"
Incidente (banner nel prodotto):
  • "Il provider X è instabile. L'iscrizione può richiedere fino a 15 minuti. Stiamo lavorando ad una correzione. Il prossimo aggiornamento è tra 30 minuti
Reimpostazione:
  • Aggiornamento sospeso a causa dell'aumento dei ritardi. Restituisce la versione precedente. Dati e operazioni salvati"

17) Processo di implementazione (4 sprint)

1. Standard di qualità e pipline: SAST/Unit/CDC, immagine unica, firme, SBOM.
2. GitOps + ambiente: Helm/Kustomize, ArgoCD, promozione dell'artefatto, politica dei segreti.
3. Release progressive e SLO-gate: canary/shadow, guardrail, auto.
4. Affidabilità e costi: test di caos, scale auto/pool caldi, FinOps-dashboard.

Scorciatoia finale

Trunk + flags + piccoli lotti = velocità senza stress.
Un unico manufatto firmato + SBOM = catena di fornitura controllata.
GitOps + criteri = riproduzione e verifica.
Canary/Blue-Green + SLO-gate = rilasci sicuri.
Expand-and-contract per database = interruzioni zero.
Osservabilità e DORA = miglioramenti gestiti.
Isolamento e compilazione regionale = conformità e fiducia.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.