GH GambleHub

Estrategias de DR y RTO/RPO

1) Principios básicos

1. Objetivos anteriores a los fondos. Primero formulamos RTO/RPO y escenarios críticos, luego elegimos la tecnología.
2. Segmentación por importancia. No todos los servicios requieren «oro»; dividir por criticidad empresarial.
3. Los datos son el núcleo del Dr. La consistencia, la replicación, la detección de daños y el punto de recuperación son más importantes que el «hierro».
4. Automatización y verificabilidad. El DR carece de sentido sin IaC, pruebas de retroceso de recuperación y telemetría.
5. Enseñanzas y pruebas. Un plan sin «game day» regular es una ilusión de preparación.
6. Seguridad y cumplimiento. Cifrado, aislamiento, backups WORM/immutable, DPA/jurisdicciones.

2) Términos y correspondencias

RTO - Tiempo desde el momento del evento hasta el restablecimiento del servicio «normal».
RPO es la «edad» del último punto de datos saludable en la recuperación.
RLO (Recovery Level Objective) es un nivel de funcionalidad que está obligado a restaurar (un servicio mínimamente viable).
MTD (Maximum Tolerable Downtime) es el umbral después del cual el negocio sufre daños inaceptables.
RTA/RPA (Actual): tiempo real/punto de recuperación de las prácticas.

Comunicación: RTO ≤ MTD; RPA ≤ RPO. La brecha entre los objetivos y el hecho es un tema de post mortem y mejoras.

3) Clases de estrategias de RD (niveles de preparación)

NivelDescripciónRTO/RPO típicosCostoAplicación
Backup/RestoreSólo los backups y la imagen del entornoRTO: horas-días, RPO: horas$Sistemas no críticos, informes
Pilot Light«Twink»: pila mínima levantada, datos replicadosRTO: docenas de minutos-reloj, RPO: minutos-reloj$$Criticidad media, ahorro
Warm StandbySoporte cálido: casi listo, carga bajaRTO: minutos - $$$Núcleo B2C, pasarelas de pago
Active/PassiveClon pasivo completo, failover automáticoRTO: minutos, RPO: segundos-minutos$$$$API de misión crítica
Active/ActiveAmbos sitios en ventaRTO≈0, RPO≈0 -sec. $$$$$SLO extremos, productos globales
💡 Regla: elija un nivel mínimo suficiente que se ajuste al riesgo empresarial.

4) Escenarios contra los que nos defendemos

Pérdida de región/nube/centro de datos (electricista, red, proveedor).
Corrupción de datos/error del operador (eliminación, réplicas «rotas», daño lógico).
Malware/cifrador (ransomware).
Defecto de versión/configuración (salida masiva).
El colapso de la dependencia (KMS, DNS, secretos, proveedor de pagos).
Eventos legales (bloqueos, prohibición de sacar datos de la jurisdicción).

Para cada escenario, especifique RTO/RPO, nivel de DR, playbook, responsables.

5) Estrategias de datos (clave de RPO)

5. 1 Backups

Registros de transacciones completos + incrementales + (para BD).
Almacenamiento inmutable/WORM y copias offline («air-gapped»).
Directorio de backups con metadatos y criptopodescripciones; recuperación de prueba programada.

5. 2 Replicación

Sincrónico (bajo RPO, ↑latentnost, riesgo de propagación de daños).
Asincrónico (bajo impacto en la perforación, RPO> 0; combinar con el detalle del daño).
CDC (Change Data Capture) para replicación en streaming y reconstrucción de estados.

5. 3 Protección contra daños lógicos

Versificación/» puntos en el tiempo» (PITR) con ventana ≥ N días.
Las firmas de invariantes (balances, sumas, chexummas) son el primer detecto de los datos «rotos».
Canales de replicación «lentos» (delay 15-60 min) como búfer contra daños instantáneos.

Sketch de selección de punto de recuperación:
python def pick_restore_point(pitr, anomaly_signals, max_age):
healthy = [p for p in pitr if not anomaly_signals. after(p. time)]
return max(healthy, key=lambda p: p. time if now()-p. time <= max_age else -1)

6) Aplicación, estado, caché

Staitless Layer - Escalar y reiniciar en cualquier región (imagen/lista/manifiestos en Git).
Estado (DB/caché/kew): la fuente de la verdad es una de DB; las cachés y los índices son sobregenerables.
Idempotencia y re-drive: la reintroducción de eventos es admisible; use outbox/inbox, dedoup y versiones.

7) Red y punto de entrada

GSLB/DNS failover: latency/health-based, TTL corto en la ventana del accidente.
Anycast/L7-proxy: IP única, enrutamiento de salud regional.
Dominios regionales y políticas jurisdiccionales (geo-pinning para PII).
Feilover certificados/KMS: cadenas de repuesto, dual-key.

Seudocódigo de Failover:
python if slo_breach("region-a") or health("region-a")==down:
route. shift(traffic, from_="region-a", to="region-b", step=20) # канарим enable_readonly_if_needed()

8) Modelo operativo y automatización

IaC/GitOps: infraestructura de la segunda región = código, implementación «de un solo botón».
Policy as Code: gate «no hay manifiestos DR/backups/alertas - no hay lanzamiento».
Runbooks: instrucciones paso a paso y un «botón rojo» idéntico a ambas regiones.
Secretos: créditos de corta vida, federación OIDC, plan de compromiso/revocación.

Gate (idea):
rego package dr deny["Missing PITR ≥ 7d"] {
input. db. pitr_window_days < 7
}
deny["No restore test in 30d"] {
now() - input. db. last_restore_test > 3024h
}

9) Ejercicios y pruebas (Días de juego)

Tabla de escenarios: pérdida de DB, datos «rotos», fallo de KMS, caída de la región, límite de egresos repentinos.
Frecuencia: trimestral para misión crítica; cada seis meses para los demás.
Métricas de la enseñanza: RTA/RPA vs objetivos, proporción de pasos automáticos, número de intervenciones manuales, errores de playbook.
Chaos-smoke en las versiones: la degradación de las dependencias no debe «romper» las rutas DR.

Ejemplo de mini-enseñanza:

T0: cut off the primary database (firewall drop)
T + 2m: GSLB shift 20% of traffic, then 100% at SLO_ok
T + 6m: checking business invariants and lag replication
T + 10m: post-drill: fixing RTA/RPA, playbook improvements

10) Playbucks (patrón canónico)

yaml playbook: "dr-failover-region-a-to-b"
owner: "platform-sre"
rto: "15m"
rpo: "5m"
triggers:
- "health(region-a)==down"
- "slo_breach(payments)"
prechecks:
- "backup_catalog ok; last_restore_test < 30d"
- "pitr_window >= 7d"
steps:
- "Announce incident; open war-room; assign IC"
- "Freeze writes in region-a (flag write_readonly)"
- "Promote db-b to primary; verify replication stopped cleanly"
- "Shift GSLB 20%→50%→100%; monitor p95/error"
- "Enable compensations and re-drive queues"
validation:
- "Business invariants (balances, duplicate_checks)"
- "Synthetic tests green; dashboards stable 30m"
rollback:
- "If db-b unhealthy: revert traffic; engage restore from PITR T-Δ"
comms:
- "Status updates each 15m; external note if SEV1"

11) Métricas de observación DR

Replica lag (sec.), RPO-drift (diferencia entre el objetivo y el RPO real).
Restore SLI: tiempo de recuperación en frío/calor a través de los alrededores.
Cobertura:% de los servicios con playbooks/backups/PITR ≥ N días.
Drill score: proporción de pasos automáticos, distribución RTA, tasa de error.
Inmutabilidad:% de los backups en WORM/air-gapped.
Métricas de eventos: longitud de las colas/velocidad de re-drive después del failover.

12) Costos y compromisos

CapEx/OpEx: el soporte caliente es más barato que Active/Active, pero más caro que Pilot Light.
Egress: la replicación interregional/interparlamentaria cuesta dinero; caché/compresión/agregados locales.
RTO/RPO vs $: cada «nueve» de disponibilidad y un segundo de RPO cuestan varias veces más - alinear con el negocio.
Ventanas verdes: replicación de batch - en relojes baratos/« verdes ».

13) Seguridad y cumplimiento

Cifrado «en reposo» y «en tránsito», dominios KMS separados por región.
Immutable-backups, protección contra ransomware: «3-2-1» (3 copias, 2 medios, 1 offline), MFA-delete.
Jurisdicciones: geo-pinning para PII, localización de backups, Legal Hold sobre TTL.
Accesos en tiempo: roles temporales para operaciones de DR, registro de auditoría.

14) Anti-patrones

«Escribamos un plan más tarde» - DR sin enseñanzas.
Replicación sin protección contra el daño lógico: multiplicará el error de forma migratoria.
Una región de KMS/Secretos - No se puede hacer un failover.
Los backups sin restauraciones regulares son DR «shredinger».
Transacciones sincrónicas estrechamente relacionadas entre regiones - latencia en cascada/caída.
Ninguna priorización: el mismo nivel de DR para todo (caro e inútil).

15) Check-list del arquitecto

1. ¿Definidos RTO/RPO/RLO por servicios y escenarios?
2. Datos clasificados: fuente de la verdad, PITR/ventana, WORM/immutable?
3. ¿Ha seleccionado el nivel DR (Backup/Restore, Pilot, Warm, A/P, A/A) por servicio?
4. Red: GSLB/Anycast, certificados/llaves con stock, banderas «read-only»?
5. Aplicación: ¿idempotencia, outbox/inbox, transacciones compensatorias?
6. IaC/GitOps/Policy as Code: ¿un clic en el rodillo de la segunda región?
7. Enseñanzas: horario, KPI RTA/RPA, actividades de post-aprendizaje?
8. Monitoreo: lag, RPO-drift, restore-SLI, drill-score, backups inmutables?
9. Seguridad/Cumplimiento: KMS dominios, jurisdicciones, Legal Hold?
10. Costo: egresos del presupuesto, ventanas «verdes», nivel económicamente válido?

16) Mini recetas y sketches

16. 1 PITR para Postgres (idea):

bash base backup daily + WAL archive pg_basebackup -D/backups/base/$ (date +% F)
archive_command='aws s3 cp %p s3://bucket/wal/%f --sse'
restore pg_restore --time "2025-10-31 13:21:00Z"...

16. 2 Protección contra daños lógicos (réplica retrasada):

yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption

16. 3 Cambio de tráfico (pseudo-API GSLB):

bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100

16. 4 Verificación de invariantes después del Feilover (pseudocódigo):

python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))

El DR es la capacidad de tomar decisiones técnicas y organizativas más rápido que el daño creciente. Identifique RTO/RPO realistas, elija un nivel de preparación suficiente, automatice la infraestructura y las verificaciones, entrene regularmente y mida los RTA/RPA reales. Entonces el accidente no se convertirá en un desastre, sino en un incidente manejable con un resultado previsible.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.