GH GambleHub

Práticas DevOps e CI/CD

1) Objetivos e princípios

Rápido e seguro: ciclos curtos, pequenos lotes de alterações, verificações automáticas.
Repetição: infraestrutura como código (IaC), ambiente = código + política.
Observabilidade: métricas/trailers/logs da caixa, SLO como contrato.
Auditoria, controle de mudanças, isolamento regional de dados.

Regra de ouro, «Primeiro a qualidade, depois a velocidade, senão a velocidade nunca aparecerá».

2) Ramificações e ambientes

Trunk-based + função flags - seleção básica.

Ramos de fiche curtos (≤ 2-5 dias), merge diária em trunk.
Bandeiras (server-side) para entregas escalonadas e saques seguros.
Ambiente git: 'dave' → '→' prod '(+ regional' prod-eu ',' prod-latam ').
Promoção de artefatos: uma imagem montada é promovida através de ambientes (imutável tag by digest).

Quando GitFlow: lançamentos raros de montagens regulatórias/SDK - então lançamentos + «hardening».

3) Pirâmide de qualidade e «linha vermelha»

1. Análise estática (SAST, lentes, licenças).
2. Testes Unit/Property-based (segundos).
3. Contracto-testes (CDC) para API e eventos (OpenAPI/AsyncAPI, Schema Registry).
4. Integração (Testcontainers, corretores locais).
5. E2E caminhos críticos: registro → KYC → depósito → lançamento do jogo → saída.
6. Testes de carga/caos para pagamentos/carteira/provedores de jogos.

A qualidade não passa pelo depósito. Não há exceções manuais sem mudança-record.

4) Cadeia de fornecimento de software (suply chain)

SBOM para cada imagem/pacote (CycloneDX/SPDX).
Assinaturas de artefatos (cosign), política «apenas assinados» em admissão.
SCA/Dependabot: vulnerabilidades e licenças.
Provenance/SLSA: montagens reproduzidas, agente de bild fechado, atestações.
Segredos: gerenciador (KMS/External Secret), nenhum segredo em repo/logs.

5) GitOps и IaC

Infra Código: Terraform/Pulumi para a nuvem; Helm/Kustomize para k8s.
Controlador GitOps (ArgoCD/Flux): manifestos declaratórios, revezamento PR, auditório trail.
Janelas/congelamento: semanas de torneio/relógio de pico - paragem auto de lançamento.
Políticas OPA/Kyverno: no ': latest', não-root, read-only FS, proibição de hostPath.

6) Entrega progressiva

Canary: 1→5→10→25→50→100% em métricas de guardrail (p95 latency, 5xx, erro budet burn).
Blue-Green: botão rápido + plano de reversão.
Shadow/Mirroring: cópia de solicitações sem efeito de resposta (para os novos adaptadores PSP).
Função flags: inclusão por segmento (região/papel/parceiro/canal) + kill-switch.

7) Migração de banco de dados (expand-and-contract)

Passo 1: Ampliando o padrão (novas colunas/índices) - compatível com o código antigo.
Passo 2: pod de código que escreve em ambas as versões/campos.
Passo 3: Migração de dados por fundo, métricas de progresso.
Passo 4: alterna a leitura para novos campos.
Passo 5: remover o antigo é um lançamento separado.
Proibição de DDL de bloqueio em horário nobre; para tabelas altas - migração online.

8) Observabilidade e SLO

Métricas: RPS, p50/95/99, 4xx/5xx, saturação (CPU/mem/queue), DLQ/corretores.
Métricas de negócios: TTP (time-to-play), TtW (time-to-wallet), FTD-sucess, KYC-TtV.
Trace-ID, da cabana ao BD.
SLO: Por exemplo, "Deposit p95 ≤ 300-500 ms", "sucess ≥ 98. 5%`, `availability ≥ 99. 9%`.
Burn rate alerts + paragem auto de lançamento em degradação.

9) Incidentes, pós-mortem, turnos

Runbooks para fluxos críticos (depósito/saída/CUS, jogos ao vivo).
Escala de prioridade: P1... P4, proprietário, ETA, comunicação (banner, status, parceiros).
Blameless pós-mortem com action items e datas.
Alternações on-call, alertas de bate-papo, atualizações estatutárias a cada N minutos.
Pista de doutor: quem/quando/o que postou (commit, artefacto, ambiente, bandeira).

10) Segurança e Complacência (DevSecOps)

SAST/DAST/IAST, segredo scan em CI.
mTLS servis↔servis, JWT com TTL pequeno, rotação de chaves.
Masking PII/PAN em logs/trens; Registros de ação admin WORM.
Geo-segregation: clusters/BD por região, routagem por gateway.
Mudar management: tíquete/approval para zonas sensíveis (carteira/limites).

11) Métricas DORA e FinOps

Deployment Frequency (pequenos lançamentos diários).
Lead Time for Changes (ideal: relógio).
MTTR (recuperação: minutos/relógio).
Mudar Failure Rate (meta ≤ 15%).
FinOps: custo dos ambientes, armazenamento RPS, balas quentes, paragem de carros, «pé por transmissão».

12) iGaming-especificidades

Picos (torneios/live): congelamento de grandes alterações, aquecimento de dinheiro/imagem, bustos de quotas.
Pagamentos/carteira: pool/nódulos individuais, SLO elevado, rollout de canário por região, telemetria dupla dos provedores PSP.
CUS/complacência: cadence de lançamentos individuais, pós-aprujos obrigatórios da complacência.
Associados/associados: SDK seguro, API com janela de suporte e monitoramento de clientes antigos.

13) Exemplo de CI/CD (YAML, GitHub Action → 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
💡 Ideia: Coletando e assinando a única imagem, publicando SBOM, promovendo através de GitOps; O prod-rollout é canarinho, com guarrails.

14) Folhas de cheque

Antes do merge no principal

  • Unit/CDC/integração verde.
  • Linters/SAST/licenças limpas.
  • Os esquemas de OpenAPI/AsyncAPI e migração de banco de dados foram atualizados.
  • As bandeiras fiche foram adicionadas e os folbeques definidos.

Antes do lançamento no prod

  • Imagem assinada, SBOM anexado, vulnerabilidades HIGH/CRIT encerradas.
  • Os dashboards/alertas foram criados; Os gates SLO estão ligados.
  • Plano de reversão, kill-switch, shadow (se necessário).
  • Limitações regionais e políticas de dados foram confirmadas.

Incidentes

  • Runbook encontrado e relevante.
  • Comunicação aos usuários/parceiros (modelo, ETA).
  • Depois de 48 horas, action items com datas.

15) Anti-pattern

«Coletando de novo para cada ambiente» (sem promoção de artefato).
Passos manuais do deploy sem auditoria/repetição.
Migrações de BB na frente, respostas de API incompatíveis.
Segredos nas variáveis CI ou no repositório.
Falhas catastróficas sem bandeira/reversão.
Falta de SLO/guardrails no lançamento canário.
Logs PII/PAN, sem disfarce.

16) Modelos úteis microcopy

Lançamento (parceiros):
  • "Nós estamos atualizando o pod de pagamento em etapas (10%→100%). Pode haver atrasos de até 2 minutos na inscrição. ETA final - 21:00 EET"
Incidente (banner no produto):
  • "O provedor de pagamentos X é instável. A inscrição pode demorar até 15 minutos. Estamos a trabalhar na correção. A próxima atualização de status é daqui a 30 minutos
Retrocesso:
  • "A atualização foi suspensa devido ao aumento dos atrasos. Devolvemos a versão anterior. Os dados e as operações foram salvas

17) Processo de implementação (4 sprint)

1. Padrões de qualidade e pipeline: SAST/Unit/CDC, imagem única, assinaturas, SBOM.
2. GitOps + ambiente: Helm/Kustomize, ArgoCD, promoção de artefato, política de segredos.
3. Lançamentos progressivos e SLO-gates: canary/shadow, guardrails, auto-ausa.
4. Confiabilidade e custo: testes de caos, scale/balas quentes, FinOps-dashboard.

Esparguete final

Trunk + flags + pequenos lotes = velocidade sem stress.
Artefacto único assinado + SBOM = cadeia de fornecimento controlada.
GitOps + políticas = reprodução e auditoria.
Canary/Blue-Green + SLO-gates = lançamentos seguros.
Expand-and-contract para BB = inatividade zero.
Observabilidade e DORA = melhorias controladas.
Isolamento regional e complacência = conformidade com as leis e confiança.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.