Pular para conteúdo

Deployment Process

Processo detalhado de deployment para staging e production.

Deploy para Staging

Automático

Todo merge em dev dispara deploy automático:

  1. PR aprovado e merged em dev
  2. GitHub Actions inicia workflow
  3. CI/CD executa:
  4. Migrations
  5. SAM build
  6. SAM deploy
  7. Smoke tests
  8. Slack notifica resultado
  9. Aplicação disponível em https://staging.seuapp.com

Manual (se necessário)

# Na branch dev
sam build --use-container

# Deploy para staging
sam deploy --config-env staging

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

Referências