7 min leitura • Guide 364 of 877
Estratégias de Deployment Contínuo
Deployment contínuo significa que toda mudança que passa nos testes vai para produção automaticamente. Isso requer confiança em seus testes, monitoramento e capacidades de rollback. Feito bem, acelera a entrega e reduz risco. Feito mal, cria caos.
Espectro de Deployment
| Nível | Automação | Risco |
|---|---|---|
| Manual | Baixo | Alto por deploy |
| Entrega Contínua | Alto | Menor |
| Deployment Contínuo | Completo | Menor (mudanças pequenas) |
Pré-requisitos
O que Você Precisa Primeiro
PRÉ-REQUISITOS CD
═════════════════
TESTES:
─────────────────────────────────────
Antes do deployment contínuo:
├── Testes unitários abrangentes
├── Testes de integração
├── Testes E2E para caminhos críticos
├── Alta confiança na suíte de testes
├── Testes capturam bugs reais
└── Sem testes instáveis
PIPELINE:
─────────────────────────────────────
├── CI rápido (< 15 minutos ideal)
├── Gates de qualidade automatizados
├── Sem passos manuais
├── Infraestrutura confiável
├── Execução paralela
└── Feedback rápido
MONITORAMENTO:
─────────────────────────────────────
├── Rastreamento de erro em tempo real
├── Monitoramento de performance
├── Dashboards de métricas de negócio
├── Alertas em anomalias
├── Saber quando quebra
└── Detecção rápida
ROLLBACK:
─────────────────────────────────────
├── Rollback com um clique
├── Rollback de migração de banco
├── Testado regularmente
├── Execução rápida (< 5 min)
├── Confiança para fazer rollback
└── Rede de segurança
FEATURE FLAGS:
─────────────────────────────────────
├── Desacoplar deploy de release
├── Controlar ativação de recurso
├── Capacidade de rollout gradual
├── Kill switch para problemas
├── Essencial para CD
└── Experimentação segura
Pipeline de Deployment
Fluxo Automatizado
PIPELINE CD
═══════════
ESTÁGIOS DO PIPELINE:
─────────────────────────────────────
Push para main
│
▼
┌─────────────┐
│ Build │ Compilar, dependências
└──────┬──────┘
│
▼
┌─────────────┐
│ Testes │ Rápidos, abrangentes
│ Unitários │
└──────┬──────┘
│
▼
┌─────────────┐
│ Testes de │ Banco, APIs
│ Integração │
└──────┬──────┘
│
▼
┌─────────────┐
│ Varredura │ SAST, varredura de dependências
│ de Segurança│
└──────┬──────┘
│
▼
┌─────────────┐
│ Deploy │ Ambiente staging
│ Staging │
└──────┬──────┘
│
▼
┌─────────────┐
│ Testes E2E │ Contra staging
│ Testes │
│ Smoke │
└──────┬──────┘
│
▼
┌─────────────┐
│ Deploy │ Deploy produção
│ Produção │ (canary ou completo)
└──────┬──────┘
│
▼
┌─────────────┐
│ Monitorar │ Observar métricas
│ & Verificar │ Rollback automático se problemas
└─────────────┘
VELOCIDADE DO PIPELINE:
─────────────────────────────────────
Tempos alvo:
├── Build: 2-3 min
├── Testes unitários: 3-5 min
├── Integração: 5-10 min
├── Deploy staging: 2-3 min
├── Testes E2E: 5-10 min
├── Deploy prod: 2-5 min
├── Total: 20-35 min
└── O mais rápido possível
Estratégias de Rollout
Abordagens de Deployment
ESTRATÉGIAS DE ROLLOUT
══════════════════════
DEPLOYMENT ROLLING:
─────────────────────────────────────
Substituição gradual:
├── Deploy para subconjunto de servidores
├── Health check passa
├── Deploy para mais
├── Eventualmente todos substituídos
├── Zero downtime
└── Transição gradual
[Old] [Old] [Old] [Old]
↓
[New] [Old] [Old] [Old]
↓
[New] [New] [Old] [Old]
↓
[New] [New] [New] [New]
DEPLOYMENT CANARY:
─────────────────────────────────────
Testar com tráfego pequeno:
├── Deploy para 1-5% do tráfego
├── Monitorar métricas
├── Comparar com baseline
├── Se bom, expandir
├── Se ruim, fazer rollback
└── Risco controlado
Divisão de tráfego:
│ 95% → [Versão Antiga]
│ 5% → [Versão Nova] ← Observar de perto
BLUE-GREEN:
─────────────────────────────────────
Ambientes paralelos:
├── Blue: Produção atual
├── Green: Versão nova
├── Testar green completamente
├── Trocar tráfego
├── Manter blue para rollback
└── Troca instantânea
┌──────────┐
Users ─┤ Router ├─── Blue (atual)
│ │
│ ├─── Green (nova)
└──────────┘
│
Trocar quando pronto
FEATURE FLAGS:
─────────────────────────────────────
Deploy código, controlar ativação:
├── Código implantado mas flag off
├── Habilitar para usuários internos
├── Habilitar para 10% dos usuários
├── Habilitar para todos
├── Separar deploy de release
└── Controle máximo
Monitoramento
Monitoramento de Deployment
MONITORAMENTO DE DEPLOYMENT
══════════════════════════
MÉTRICAS CHAVE PARA OBSERVAR:
─────────────────────────────────────
Após deploy:
├── Taxas de erro
├── Tempos de resposta
├── Uso CPU/memória
├── Volume de requisições
├── Métricas de negócio
└── Comparado com baseline
VERIFICAÇÕES AUTOMATIZADAS:
─────────────────────────────────────
Verificação pós-deploy:
├── Verificação de endpoint de saúde
├── Suíte de testes smoke
├── Threshold de taxa de erro
├── Threshold de latência
├── Gatilhos de rollback automático
└── Segurança automatizada
DASHBOARD:
─────────────────────────────────────
Visibilidade em tempo real:
│ Taxa de Erro: 0.1% ✓ (baseline: 0.1%)
│ Latência p99: 120ms ✓ (baseline: 115ms)
│ Requisições: 1.2K/min ✓
│ CPU: 45% ✓
│ Deploys hoje: 3
│ Último deploy: 15 min atrás
└── Saúde em um relance
ALERTAS:
─────────────────────────────────────
Gatilhos de alerta:
├── Taxa de erro > 1%
├── Latência > 2x baseline
├── Health checks falhados
├── Memória > 90%
├── Notificação imediata
└── Resposta rápida
Rollback
Recuperação Rápida
ESTRATÉGIA DE ROLLBACK
══════════════════════
TIPOS DE ROLLBACK:
─────────────────────────────────────
Rollback instantâneo:
├── Implantar versão anterior
├── Kubernetes: kubectl rollout undo
├── Container: imagem anterior
├── Blue-green: voltar
├── < 5 minutos
└── Sempre possível
Desabilitar feature flag:
├── Desligar recurso
├── Código fica implantado
├── Recurso desabilitado
├── Efeito instantâneo
├── Sem deploy necessário
└── Opção mais rápida
QUANDO FAZER ROLLBACK:
─────────────────────────────────────
Gatilhar rollback:
├── Pico na taxa de erro
├── Degradação de performance major
├── Bug crítico descoberto
├── Problemas voltados ao cliente
├── Não esperar, fazer rollback
└── Corrigir depois
ROLLBACK AUTOMATIZADO:
─────────────────────────────────────
Critérios:
├── Taxa de erro > threshold por 5 min
├── Health checks falhados x3
├── Latência p99 > 2x baseline
├── Auto-reverter para anterior
├── Notificar equipe
└── Rede de segurança automatizada
CONSIDERACOES DE BANCO:
─────────────────────────────────────
├── Migrações forward-compatible
├── Mudanças aditivas apenas
├── Código antigo funciona com schema novo
├── Deploys de migração separados
├── Cuidadoso com mudanças de dados
└── Migrações amigáveis ao rollback
Integração GitScrum
Rastreando Deployments
GITSCRUM PARA CD
════════════════
RASTREAMENTO DE DEPLOYMENT:
─────────────────────────────────────
├── Vincular commits a tarefas
├── Histórico de deployment visível
├── O que foi enviado quando
├── Rastreabilidade
└── Conectado
TAREFAS DE DEPLOYMENT:
─────────────────────────────────────
├── Rótulo: deployment
├── Rastrear melhorias de deployment
├── Melhorias de pipeline
├── Configuração de monitoramento
└── Melhoria contínua
RASTREAMENTO DE INCIDENTE:
─────────────────────────────────────
Quando problemas ocorrem:
├── Criar tarefa de incidente
├── Vincular ao deployment
├── Análise de causa raiz
├── Ações de melhoria
└── Aprender e melhorar
Melhores Práticas
Para Deployment Contínuo
- Mudanças pequenas — Menos risco por deploy
- Testes abrangentes — Confiança para implantar
- Feature flags — Controlar releases
- Monitorar tudo — Saber quando quebrado
- Rollback rápido — Recuperar rapidamente
Anti-Padrões
ERROS DE CD:
✗ Implantar sem testes
✗ Sem monitoramento
✗ Rollback lento
✗ Mudanças big bang
✗ Sem feature flags
✗ Ignorar falhas
✗ Sem ambiente staging
✗ Migrações de banco acopladas