Plantilla de Plan de Recuperación ante Desastres
Plantilla de plan de recuperación ante desastres para documentar targets RTO/RPO, procedimientos de failover y runbooks de recuperación que minimizan downtime ante fallas catastróficas.
Usa esta plantilla para prepararte para fallas catastróficas y minimizar tiempo de recuperación. Complémentala con la Plantilla de Runbook para procedimientos operacionales.
Plantilla
# Plan de Recuperación ante Desastres: [Servicio / Sistema]
## Overview
| Campo | Valor |
|-------|-------|
| **Dueño del plan** | [equipo o individuo] |
| **Última prueba** | [fecha] |
| **RTO** | [horas — máximo downtime aceptable] |
| **RPO** | [minutos — máxima pérdida de datos aceptable] |
## Escenarios de Riesgo
| Escenario | Probabilidad | Impacto | Mitigación |
|-----------|-----------|--------|------------|
| Caída de región | Media | Crítico | Despliegue multi-región |
| Corrupción de base de datos | Baja | Crítico | Restore point-in-time |
| Compromiso de credenciales | Media | Alto | Rotación de tokens + lockdown IAM |
| Caída de tercero | Alta | Medio | Circuit breakers + fallback |
## Procedimientos de Failover
### Escenario: Región Primaria No Disponible
1. **Detectar** — alerta de monitoreo confirma falla de health check regional
2. **Decidir** — comandante de incidente confirma failover (no flapping)
3. **Enrutar** — actualizar DNS / load balancer a región secundaria
4. **Verificar** — smoke tests pasan en región secundaria
5. **Comunicar** — actualizar página de estado y canales internos
### Escenario: Corrupción de Base de Datos
1. **Detener escrituras** — poner base de datos en read-only
2. **Identificar** — determinar alcance de corrupción y hora del evento
3. **Restaurar** — restaurar desde último backup limpio a nueva instancia
4. **Reproducir** — aplicar WAL / binlog hasta justo antes de la corrupción
5. **Validar** — ejecutar checks de integridad de datos
6. **Switch** — promover instancia restaurada a primaria
## Runbook de Recuperación
```bash
## 1. Verificar salud de región secundaria
kubectl --context=dr get nodes
## 2. Promover réplicas de lectura
gcloud sql instances promote-replica dr-replica
## 3. Actualizar DNS
aws route53 change-resource-record-sets --hosted-zone-id Z123 \
--change-batch file://failover.json
## 4. Verificar
./smoke-tests.sh --env=dr
Dependencias y Su Estado de DR
| Dependencia | Su RTO | Nuestro Fallback |
|---|---|---|
| Procesador de pagos | 4 horas | Encolar transacciones, reintentar después |
| Proveedor de identidad | 1 hora | Validación JWT cacheada + login degradado |
| CDN | 0 minutos | Switch multi-CDN |
Calendario de Pruebas
| Tipo de Prueba | Frecuencia | Última Completada | Resultado |
|---|---|---|---|
| Ejercicio tabletop | Trimestral | [fecha] | [pass / gaps encontrados] |
| Drill de failover | Semestral | [fecha] | [pass / gaps encontrados] |
| Test de restore de backup | Mensual | [fecha] | [pass / gaps encontrados] |
| Ingeniería del caos | Mensual | [fecha] | [pass / gaps encontrados] |
Plan de Comunicación
| Audiencia | Trigger | Mensaje | Canal |
|---|---|---|---|
| Ingeniería | Cualquier evento DR | Canal de incidentes | Slack #incidents |
| Liderazgo | RTO > 50% | Actualización de estado | Email + llamada |
| Clientes | RTO > 75% | Página de estado + tweet | Página de estado |
## RTO y RPO Explicados
| Métrica | Definición | Ejemplo |
|---------|-----------|---------|
| **RTO** (Recovery Time Objective) | Cuánto tiempo puedes estar caído | 4 horas |
| **RPO** (Recovery Point Objective) | Cuántos datos puedes perder | 15 minutos |
Si tus backups de base de datos corren cada hora y tu RPO es 15 minutos, tu estrategia de backup no cumple el objetivo.
## Lo que funciona
- **Testea recuperación trimestralmente** — un plan no probado es una fantasía. Consulta la [Guía de Infraestructura como Código](/guides/infrastructure-as-code-guide/) para aprovisionamiento automatizado de ambientes.
- **Automatiza failover donde sea posible** — failover impulsado por humanos toma 10x más tiempo
- **Documenta decisiones, no solo pasos** — por qué elegiste este RTO ayuda a futuros revisores
- **Mantén el plan accesible offline** — durante un desastre, tu wiki interna puede estar caída. Consulta la [Guía de Monitoreo y Alertas](/guides/monitoring-alerting-guide/) para triggers de detección.
- **Incluye dependencias de terceros** — tu DR es tan fuerte como tu vendor más débil
## Errores Comunes
- Backups no probados — un backup que nunca restauraste es un backup de Schrödinger
- Todo en una sola región — las regiones de AWS fallan; multi-región no es opcional para servicios críticos
- Sin rollback desde failover — volver al primario es más difícil que hacer failover
- Ignorar consistencia de datos durante failover — escrituras split-brain corrompen datos
- RTO/RPO definidos por managers sin input de ingeniería — si el target es físicamente imposible, el plan es teatro
## Lectura Adicional
- **Documentación oficial**: consulta la referencia actualizada del framework o herramienta utilizada.
- **Guías relacionadas**: explora las guías de devops y template para profundizar.
- **Patrones complementarios**: revisa los patrones de diseño aplicables a tu stack tecnológico.
- **Postmortems públicos**: estudia incidentes reales de equipos que enfrentaron problemas similares en producción.
## Notas de Producción
- **Despliega gradualmente** usando canary o blue-green para detectar regresiones temprano.
- **Configura alertas** para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
- **Documenta el rollback** en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
- **Revisa logs estructurados** con correlation IDs para trazar requests end-to-end en incidentes.
## Puntos Clave
- **Aplica plantilla de plan de recuperación ante desastres** cuando necesites una solución práctica para tu caso de uso.
- **Monitorea el rendimiento** después de implementar; mide latencia, errores y uso de recursos antes y después.
- **Revisa la sección de Troubleshooting** ante errores comunes; la mayoría tienen causa raíz documentada con solución.
- **Mantén dependencias actualizadas** y ejecuta tests en CI para prevenir regresiones en producción.
## Preguntas Frecuentes
### ¿Qué tan frecuentemente debería testear recuperación ante desastres?
Ejercicios tabletop trimestrales, drills de failover semestrales, tests de restore de backup mensuales. Para configuración de monitoreo, consulta la [Guía de Monitoreo y Alertas](/guides/monitoring-alerting-guide/). Si nunca has hecho un drill, empieza con un tabletop esta semana.
### ¿Cuál es la diferencia entre backup y recuperación ante desastres?
Los backups son un componente de DR. DR incluye las personas, procesos y herramientas para recuperar operaciones. Backups sin un procedimiento de recuperación probado son solo archivos comprimidos.
### ¿Debería automatizar failover o usar aprobación humana?
Automatiza detección y preparación (pre-stage región secundaria), pero requiere aprobación humana para el switch real de tráfico. Los falsos positivos son costosos; failover automatizado a una región rota es peor que breve downtime.
## Variantes
| Contexto | Enfoque | Notas |
|----------|---------|-------|
| Startup | DR simplificado: backup + restore | RTO 8h, RPO 24h aceptable |
| Enterprise | DR multi-region activo-activo | RTO 15min, RPO 0 |
| E-commerce | DR con prioridad en catalogo y checkout | Restaurar en orden de impacto en ingresos |
| Fintech | DR con prioridad en integridad de transacciones | Cero perdida de datos tolerable |
## Ejemplo de DR Plan: Fallo de Region Primaria
```text
=== DR Plan: Fallo de Region us-east-1 ===
Escenario: Region us-east-1 no disponible
RTO Objetivo: 1 hora
RPO Objetivo: 15 minutos
Triage Inicial (0-5 min):
1. Confirmar que us-east-1 esta caida (no es un falso positivo)
- Verificar AWS Health Dashboard
- Verificar status.aws.amazon.com
2. Declarar incidente DR-SEV1
3. Notificar a liderazgo y stakeholders
4. Activar canal de DR (#dr-incident)
Ejecucion de Failover (5-45 min):
Paso 1: Promover region secundaria (eu-west-1) a primaria
- Actualizar DNS (Route 53) a apuntar a eu-west-1
- Verificar que los health checks pasan en eu-west-1
- Tiempo estimado: 5-10 min
Paso 2: Escalar recursos en eu-west-1
- Aumentar replicas para manejar el trafico completo
- kubectl scale deployment app -n production --replicas=20
- Tiempo estimado: 5-10 min
Paso 3: Restaurar datos desde backup
- Ultimo backup de RDS: hace 12 min (dentro de RPO)
- Restaurar snapshot a nueva instancia en eu-west-1
- Tiempo estimado: 15-20 min
Paso 4: Verificar servicios
- Health checks en todos los endpoints
- Smoke tests en flujos criticos (login, pago, checkout)
- Verificar que no hay datos perdidos (comparar conteos)
- Tiempo estimado: 5-10 min
Comunicacion (paralelo a ejecucion):
- Pagina de status: "Investigando interrupcion en us-east-1"
- A los 15 min: "Failover a eu-west-1 en progreso"
- A los 45 min: "Servicios restaurados en eu-west-1"
- A los 60 min: "Incidente resuelto; investigando causa raiz"
Rollback (si failover falla):
- Si eu-west-1 no puede manejar la carga: degradar a modo solo-lectura
- Si datos no se pueden restaurar: usar ultimo backup valido (RPO mayor)
- Si todo falla: activar plan de comunicacion de caida prolongada
Post-Recuperacion:
- Monitorear estabilidad en eu-west-1 por 24 horas
- Investigar causa raiz del fallo de us-east-1
- Conducir postmortem dentro de 48 horas
- Actualizar DR plan con learnings
- Planificar migracion de vuelta a us-east-1 (o nueva region)
Con que frecuencia debemos probar el DR plan?
Prueba el DR plan al menos anualmente para empresas, trimestralmente para servicios criticos. Tipos de prueba: walkthrough de mesa (paper exercise, 2 horas), simulacion parcial (failover de un servicio no critico, 4 horas), y failover completo (migrar todo el trafico, 8 horas). Documenta cada prueba: que funciono, que fallo, tiempo real vs RTO/RPO. Una prueba de DR que no falla nada no es una prueba real — busca puntos de fallo en un entorno controlado. Involucra a personas que no son los autores del plan — si solo el autor puede ejecutarlo, el plan no es resiliente.
Cual es la diferencia entre RTO y RPO?
RTO (Recovery Time Objective) es cuanto tiempo tarda en restaurar el servicio — el tiempo desde la caida hasta que los usuarios pueden usar el sistema de nuevo. RPO (Recovery Point Objective) es cuanto datos puedes perder — el tiempo entre el ultimo backup valido y la caida. Un RTO de 1 hora significa que el servicio debe estar de vuelta en 1 hora. Un RPO de 15 minutos significa que puedes perder hasta 15 minutos de datos. RTO mide tiempo de recuperacion; RPO mide perdida de datos. Ambos son objetivos, no garantias — mide el tiempo real durante las pruebas de DR.
Como calculamos el costo de un DR plan?
El costo de DR incluye: infraestructura de respaldo (region secundaria, instancias, storage), costos de replicacion (transferencia de datos entre regiones), costos de backup (snapshots, almacenamiento), costos de prueba (horas de ingenieria para game days), y costos de herramientas (DR orchestration, monitoring). Compara el costo de DR con el costo de caida: si una hora de caida cuesta $100K y el DR cuesta $50K/ano, el DR se paga solo en 30 minutos de caida evitada. Para servicios no criticos: un DR ligero (backup + restore manual) puede ser suficiente. Para servicios criticos: DR activo-activo es necesario a pesar del costo.
End of document. Review and update quarterly.
Troubleshooting
- Pipeline fails silently: enable verbose logging and store pipeline artifacts between stages so you can inspect the exact state that failed.
- Container crashes on startup: check that environment variables, secrets, and config files are mounted correctly. Read the first 50 lines of logs before scaling replicas.
- Deployment rolls back repeatedly: verify health checks, resource limits, and startup probes. A failing readiness probe is a common cause of rolling restarts.
- Slow CI builds: cache dependencies and docker layers. Split large test suites into parallel jobs to reduce wall-clock time.
- Drift between environments: use infrastructure-as-code and immutable artifacts.
Errores Comunes en Producción
- Dejar campos requeridos vacíos o usar respuestas vagas de una palabra.
- Llenar el documento una vez y nunca actualizarlo cuando cambia el alcance o las decisiones.
- Guardar el documento donde el equipo no lo busque durante incidentes o revisiones.
- No asignar un responsable, fecha límite o cadencia de revisión.
- Copiar texto base sin eliminar secciones que no aplican.
- Saltar el control de versiones, lo que impide rollback y responsabilidad.
- No vincular el documento con decisiones relacionadas o acciones de seguimiento.
- Evitar revisiones trimestrales que retirarían secciones obsoletas o sin uso.
Preguntas frecuentes
¿Qué tan frecuentemente debería testear recuperación ante desastres?
Ejercicios tabletop trimestrales, drills de failover semestrales, tests de restore de backup mensuales. Para configuración de monitoreo, consulta la Guía de Monitoreo y Alertas. Si nunca has hecho un drill, empieza con un tabletop esta semana.
¿Cuál es la diferencia entre backup y recuperación ante desastres?
Los backups son un componente de DR. DR incluye las personas, procesos y herramientas para recuperar operaciones. Backups sin un procedimiento de recuperación probado son solo archivos comprimidos.
¿Debería automatizar failover o usar aprobación humana?
Automatiza detección y preparación (pre-stage región secundaria), pero requiere aprobación humana para el switch real de tráfico. Los falsos positivos son costosos; failover automatizado a una región rota es peor que breve downtime.
Recursos Relacionados
Infrastructure as Code — Terraform y Pulumi
Guía práctica para gestionar infraestructura como código: beneficios de enfoques declarativo vs imperativo, manejo de estado, módulos y testing de cambios de infraestructura.
DocPlantilla de Runbook
Una plantilla reutilizable para runbooks operacionales: respuesta a incidentes, procedimientos de deployment y tareas rutinarias.
GuideMonitoreo y Alertas — Métricas, Logs y Dashboards
Guía práctica de observabilidad: los tres pilares (métricas, logs, traces), métodos RED y USE, diseño de alertas, y dashboards que realmente ayudan.
DocPlantilla de Guía de Configuración de Entorno
Plantilla para documentar cómo configurar ambientes de desarrollo local, staging y producción de forma consistente y reproducible.
DocPlantilla de Documento SLO (Service Level Objective)
Plantilla de documento SLO que define targets de confiabilidad, presupuestos de error y políticas de escalación para servicios y plataformas.
RecipeConfigura pre-commit hooks con husky y lint-staged
Configura pre-commit hooks con husky, lint-staged y el framework pre-commit. Detectá problemas de lint, formato y seguridad antes de cada commit.