Infraestrutura · Resiliência
Infraestrutura · Continuidade

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
1

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 fundamental
Backup que não foi testado não é backup — é esperança. Realizamos testes de recuperação mensalmente e simulação completa de DR trimestralmente.
2

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

3Três cópias dos dados

Dados de produção + réplica síncrona + backup assíncrono. Qualquer cópia pode ser usada para recuperação independentemente.

2Dois tipos de mídia

SSD (produção) + Object Storage (backup). Tecnologias diferentes significam modos de falha diferentes — improvável falhar juntas.

1Uma cópia offsite

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ópiaLocalizaçãoTipoSincronia
ProduçãoAWS sa-east-1 (São Paulo)RDS Multi-AZPrimária
RéplicaAWS sa-east-1 (outra AZ)RDS Read ReplicaSíncrona
Backup diárioAWS sa-east-1 S3Snapshot + WALAssíncrono (1h)
Backup offsiteAWS us-east-1 S3Snapshot replicadoAssíncrono (6h)
ArquivoAWS GlacierMensal compactadoAssí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.

3

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étricaDefiniçãoMeta Romeo
RTOTempo máximo para restaurar o serviço4 horas
RPOPerda máxima de dados aceitável1 hora

RTO por cenário

CenárioRTOProcedimento
Exclusão acidental de registro< 5 minSoft-delete, restaura da lixeira
Corrupção de tabela< 30 minRestaura tabela do snapshot
Falha de instância RDS< 5 minFailover automático para réplica
Falha de AZ inteira< 15 minFailover automático Multi-AZ
Perda do banco principal< 2 horasRestaura do snapshot mais recente
Desastre no datacenter< 4 horasRecuperação cross-region
Ransomware/comprometimento< 8 horasAmbiente limpo + restauração isolada

RPO por tipo de dado

Tipo de dadoRPOJustificativa
Transações financeiras0 (síncrono)Não pode haver perda
Contratos15 minWAL shipping contínuo
Cadastros1 horaSnapshot horário
Logs operacionais4 horasMenor criticidade
Analytics/métricas24 horasPodem ser recalculados
Trade-off custo vs. RPO
RPO menor = mais custo (réplica síncrona, WAL contínuo). Priorizamos dados financeiros (RPO=0) e aceitamos RPO maior para dados regeneráveis.
4

Tipos de backup

O Romeo utiliza múltiplos tipos de backup para diferentes necessidades de recuperação.

Backup de banco de dados

TipoFrequênciaRetençãoUso
Snapshot automáticoA cada hora7 diasRecuperação rápida
Snapshot diário01:00 UTC30 diasRecuperação de dias
Snapshot semanalDomingo 01:00 UTC90 diasRecuperação de semanas
Snapshot mensalDia 1, 01:00 UTC1 anoCompliance, arquivo
WAL (Write-Ahead Log)Contínuo7 diasPoint-in-time recovery

Backup de arquivos

TipoConteúdoFrequênciaRetenção
DocumentosPDFs, imagens, contratosImediato (S3)Vigência + 10 anos
Uploads de usuárioFotos de imóveis, docsImediato (S3)Enquanto ativo
ConfiguraçõesTerraform, K8s manifestsGit (versão)Indefinido
SecretsCredenciais, chavesVault backupRotação trimestral

Backup de aplicação

Container imagesimutáveis

Imagens Docker são imutáveis e versionadas. Qualquer versão anterior pode ser redeployed imediatamente do registry (ECR).

Infrastructure as Codegit

Toda infraestrutura é definida em código (Terraform). Ambiente pode ser recriado do zero em qualquer momento.

Secrets e configuraçõescrítico

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.

5

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

1
Self-service

Usuário recupera da lixeira (soft-delete < 30 dias)

2
Suporte L1

Suporte restaura registro específico do snapshot

3
SRE

Restauração de tabela ou banco completo

4
DR Team

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"):

  1. Identificar timestamp alvo (UTC)
  2. Criar nova instância RDS com PITR para esse timestamp
  3. Validar dados na nova instância (ambiente isolado)
  4. Extrair dados necessários ou promover como nova produção
  5. Documentar incidente e atualizar runbook se necessário

Recuperação de arquivo específico

CenárioComando/AçãoTempo
Arquivo S3 excluídoaws s3api list-object-versions + get-object< 5 min
Registro de bancoSELECT * FROM tabela AS OF timestamp< 5 min
Tabela corrompidapg_restore -t tabela backup.dump< 30 min
Banco completoRestaurar snapshot RDS< 2 horas
Ambiente de teste
Toda recuperação é feita primeiro em ambiente isolado. Dados só são movidos para produção após validação completa.
6

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

TesteFrequênciaEscopoResponsável
Restauração de registroSemanal1 registro aleatórioSRE (automático)
Restauração de tabelaMensal1 tabela críticaSRE
PITR completoMensalBanco inteiro para timestampSRE
Cross-region restoreTrimestralRestaurar do backup offsiteDR Team
Simulação de DRTrimestralAmbiente completo em região secundáriaDR Team + Todos

Teste automatizado semanal

1Seleção

Job seleciona 10 registros aleatórios de tabelas críticas (contratos, pagamentos, pessoas).

2Restauração

Cria instância de teste, restaura do snapshot mais recente, extrai os registros selecionados.

3Validação

Compara hash dos registros restaurados com produção. Diferença indica problema no backup.

4Relatório

Resultado enviado para canal de SRE. Falha gera alerta imediato e investigação obrigatória.

Métricas de teste

MétricaMetaAtual
Taxa de sucesso de restauração100%100%
Tempo médio de restauração (tabela)< 30 min18 min
Tempo médio de PITR< 2 horas1h 12min
Frequência de testes cumprida100%100%
Último teste de DR< 90 dias45 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.

7

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árioProbabilidadeImpactoRTO
Falha de AZMédioParcial< 15 min (automático)
Falha de regiãoBaixoTotal< 4 horas
Desastre naturalMuito baixoTotal< 4 horas
Ataque cibernéticoBaixoVariável< 8 horas
Falha de provedor cloudMuito baixoTotal24+ horas

Arquitetura multi-região

Região primária: sa-east-1 (São Paulo)ativa

Toda operação normal acontece aqui. Multi-AZ para alta disponibilidade. Latência otimizada para Brasil.

Região secundária: us-east-1 (Virginia)standby

Infraestrutura provisionada mas desligada (cold standby). Backups replicados. Pode assumir em até 4 horas.

Procedimento de failover

  1. Declaração de desastre (decisão do CTO ou SRE Lead)
  2. Ativar infraestrutura em us-east-1 (Terraform apply)
  3. Restaurar banco do último backup replicado
  4. Atualizar DNS (Route53 health check ou manual)
  5. Validar funcionalidades críticas (smoke tests)
  6. Comunicar clientes sobre migração e possível perda de dados
  7. Monitorar estabilidade por 24h antes de considerar recuperação completa

Comunicação durante DR

StakeholderCanalFrequência
Time internoSlack #incident + callContínuo
Clientes enterpriseLigação diretaA cada hora
Todos os clientesStatus page + e-mailA cada 2 horas
Imprensa (se necessário)AssessoriaApós contenção
Simulação trimestral
A 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.