Para instruções de implantação, consulte o Guia de Implantação Terragrunt.
Resumo da Arquitetura e Alta Disponibilidade
Componentes da Infraestrutura
Capacidades HA Atuais
Objetivos RTO / RPO
Sistemas de Backup
1. Estado Terraform / Terragrunt — S3
O que é feito backup: Todo o estado da infraestrutura (EKS, rede, IAM, releases Helm). Implementação:- Bucket S3 por ambiente:
ekb-terraform-state-<nome-do-ambiente>(inicializado viaterragrunt/environments/<nome-do-ambiente>/state/) - Versionamento habilitado — qualquer versão anterior do estado pode ser restaurada
- Criptografia no lado do servidor (AES-256)
- Tabela DynamoDB para lock de estado
terragrunt apply.
RPO: A cada commit de terragrunt apply — contínuo.
2. Volumes Persistentes EBS — AWS Data Lifecycle Manager
O que é feito backup: Volumes EBS anexados a pods (PostgreSQL do Automator, Supabase MinIO, quaisquer cargas de trabalho estatais). Implementação: Política do AWS Data Lifecycle Manager (DLM) direcionada a tags de ambiente.3. CloudNativePG (HA Supabase DB) — Backups Barman Cloud
Aplica-se a: Ambientes comENABLE_CNPG=true e ENABLE_HA_SUPABASE_DB=true.
O que é feito backup: O cluster Postgres CloudNativePG (ha-supabase-db), incluindo streaming WAL (Write-Ahead Log) contínuo para S3 ou MinIO e backups base completos agendados via CRD ScheduledBackup do CNPG.
Implementação (configurado em values/ha-supabase-db.yaml):
4. ElastiCache Redis — Replicação Multi-AZ
Aplica-se a: Ambientes comENABLE_AWS_SERVICES=true.
O Redis não é um armazenamento de dados primário — ele armazena cache transitório e dados de sessão. O foco da DR está em um failover rápido em vez de backup/restauração.
Implementação:
- Multi-AZ habilitado com failover automático
- Criptografia em repouso e em trânsito
- Uma falha de nó primário promove uma réplica automaticamente (< 1 min)
5. Amazon MQ (RabbitMQ) — Fila de Mensagens
Aplica-se a: Ambientes comENABLE_AWS_SERVICES=true.
Implementação:
- Implantação instância única (padrão) ou active/standby
- Mensagens em trânsito podem ser perdidas durante uma reinicialização do broker; projete consumidores para serem idempotentes
- Interface de gerenciamento disponível na porta 15671 (SSL)
Mecanismos de Auto-Recuperação
Karpenter — Provisionamento e Recuperação de Nós
- Consolidação:
WhenEmptyOrUnderutilized— nós ociosos são terminados automaticamente - Tratamento de interrupção de Spot: Escuta eventos de interrupção SQS; drena e substitui nós Spot antes da terminação
- Drift de nó: Nós usando AMIs ou configurações desatualizadas são substituídos automaticamente quando
enable_drift = true - Tempo de recuperação: Novo nó provisionado em 0–10 minutos
KEDA — Escalonamento Automático de Pods
- Réplicas mínimas: 2 para todos os serviços (Web, API, Celery, Automator) — previne ponto único de falha
- Limite de CPU: 60–70% aciona escalonamento para cima
- Limite de memória: 80% aciona escalonamento para cima
- Estabilização de scale-down: 30 segundos — evita oscilação
- Tempo de recuperação: Pods com falha são reagendados em 0–2 minutos
Anti-Afinidade de Pods do Kubernetes
Todos os serviços sem estado usam anti-affinitépreferredDuringSchedulingIgnoredDuringExecution em kubernetes.io/hostname para distribuir pods entre nós e AZs.
Procedimentos de Recuperação
Cenário 1: Falha de AZ
Comportamento esperado: O Karpenter provisiona nós de substituição nas AZs restantes; o KEDA reagenda pods; o ALB para de rotear para targets não saudáveis. Verificação:Nenhuma intervenção manual é necessária sob circunstâncias normais.
Cenário 2: Falha do Nó Primário do Postgres (CloudNativePG)
O CloudNativePG promove automaticamente uma réplica a primário.Cenário 3: Restaurar Volume EBS a partir de Snapshot
Cenário 4: Recriação Completa da Infraestrutura
Usado após falha catastrófica ou ao reconstruir uma região.Cenário 5: Reversão de Estado Terragrunt
Observabilidade e Alertas (SigNoz)
QuandoENABLE_SIGNOZ=true, o SigNoz é implantado no namespace monitoring e fornece:
- Rastreamento distribuído para todos os serviços EKB
- Métricas do cluster via agente DaemonSet k8s-infra (CPU, memória, status do pod)
- Agregação de logs de todos os pods
- Alertas — configure regras de alerta no SigNoz para notificar sobre loops de crash de pods, altas taxas de erro ou pressão de nós