Deployment Process
Processo detalhado de deployment para staging e production.
Deploy para Staging
Automático
Todo merge em dev dispara deploy automático:
- PR aprovado e merged em
dev - GitHub Actions inicia workflow
- CI/CD executa:
- Migrations
- SAM build
- SAM deploy
- Smoke tests
- Slack notifica resultado
- Aplicação disponível em https://staging.seuapp.com
Manual (se necessário)
Deploy para Production
Processo Completo
flowchart TD
Start[Feature testada em staging] --> PR[Abrir PR: dev → main]
PR --> Review[Code Review]
Review --> Approve{Aprovado?}
Approve -->|Não| Fix[Ajustes]
Fix --> Review
Approve -->|Sim| Merge[Merge PR]
Merge --> Backup[Backup Database]
Backup --> Migration[Run Migrations]
Migration --> Deploy[Deploy to Prod]
Deploy --> Smoke[Smoke Tests]
Smoke --> Monitor[Monitor 30min]
Monitor --> Success{Sucesso?}
Success -->|Sim| Done[✅ Concluído]
Success -->|Não| Rollback[Rollback]
Rollback --> Incident[Abrir Incident]
Passo a Passo
1. Preparar Deploy
Checklist pré-deploy:
- Todos os testes passam em staging
- QA manual aprovado em staging
- Smoke tests executados
- Release notes preparadas
- Stakeholders avisados (se necessário)
- Janela de deploy agendada
Quando fazer deploy:
- ✅ Segunda a Quinta, 10h-16h
- ⚠️ Sextas apenas se urgente
- ❌ Evitar fora do horário comercial
2. Abrir PR dev → main
git checkout dev
git pull origin dev
git checkout -b release/v2026.01.20
# Abrir PR no GitHub
# Base: main
# Compare: dev
PR Description:
## Release v2026.01.20
### Features
- [ ] Feature A (#123)
- [ ] Feature B (#456)
### Bug Fixes
- [ ] Fix critical bug X (#789)
### Changes
- Database migration: add user_email column
- New endpoint: POST /api/v1/users/verify
### Testing
- [x] All tests passing
- [x] QA approved in staging
- [x] Smoke tests passed
- [x] Performance acceptable
### Deployment Checklist
- [x] Database backup scheduled
- [x] Stakeholders notified
- [x] Rollback plan ready
- [ ] Deploy approved
### Rollback Plan
If issues occur: revert PR or deploy previous version via tag
### Impact
- Downtime expected: None
- Database changes: Yes (backward compatible)
3. Aprovação
- Mínimo 1 aprovação (Tech Lead ou Senior Dev)
- Revisar mudanças críticas
- Verificar migration é segura
4. Merge e Deploy
- Merge PR
- GitHub Actions inicia deploy automático
- Acompanhar em tempo real
5. Monitoramento Pós-Deploy
Primeiros 5 minutos: - Verificar smoke tests passaram - Checar logs no CloudWatch - Testar endpoints críticos manualmente
Primeiros 30 minutos: - Monitorar CloudWatch métricas - Acompanhar error rate - Verificar alarmes não dispararam - Checar feedback de usuários
Primeira hora: - Análise de métricas completa - Verificar performance - Confirmar tudo estável
6. Comunicar Sucesso
✅ **Deploy v2026.01.20 completo!**
- Deployed at: 14:30 UTC
- Status: Successful
- Monitoring: No issues detected
- URL: https://seuapp.com
New features live:
- Feature A
- Feature B
Rollback
Se algo der errado:
Rollback Rápido (Revert)
# 1. Reverter merge commit
git revert <merge-commit-sha> -m 1
git push origin main
# 2. Deploy automático ocorre
# OU manualmente:
sam deploy --config-env production
# 3. Reverter migrations se necessário
alembic -c alembic.prod.ini downgrade -1
Rollback para Versão Anterior (Tag)
# 1. Ver tags
git tag -l
# 2. Checkout versão anterior
git checkout v2026.01.19
# 3. Deploy versão antiga
sam deploy --config-env production --force-upload
Ver Rollback Procedure completo →
Hotfix Deploy
Para bugs críticos que não podem esperar:
# 1. Branch de main
git checkout main
git pull origin main
git checkout -b hotfix/critical-payment-bug
# 2. Fix e test
# Edit code...
pytest
git commit -m "fix(payment): prevent duplicate charges"
# 3. PR para main com label "hotfix"
git push origin hotfix/critical-payment-bug
# 4. Fast-track review (1 aprovador)
# 5. Merge e deploy automático
# 6. Sync dev
git checkout dev
git rebase main
git push origin dev --force-with-lease
Ambientes
Staging
| Item | Valor |
|---|---|
| URL | https://staging.seuapp.com |
| Branch | dev |
| Database | PostgreSQL staging |
| Deploy | Automático após merge em dev |
| Monitoring | CloudWatch |
Production
| Item | Valor |
|---|---|
| URL | https://seuapp.com |
| Branch | main |
| Database | PostgreSQL production (Multi-AZ) |
| Deploy | Automático após merge em main |
| Monitoring | CloudWatch + alarmes |
Comandos Úteis
# Ver últimos deploys
aws cloudformation describe-stack-events --stack-name app-staging
# Ver Lambdas deployadas
aws lambda list-functions --query 'Functions[?starts_with(FunctionName, `app-`)].FunctionName'
# Logs de Lambda específica
aws logs tail /aws/lambda/app-user-function --follow
# Rollback SAM
sam deploy --config-env production --parameter-overrides Version=previous
Deployment Frequency
Target: - Staging: Várias vezes ao dia - Production: 2-3 vezes por semana
Actual: Rastreado em dashboard CloudWatch