Backup e Recuperação
Estratégia de backup 3-2-1, definições de RTO/RPO, processo de recuperação e plano de disaster recovery. Dados seguros, negócio protegido.
- Versão
- 1.0
- Atualizado
- junho/2026
- Último teste DR
- maio/2026
- Status
- validado
Resumo
A estratégia de backup do Romeo garante que dados possam ser recuperados em qualquer cenário — desde exclusão acidental até desastre total no datacenter. É a última linha de defesa contra perda de dados.
Implementamos a regra 3-2-1: 3 cópias dos dados, em 2 tipos de mídia diferentes, com 1 cópia offsite. Isso garante resiliência contra falhas de hardware, software e desastres físicos.
Princípio fundamentalBackup que não foi testado não é backup — é esperança. Realizamos testes de recuperação mensalmente e simulação completa de DR trimestralmente.
Estratégia 3-2-1
A regra 3-2-1 é o padrão da indústria para proteção de dados. O Romeo implementa essa estratégia em todos os níveis.
Os 3 componentes
Dados de produção + réplica síncrona + backup assíncrono. Qualquer cópia pode ser usada para recuperação independentemente.
SSD (produção) + Object Storage (backup). Tecnologias diferentes significam modos de falha diferentes — improvável falhar juntas.
Backup em região geográfica diferente (cross-region). Protege contra desastres locais: incêndio, terremoto, falha total do datacenter.
Implementação no Romeo
| Cópia | Localização | Tipo | Sincronia |
|---|---|---|---|
| Produção | AWS sa-east-1 (São Paulo) | RDS Multi-AZ | Primária |
| Réplica | AWS sa-east-1 (outra AZ) | RDS Read Replica | Síncrona |
| Backup diário | AWS sa-east-1 S3 | Snapshot + WAL | Assíncrono (1h) |
| Backup offsite | AWS us-east-1 S3 | Snapshot replicado | Assíncrono (6h) |
| Arquivo | AWS Glacier | Mensal compactado | Assíncrono (24h) |
Criptografia: Todos os backups são criptografados em repouso (AES-256) e em trânsito (TLS 1.3). Chaves gerenciadas via AWS KMS.
RTO e RPO
RTO (Recovery Time Objective) e RPO (Recovery Point Objective) são as métricas fundamentais de continuidade de negócio.
Definições
| Métrica | Definição | Meta Romeo |
|---|---|---|
| RTO | Tempo máximo para restaurar o serviço | 4 horas |
| RPO | Perda máxima de dados aceitável | 1 hora |
RTO por cenário
| Cenário | RTO | Procedimento |
|---|---|---|
| Exclusão acidental de registro | < 5 min | Soft-delete, restaura da lixeira |
| Corrupção de tabela | < 30 min | Restaura tabela do snapshot |
| Falha de instância RDS | < 5 min | Failover automático para réplica |
| Falha de AZ inteira | < 15 min | Failover automático Multi-AZ |
| Perda do banco principal | < 2 horas | Restaura do snapshot mais recente |
| Desastre no datacenter | < 4 horas | Recuperação cross-region |
| Ransomware/comprometimento | < 8 horas | Ambiente limpo + restauração isolada |
RPO por tipo de dado
| Tipo de dado | RPO | Justificativa |
|---|---|---|
| Transações financeiras | 0 (síncrono) | Não pode haver perda |
| Contratos | 15 min | WAL shipping contínuo |
| Cadastros | 1 hora | Snapshot horário |
| Logs operacionais | 4 horas | Menor criticidade |
| Analytics/métricas | 24 horas | Podem ser recalculados |
Trade-off custo vs. RPORPO menor = mais custo (réplica síncrona, WAL contínuo). Priorizamos dados financeiros (RPO=0) e aceitamos RPO maior para dados regeneráveis.
Tipos de backup
O Romeo utiliza múltiplos tipos de backup para diferentes necessidades de recuperação.
Backup de banco de dados
| Tipo | Frequência | Retenção | Uso |
|---|---|---|---|
| Snapshot automático | A cada hora | 7 dias | Recuperação rápida |
| Snapshot diário | 01:00 UTC | 30 dias | Recuperação de dias |
| Snapshot semanal | Domingo 01:00 UTC | 90 dias | Recuperação de semanas |
| Snapshot mensal | Dia 1, 01:00 UTC | 1 ano | Compliance, arquivo |
| WAL (Write-Ahead Log) | Contínuo | 7 dias | Point-in-time recovery |
Backup de arquivos
| Tipo | Conteúdo | Frequência | Retenção |
|---|---|---|---|
| Documentos | PDFs, imagens, contratos | Imediato (S3) | Vigência + 10 anos |
| Uploads de usuário | Fotos de imóveis, docs | Imediato (S3) | Enquanto ativo |
| Configurações | Terraform, K8s manifests | Git (versão) | Indefinido |
| Secrets | Credenciais, chaves | Vault backup | Rotação trimestral |
Backup de aplicação
Imagens Docker são imutáveis e versionadas. Qualquer versão anterior pode ser redeployed imediatamente do registry (ECR).
Toda infraestrutura é definida em código (Terraform). Ambiente pode ser recriado do zero em qualquer momento.
HashiCorp Vault com snapshots diários. Chaves de criptografia têm backup em HSM separado.
Versionamento S3: Todos os buckets têm versionamento ativado. Mesmo exclusões são recuperáveis por 30 dias via versões anteriores.
Processo de recuperação
Cada tipo de falha tem um procedimento de recuperação documentado e testado. Os runbooks estão acessíveis a todo o time de SRE.
Níveis de recuperação
Usuário recupera da lixeira (soft-delete < 30 dias)
Suporte restaura registro específico do snapshot
Restauração de tabela ou banco completo
Recuperação cross-region ou ambiente limpo
Point-in-time recovery (PITR)
Para recuperação de um momento específico (ex: "como estava às 14:32"):
- Identificar timestamp alvo (UTC)
- Criar nova instância RDS com PITR para esse timestamp
- Validar dados na nova instância (ambiente isolado)
- Extrair dados necessários ou promover como nova produção
- Documentar incidente e atualizar runbook se necessário
Recuperação de arquivo específico
| Cenário | Comando/Ação | Tempo |
|---|---|---|
| Arquivo S3 excluído | aws s3api list-object-versions + get-object | < 5 min |
| Registro de banco | SELECT * FROM tabela AS OF timestamp | < 5 min |
| Tabela corrompida | pg_restore -t tabela backup.dump | < 30 min |
| Banco completo | Restaurar snapshot RDS | < 2 horas |
Ambiente de testeToda recuperação é feita primeiro em ambiente isolado. Dados só são movidos para produção após validação completa.
Testes de recuperação
Testes regulares garantem que os backups funcionam quando precisamos. Backup não testado é apenas ocupação de disco.
Calendário de testes
| Teste | Frequência | Escopo | Responsável |
|---|---|---|---|
| Restauração de registro | Semanal | 1 registro aleatório | SRE (automático) |
| Restauração de tabela | Mensal | 1 tabela crítica | SRE |
| PITR completo | Mensal | Banco inteiro para timestamp | SRE |
| Cross-region restore | Trimestral | Restaurar do backup offsite | DR Team |
| Simulação de DR | Trimestral | Ambiente completo em região secundária | DR Team + Todos |
Teste automatizado semanal
Job seleciona 10 registros aleatórios de tabelas críticas (contratos, pagamentos, pessoas).
Cria instância de teste, restaura do snapshot mais recente, extrai os registros selecionados.
Compara hash dos registros restaurados com produção. Diferença indica problema no backup.
Resultado enviado para canal de SRE. Falha gera alerta imediato e investigação obrigatória.
Métricas de teste
| Métrica | Meta | Atual |
|---|---|---|
| Taxa de sucesso de restauração | 100% | 100% |
| Tempo médio de restauração (tabela) | < 30 min | 18 min |
| Tempo médio de PITR | < 2 horas | 1h 12min |
| Frequência de testes cumprida | 100% | 100% |
| Último teste de DR | < 90 dias | 45 dias atrás |
Documentação: Cada teste gera relatório arquivado por 2 anos. Útil para auditorias e para demonstrar maturidade de DR a clientes.
Disaster recovery
O plano de DR cobre cenários onde o datacenter primário fica totalmente indisponível. O objetivo é restaurar operações em região secundária.
Cenários cobertos
| Cenário | Probabilidade | Impacto | RTO |
|---|---|---|---|
| Falha de AZ | Médio | Parcial | < 15 min (automático) |
| Falha de região | Baixo | Total | < 4 horas |
| Desastre natural | Muito baixo | Total | < 4 horas |
| Ataque cibernético | Baixo | Variável | < 8 horas |
| Falha de provedor cloud | Muito baixo | Total | 24+ horas |
Arquitetura multi-região
Toda operação normal acontece aqui. Multi-AZ para alta disponibilidade. Latência otimizada para Brasil.
Infraestrutura provisionada mas desligada (cold standby). Backups replicados. Pode assumir em até 4 horas.
Procedimento de failover
- Declaração de desastre (decisão do CTO ou SRE Lead)
- Ativar infraestrutura em us-east-1 (Terraform apply)
- Restaurar banco do último backup replicado
- Atualizar DNS (Route53 health check ou manual)
- Validar funcionalidades críticas (smoke tests)
- Comunicar clientes sobre migração e possível perda de dados
- Monitorar estabilidade por 24h antes de considerar recuperação completa
Comunicação durante DR
| Stakeholder | Canal | Frequência |
|---|---|---|
| Time interno | Slack #incident + call | Contínuo |
| Clientes enterprise | Ligação direta | A cada hora |
| Todos os clientes | Status page + e-mail | A cada 2 horas |
| Imprensa (se necessário) | Assessoria | Após contenção |
Simulação trimestralA cada trimestre simulamos um cenário de DR completo: declaramos desastre fictício, ativamos região secundária, e operamos por 4 horas antes de reverter. Isso garante que o time sabe o que fazer quando for real.