Para instrucciones de despliegue, consulte la Guía de Despliegue con Terragrunt.
Resumen de Arquitectura y Alta Disponibilidad
Componentes de Infraestructura
Capacidades HA Actuales
Objetivos RTO / RPO
Sistemas de Respaldo
1. Estado de Terraform / Terragrunt — S3
Qué se respalda: Todo el estado de infraestructura (EKS, red, IAM, releases de Helm). Implementación:- Bucket S3 por entorno:
ekb-terraform-state-<env-name>(inicializado víaterragrunt/environments/<env-name>/state/) - Versionado habilitado — cualquier versión anterior del estado puede ser restaurada
- Cifrado del lado del servidor (AES-256)
- Tabla DynamoDB para bloqueo de estado
terragrunt apply.
RPO: Cada commit de terragrunt apply — continuo.
2. Volúmenes Persistentes EBS — AWS Data Lifecycle Manager
Qué se respalda: Volúmenes EBS adjuntos a pods (PostgreSQL de Automator, MinIO de Supabase, cualquier carga de trabajo con estado). Implementación: Política de AWS Data Lifecycle Manager (DLM) dirigida a etiquetas de entorno.3. CloudNativePG (DB HA de Supabase) — Respaldos Barman Cloud
Aplica a: Entornos conENABLE_CNPG=true y ENABLE_HA_SUPABASE_DB=true.
Qué se respalda: El clúster Postgres de CloudNativePG (ha-supabase-db), incluyendo streaming continuo de WAL (Write-Ahead Log) a S3 o MinIO, y respaldos base completos programados vía el CRD ScheduledBackup de CNPG.
Implementación (configurado en values/ha-supabase-db.yaml):
4. ElastiCache Redis — Replicación Multi-AZ
Aplica a: Entornos conENABLE_AWS_SERVICES=true.
Redis no es un almacén de datos primario — almacena caché transitoria y datos de sesión. El enfoque DR está en un failover rápido en lugar de respaldo/restauración.
Implementación:
- Multi-AZ habilitado con failover automático
- Cifrado en reposo y en tránsito
- Un fallo del nodo primario promueve una réplica automáticamente (< 1 min)
5. Amazon MQ (RabbitMQ — Cola de Mensajes
Aplica a: Entornos conENABLE_AWS_SERVICES=true.
Implementación:
- Despliegue de instancia individual (predeterminado) o activo/en espera
- Los mensajes en tránsito pueden perderse durante un reinicio del broker; diseñar consumidores idempotentes
- UI de gestión disponible en el puerto 15671 (SSL)
Mecanismos de Auto-recuperación
Karpenter — Provisionamiento y Recuperación de Nodos
- Consolidación:
WhenEmptyOrUnderutilized— los nodos inactivos se terminan automáticamente - Manejo de interrupciones Spot: Escucha eventos de interrupción SQS; drena y sustituye nodos Spot antes de la terminación
- Deriva de nodos: Los nodos que usan AMIs o configuraciones obsoletas se reemplazan automáticamente cuando
enable_drift = true - Tiempo de recuperación: Nuevo nodo provisionado en 0–10 minutos
KEDA — Autoescalado de Pods
- Réplicas mínimas: 2 para todos los servicios (Web, API, Celery, Automator) — previene punto único de falla
- Umbral de CPU: 60–70% activa la escala ascendente
- Umbral de memoria: 80% activa la escala ascendente
- Estabilización de escala descendente: 30 segundos — evita fluctuaciones
- Tiempo de recuperación: Pods fallidos reprogramados dentro de 0–2 minutos
Anti-afinidad de Pods de Kubernetes
Todos los servicios sin estado usan anti-afinidadpreferredDuringSchedulingIgnoredDuringExecution en kubernetes.io/hostname para distribuir pods entre nodos y AZs.
Procedimientos de Recuperación
Escenario 1: Fallo de AZ
Comportamiento esperado: Karpenter provisiona nodos de reemplazo en las AZs restantes; KEDA reprograma pods; ALB deja de enrutar a objetivos no saludables. Verificación:No se requiere intervención manual bajo circunstancias normales.
Escenario 2: Fallo del Nodo Primario de Postgres (CloudNativePG)
CloudNativePG promueve automáticamente una réplica a primario.Escenario 3: Restaurar Volumen EBS desde Snapshot
Escenario 4: Recreación Completa de Infraestructura
Usado después de un fallo catastrófico o al reconstruir una región.Escenario 5: Reversión de Estado de Terragrunt
Observabilidad y Alertas (SigNoz)
CuandoENABLE_SIGNOZ=true, SigNoz se despliega en el namespace monitoring y proporciona:
- Traza distribuida para todos los servicios de EKB
- Métricas del clúster vía el agente DaemonSet k8s-infra (CPU, memoria, estado de pods)
- Agregación de logs de todos los pods
- Alertas — configure reglas de alerta en SigNoz para notificar sobre bucles de crash de pods, altas tasas de error o presión de nodos