Pular para conteúdo

Deployment Checklist

Checklist completo para deploy para production.

Pre-Deployment

1 Dia Antes

  • PR de dev para main aberto
  • Code review completo
  • Release notes preparadas
  • Stakeholders notificados (se necessário)
  • Janela de deploy agendada
  • On-call schedule verificado

Dia do Deploy

Verificações Técnicas

  • Todos os testes passando em dev
  • QA manual aprovado em staging
  • Smoke tests executados em staging
  • Performance acceptable em staging
  • No alarmes ativos em staging
  • Migrations testadas em staging
  • Rollback plan documentado

Verificações de Código

  • No TODOs ou FIXMEs críticos
  • No console.log ou debuggers
  • Secrets não hardcoded
  • Dependencies atualizadas
  • Lint passou
  • Coverage >= threshold

Verificações de Infraestrutura

  • Database backup agendado
  • Capacity adequada (Lambda concurrency, RDS connections)
  • Rate limits configurados
  • CDN cache invalidation preparado (se necessário)
  • Monitoring dashboard aberto

Comunicação

  • Time avisado (Slack #deploys)
  • Statuspage atualizado (se mudanças externas)
  • Customer support avisado (se impacto visível)

During Deployment

Passo a Passo

  1. Aprovação Final (5 min)
  2. Tech Lead aprovou PR
  3. Último check de staging
  4. Confirmar horário é adequado

  5. Merge PR (1 min)

  6. Merge PR de dev para main
  7. GitHub Actions CI inicia

  8. Database Backup (2-5 min)

  9. Verificar snapshot sendo criado
  10. Aguardar conclusão

  11. Run Migrations (2-10 min)

  12. Migrations executadas
  13. Schema verification passou
  14. No erros nos logs

  15. Deploy Application (5-10 min)

  16. SAM build completou
  17. SAM deploy iniciou
  18. CloudFormation stack atualizando
  19. Aguardar stack UPDATE_COMPLETE

  20. Verificação Inicial (5 min)

  21. Health check passou
  22. Smoke tests passaram
  23. Sem alarmes disparados
  24. Logs sem erros críticos

Monitoramento Ativo (30 min)

Primeiros 5 minutos: - [ ] Testar endpoints críticos manualmente - [ ] Verificar logs em tempo real - [ ] Checar métricas no dashboard - [ ] Error rate < 1%

Primeiros 15 minutos: - [ ] Latency normal (p99 < threshold) - [ ] No alarmes disparados - [ ] Queue processing normal - [ ] Database performance OK

Primeiros 30 minutos: - [ ] Métricas estáveis - [ ] No user reports de problemas - [ ] Feedback positivo (se esperado) - [ ] Tudo operando normalmente

Post-Deployment

Validação Final

  • Smoke tests completos passaram
  • User acceptance testing (se aplicável)
  • Performance metrics OK
  • No regressions detectadas
  • Rollback plan não necessário

Comunicação

  • Anunciar conclusão no Slack
  • Atualizar Statuspage (se alterado)
  • Responder perguntas do time
  • Documentar qualquer issue encontrado

Documentação

  • Release notes publicadas
  • Documentação atualizada (se necessário)
  • Known issues documentadas
  • Runbooks atualizados (se necessário)

Se Algo Der Errado

Durante Deploy

Se deploy falhar:

  1. GitHub Actions tentará rollback automático
  2. Verificar logs do workflow
  3. Identificar causa
  4. Decidir: fix forward ou rollback manual
  5. Comunicar ao time

Após Deploy

Se bug descoberto após deploy:

  1. Avaliar severidade (P0/P1/P2/P3)
  2. Decidir: rollback imediato ou hotfix
  3. Ver Incident Response
  4. Ver Rollback Procedure

Horários de Deploy

✅ Recomendados

  • Segunda a Quinta: 10h-16h
  • Tráfego baixo/médio
  • Time disponível para monitorar

⚠️ Cuidado

  • Sextas-feiras (apenas se urgente)
  • Final do dia (dificulta rollback)
  • Vésperas de feriado

❌ Evitar

  • Finais de semana
  • Feriados
  • Horários de pico (12h-14h se e-commerce)
  • Fora do horário comercial (a menos que planejado)

Checklist Simplificado

Quick checklist (imprima!):

PRÉ-DEPLOY:
☐ Tests passing  
☐ QA approved  
☐ Backup scheduled  
☐ Rollback plan ready  
☐ Team notified  

DEPLOY:
☐ Merge PR  
☐ Monitor CI/CD  
☐ Verify health checks  
☐ Run smoke tests  
☐ Monitor 30 min  

PÓS-DEPLOY:
☐ Validate metrics  
☐ Announce completion  
☐ Update docs  
☐ Celebrate! 🎉  

Automation

Idealmente, este checklist deve ser automatizado no CI/CD.

Script scripts/pre_deploy_check.py:

def run_pre_deploy_checks():
    checks = [
        ("Tests passing", check_tests_passed),
        ("Staging healthy", check_staging_health),
        ("No active incidents", check_no_incidents),
        ("Backups recent", check_backup_age),
    ]

    failed = []
    for name, check_func in checks:
        if not check_func():
            failed.append(name)
            print(f"❌ {name}")
        else:
            print(f"✅ {name}")

    if failed:
        print(f"\n🛑 Pre-deploy checks failed: {', '.join(failed)}")
        sys.exit(1)

    print("\n✅ All pre-deploy checks passed! Ready to deploy.")

Referências