Staging-pipline e lançamentos
1) Por que precisa de staging-pipline
O Staging-Pipeline é um caminho padrão de artefato de PR a produção com verificação de qualidade e segurança «padrão». Objetivos:- reprodução de montagem e lançamento;
- Um Fidbek rápido e previsível;
- Minimizar o risco (rotações progressivas, fichiflags, retrações);
- conformidade com a complicação e controle de alterações.
2) Fluxo de fornecimento de referência (high-level)
1. PR → verificações automáticas (lint, unit, sAST, licenças).
2. Build → imagem/pacote determinado, assinatura e SBOM.
3. Teste on Ephemeral → suprimento-ambiente per-PR.
- pod de imagem;
- -, testes de integração, e2e;
- DAST/IAST, regressão, smoke de carga;
- UAT/QA manual, se necessário.
- 5. Release Candidate (RC) → freeze window → Prod (canary/blue-green).
- 6. Post-deploy verificação e revezamento automático por SLO/erro budet.
- 7. Runbook/Changelog → encerramento do lançamento e retrospectiva.
3) Modelo YAML padrão de pipline (extrato)
yaml
.ci/release.pipeline.yml stages: [verify, build, test, stage, approve, release, post]
verify:
- run: make lint test:unit sbom sast sca build:
- run:
docker build -t registry/app:$GIT_SHA.
cosign sign registry/app:$GIT_SHA oras push registry/sbom:$GIT_SHA sbom.json test:
- run: make test:contract test:integration
- run: make deploy:preview && make test:e2e stage:
- run: make deploy:staging IMAGE=registry/app:$GIT_SHA
- run: make test:e2e:staging && make dast approve:
manual gate: CAB/QA lead
- type: manual required_roles: [release_manager, qa_lead]
release:
- run: make release:canary TRAFFIC=5%
- run: make release:progressive STEPS="5,25,50,100"
post:
- run: make verify:slo && make notify && make create:changelog
4) Gates e critérios de preparação (Quality Gates)
Código e segurança: lentes, revestimento, SAST/SCA, política de dependências, falta de «critical/high».
Contratos: compatibilidade de esquema (API/evento), Pact/Buf verificação.
Testes: unit/integração/e2e-limite de passagem, estabilidade (flake-rate).
Smoke de carga: p95/p99 dentro do orçamento, sem degradação.
DAST/IAST: Não há findings críticos, cenário pen-teste para caminhos sensíveis.
Observabilidade: Os dashboards/alertas «as código» foram atualizados e os runbooks foram anexados.
FAB/UAT: confirmação nas janelas de lançamento (se necessário por regulação/negócio).
5) Estratégias de lançamento
Canary - aumento gradual de 5% → 25% → 50% → 100%), roll-forward/rollback automático em SLO e anomalias.
Blue-Green - ambientes paralelos; alternador instantâneo, simples retrocesso.
Função Flags - Inclusão lógica sem redeploy; capacidade «dark launch» e A/B.
Shadow/Traffic Mirroring - Tráfego passivo para a nova versão sem afetar os usuários.
Ring Deployments - ondas por região/tenante.
6) Retrocessos e política de segurança de lançamentos
Crescimento de error-rate, p95/TTFB acima do limite, crescimento de 5xx/timeout, elevação de DLQ.
Revezamento manual: comando '/rollback <service> <sha> 'no bate-papo, um botão no console de lançamento.
Freeze windows: Não é permitido iniciar eventos críticos (torneios/jogos de pico).
Changelog & Release Notas: geração de PR, tags de SemVer, componentes, migrações.
7) Migração de base de dados e compatibilidade
Expand → Migrate → Contract:1. adicionar campos/índices compatíveis;
2. O Depl da aplicação (lendo/escrevendo em ambos os circuitos);
3. migração de dados por pés de fundo;
4. remover o antigo.
Os circuitos são versionados, a migração idempotent, dry-run para o estaging.
Protect destrutive SQL: require flag/approval, bacapes automáticos e plano-check.
8) Ficheflags e ativação progressiva
Divida as bandeiras de ops (para uso seguro) e as bandeiras de produção.
Inclusão de público: porcentagem, geo, tenante, papel.
Métricas de bandeiras: efeitos sobre conversão, latency, erros.
Em caso de problemas, a rolagem da bandeira é mais rápida do que a reversão.
9) Observabilidade como parte do lançamento
Trailers: «trace _ id» do gateway ao BD/filas; comparando versões antigas/novas.
Métricas: p50/p95/p99, error-rate, RPS, saturação, DLQ, retraí, Time-to-Wallet/Business KPI.
Logs: estruturados, camuflagem PII, correlação 'request _ id'.
Orçamento SLO, páginas de emergência on-call, edições automáticas.
10) Segurança da cadeia de fornecimento (suply chain)
SBOM para cada bild, armazenamento e aferição de formatação.
Assinaturas de imagem (cosign), verificação em um cluster (policy adesion).
Avaliação SLSA, origem comprovada do artefacto.
Policy-as-Code (OPA/Conftest): deny-by-default para PR de infraestrutura.
Segredos: apenas KMS, tokens curtos, rotações em pipas.
11) Controle de alterações e processos
RFC → CRQ → FAB: Alteração de comportamento/contrato documentada com antecedência.
Release Calendar: janelas visíveis por produtos/regiões/comandos.
Runbooks: para cada componente, procedimentos de ativação/reversão/diagnóstico.
Postmortem/Retro: após lançamentos significativos, análise e ação.
12) Perfis de testes de staging
API/Events: bloqueia alterações incompatíveis.
Cenários de Integração/e2e: «Depósito», «KYC», «conclusão».
Smoke de carga: picos representativos; Vigiamos os limites de recursos.
Cenários de caos, desligamento do provedor, aumento da latência, flappings de rede.
Monitoramento sintético: transações de teste programadas.
13) Exemplo Makefile objetivos de lançamento (fatia)
makefile release: verify build test stage approve prod post verify:
@make lint test:unit sbom sast sca build:
docker build -t $(IMG).
cosign sign $(IMG)
test:
@make test:contract test:integration deploy:preview test:e2e stage:
kubectl apply -k deploy/staging approve:
@echo "Waiting for QA/CAB approval..."
prod:
make release:canary TRAFFIC="5 25 50 100"
post:
@make verify:slo notify changelog
14) Papéis e responsabilidades
Dave/Team: qualidade de código, testes, migração, runbooks.
QA: cenários UAT/regressão, controle de qualidade em gates.
SRE/Plataforma: confiabilidade, observabilidade, políticas.
Release Gerente: calendário, janelas, FAB, solução final.
Segurança: SAST/DAST/SCA, suply-chain, política de segredos.
15) Modelo da maturidade de lançamentos
1. Base - verificações manuais, lançamentos raros, reversões são difíceis.
2. Avançado - padrão CI/CD, circuito de staging, canary/blue-green, lançamentos frequentes.
3. Especialista - entrega progressiva por tenentes/regiões, função flags-first, policy-as-código, auto-revezamento por SLO, rastreabilidade completa e SLSA.
16) Mapa de trânsito de implementação
M0-M1 (MVP): modelo de pipline, build + sign + SBOM, staging-depl, testes básicos e gates.
M2-M3: canary/blue-green, excesso per-PR, contrato-teste, DAST, sintético checks.
M4-M6: função flags plataforma, shadow traffic, policy-as-código, revezamento automático, release calendar + FAB-workflow.
M6 +: ring-deployments por região, avaliações SLSA e adesão rigorosa, automação completa de runbooks.
17) Folha de cheque antes do lançamento de prod
- Imagem assinada, SBOM carregado e ligado ao lançamento.
- Os contratos são compatíveis, os testes são verdes, e2e foram realizados em staging.
- As migrações foram testadas (dry-run), o bacap está pronto e o plano de reversão foi descrito.
- Os dashboards/alertas foram atualizados e os gates SLO estão ativos.
- Runbook e Changelog foram publicados e as janelas de lançamento estão alinhadas.
- As funções flags estão configuradas para ativar progressivamente.
- Os limites de freeze foram cumpridos, o on-call está pronto.
Conclusão breve
O staging-pipline bem projetado transforma os lançamentos em uma rotina controlada: modelos unificados, quality gates claros, cadeia de fornecimento segura, sinalização progressiva e observabilidade reduzem o risco e reduzem o tempo de produção, mantendo o controle sobre a qualidade e as métricas de negócios.