Testar grátis
7 min leitura Guide 329 of 877

Estratégias Automação Deployment

Deployments manuais são lentos, propensos erro, e estressantes. Deployments automatizados são repetíveis, rápidos, e entediantes—exatamente o que você quer. Este guia cobre estratégias para construir automação deployment que equipes podem confiar.

Abordagens Deployment

EstratégiaNível RiscoVelocidade Rollback
Blue-greenBaixoInstantâneo
CanaryBaixoRápido
RollingMédioMédio
All-at-onceAltoLento

Pipeline CI/CD

Automação End-to-End

ESTRUTURA PIPELINE CI/CD
════════════════════════

ESTÁGIOS:
─────────────────────────────────────
┌─────────────────────────────────────────────────────────────┐
│                     PIPELINE CI/CD                          │
├─────────────────────────────────────────────────────────────┤
│  Build       Test        Deploy         Deploy       Deploy │
│  ─────       ────        ──────         ──────       ────── │
│                          Staging        Canary       Prod   │
│  ┌─────┐    ┌─────┐     ┌─────┐        ┌─────┐     ┌─────┐ │
│  │Build│───▶│Tests│───▶│Stage│──[OK]─▶│Canary│──▶│ Prod │ │
│  └─────┘    └─────┘     └─────┘        └─────┘     └─────┘ │
│                            │              │           │     │
│                         [Auto]         [Auto]     [Manual]  │
│                                       ou [Auto]             │
└─────────────────────────────────────────────────────────────┘

ESTÁGIO BUILD:
─────────────────────────────────────
├── Compile/transpile código
├── Instale dependências
├── Gere artefatos
├── Crie imagem Docker
├── Armazene em registry
└── Versionado, reprodutível

ESTÁGIO TEST:
─────────────────────────────────────
├── Testes unitários
├── Testes integração
├── Scan segurança
├── Checks lint e estilo
├── Verificação build
└── Gates qualidade

DEPLOY STAGING:
─────────────────────────────────────
├── Automático em merge main
├── Ambiente full production-like
├── Execute testes smoke
├── Teste manual possível
└── Gate antes produção

DEPLOY PRODUÇÃO:
─────────────────────────────────────
├── Aprovação manual (opcional)
├── Canary primeiro (porcentagem)
├── Monitore por erros
├── Rollout full se saudável
├── Auto-rollback em falha
└── Zero downtime

Deployment Blue-Green

Capacidade Rollback Instantâneo

DEPLOYMENT BLUE-GREEN
═════════════════════

CONCEITO:
─────────────────────────────────────
Dois ambientes idênticos:
├── Blue: Produção atual
├── Green: Nova versão
├── Só um ativo por vez
├── Switch é instantâneo
└── Rollback = switch back

FLUXO:
─────────────────────────────────────
1. Blue está live (versão atual)
2. Deploy nova versão para Green
3. Teste Green completamente
4. Mude tráfego para Green
5. Green está agora live
6. Blue torna-se staging/backup
7. Se problemas: switch back para Blue

    Antes switch:
    ┌─────────────┐     ┌─────────────┐
    │    BLUE     │     │   GREEN     │
    │   v1.4.0    │     │   v1.5.0    │
    │   (LIVE)    │     │  (testing)  │
    └──────┬──────┘     └─────────────┘
           │
    ──────▶│ Tráfego
    
    Após switch:
    ┌─────────────┐     ┌─────────────┐
    │    BLUE     │     │   GREEN     │
    │   v1.4.0    │     │   v1.5.0    │
    │  (backup)   │     │   (LIVE)    │
    └─────────────┘     └──────┬──────┘
                               │
                        ──────▶│ Tráfego

BENEFÍCIOS:
─────────────────────────────────────
├── Rollback instantâneo (segundos)
├── Zero downtime
├── Teste completo antes go-live
├── Separação clara
└── Confiança em deployments

CONSIDERATIONS:
─────────────────────────────────────
├── Precisa 2x infraestrutura (temp)
├── Compatibilidade database
├── Tratamento sessão
├── Aquecimento cache
└── Vale complexidade

Releases Canary

Rollout Gradual

DEPLOYMENT CANARY
═════════════════

CONCEITO:
─────────────────────────────────────
Shift tráfego gradual:
├── Deploy nova versão
├── Envie pequeno % tráfego
├── Monitore por issues
├── Aumente % se saudável
├── Rollout full ou rollback
└── Risco controlado

FASES:
─────────────────────────────────────
Fase 1: 1% tráfego (canary)
├── Nova versão recebe 1%
├── Monitore erros, latência
├── Compare com baseline
├── 15-30 minutos
└── Detecção rápida

Fase 2: 10% tráfego
├── Aumente se Fase 1 boa
├── Mais tráfego valida
├── Monitore mesmas métricas
├── 30 minutos
└── Construindo confiança

Fase 3: 50% tráfego
├── Rollout significativo
├── Observe cuidadosamente
├── Pronto para rollback
└── Aproximando full

Fase 4: 100% tráfego
├── Rollout completo
├── Monitoramento continua
├── Versão antiga aposentada
└── Deployment completo

AUTOMAÇÃO:
─────────────────────────────────────
Canary automatizado:

stages:
  - deploy-canary:
      weight: 1%
      duration: 15m
      
  - analyze-canary:
      check: error_rate < 0.1%
      check: latency_p99 < 200ms
      on_fail: rollback
      
  - expand-rollout:
      weights: [10%, 50%, 100%]
      duration_each: 30m
      on_fail: rollback

Estratégias Rollback

Recuperação Rápida

ESTRATÉGIAS ROLLBACK
═════════════════════

ROLLBACK AUTOMÁTICO:
─────────────────────────────────────
Trigger rollback em:
├── Taxa erro > threshold
├── Spike latência
├── Falhas health check
├── Issues memória/CPU
├── Falhas teste smoke
└── Sem intervenção manual necessária

Exemplo config:
rollback:
  triggers:
    - condition: error_rate > 1%
      duration: 5m
    - condition: p99_latency > 500ms
      duration: 10m
    - condition: health_check == failing
      count: 3
  action: revert_to_previous

ROLLBACK INSTANTÂNEO (Blue-Green):
─────────────────────────────────────
├── Switch tráfego
├── Segundos para recuperar
├── Versão anterior ainda rodando
├── Sem redeploy necessário
└── Melhor experiência rollback

REVERT DEPLOY (Redeploy):
─────────────────────────────────────
├── Deploy versão anterior
├── Minutos para recuperar
├── Precisa tempo deployment
├── Funciona com qualquer estratégia
└── Abordagem comum

ROLLBACK FEATURE FLAG:
─────────────────────────────────────
├── Desabilite feature flag
├── Efeito instantâneo
├── Sem deployment necessário
├── Controle granular
├── Melhor para issues feature
└── Separado de rollback deploy

Migrações Database

Mudanças Schema Seguras

ESTRATÉGIA MIGRAÇÃO DATABASE
════════════════════════════

PRINCÍPIOS:
─────────────────────────────────────
├── Sempre backward compatible
├── Separado de deploy app
├── Script rollback pronto
├── Teste em staging primeiro
├── Monitore durante migração
└── Nunca quebre app rodando

PADRÃO EXPAND-CONTRACT:
─────────────────────────────────────
Adicionando coluna:
1. Expand: Adicione nova coluna (nullable)
2. Deploy: App escreve para ambos
3. Migrate: Preencha dados velhos
4. Contract: Torne obrigatório, remova velho

Exemplo:
Fase 1 (expand):
  ALTER TABLE users ADD COLUMN email_new VARCHAR;

Fase 2 (deploy):
  App escreve para ambos email e email_new

Fase 3 (migrate):
  UPDATE users SET email_new = email WHERE email_new IS NULL;

Fase 4 (contract):
  ALTER TABLE users DROP COLUMN email;
  ALTER TABLE users RENAME email_new TO email;

TIMING:
─────────────────────────────────────
1. Execute migração (antes deploy)
2. Deploy app (usa novo + velho)
3. Verifique sucesso
4. Execute migração cleanup (depois)

Nunca execute migrações breaking
no mesmo deploy que mudanças código.

Notificações Deployment

Consciência Equipe

NOTIFICAÇÕES DEPLOYMENT
═══════════════════════

NOTIFIQUE EM:
─────────────────────────────────────
├── Deployment iniciado
├── Deployment sucedido
├── Deployment falhou
├── Rollback triggered
├── Mudanças status canary
└── Mantenha equipe informada

CANAIS:
─────────────────────────────────────
├── Canal Slack #deployments
├── Email para falhas
├── PagerDuty para falhas críticas
├── Status dashboard
└── Múltiplos canais para redundância

BOA NOTIFICAÇÃO:
─────────────────────────────────────
✅ Deploy iniciado: app v1.5.0 → staging
   por @sarah via GitHub Actions
   [View pipeline] [View PR]

✅ Deploy completo: app v1.5.0 → staging
   Duração: 3m 24s
   Todos health checks passaram
   [View logs]

❌ Deploy falhou: app v1.5.0 → produção
   Erro: Timeout health check
   Auto-rollback iniciado
   [View logs] [View incident]

Deployment GitScrum

Integração

FEATURES DEPLOYMENT GITSCRUM
════════════════════════════

STATUS TAREFA EM DEPLOY:
─────────────────────────────────────
├── Tarefa deployed → update status automático
├── Rastreamento ambiente por tarefa
├── Label "Deployed to staging"
├── Indicador "In production"
└── Visibilidade do que está onde

RASTREAMENTO RELEASE:
─────────────────────────────────────
├── Release contém tarefas
├── Status deployment release
├── O que foi enviado com este release
├── Geração changelog
├── Imagem completa release
└── Comunicação stakeholder

DASHBOARD DEPLOYMENT:
─────────────────────────────────────
├── Deployments recentes
├── O que está em cada ambiente
├── Itens pendentes para release
├── Métricas frequência deployment
└── Visibilidade equipe

Melhores Práticas

Para Automação Deployment

  1. Automatize tudo — Repetibilidade e velocidade
  2. Use rollout staged — Canary ou blue-green
  3. Auto-rollback — Recuperação rápida em falha
  4. Separe migrações DB — Nunca mesmo deploy
  5. Monitore deployments — Saiba quando coisas quebram

Anti-Padrões

ERROS AUTOMAÇÃO DEPLOYMENT:
✗ Deployments manuais
✗ All-at-once para produção
✗ Sem plano rollback
✗ Migração DB no mesmo deploy
✗ Sem monitoramento durante deploy
✗ Deploy sexta tarde
✗ Sem ambiente staging
✗ Sem notificações deployment

Soluções Relacionadas