Guía de conceptos

Alta disponibilidad y recuperación ante desastres

Los servidores se averían, los centros de datos se quedan sin energía y las personas borran datos por error. La alta disponibilidad consiste en que tu servicio siga funcionando aunque pase algo así, y la recuperación ante desastres, en volver a ponerlo en marcha dentro de un tiempo acordado cuando, aun así, se detiene. Cada proveedor de nube usa nombres distintos, pero el esqueleto es el mismo. Primero veremos el esqueleto y, capítulo a capítulo, lo que cambia en cada proveedor.

Estás viendo la guía para AWS. Cada capítulo muestra también los nombres de servicio de AWS y en qué se diferencia de otros proveedores.

01

Las fallas van a ocurrir: cifras de disponibilidad y puntos únicos de error

La disponibilidad es la proporción del tiempo en que tu servicio se pudo usar. Un 99.9% suena bastante alto, pero en un año significa unas 8 horas y 45 minutos sin servicio. Cada 9 que agregas reduce a la décima parte la inactividad permitida, y el costo y el diseño se complican en la misma medida.

DisponibilidadInactividad al añoInactividad al mes
99%Unos 3 días y 15 horasUnas 7 horas
99.9%Unas 8 horas y 45 minutosUnos 43 minutos
99.95%Unas 4 horas y 22 minutosUnos 22 minutos
99.99%Unos 52 minutosUnos 4 minutos
99.999%Unos 5 minutosUnos 26 segundos

En cadena baja; en paralelo sube

Un servicio está hecho de varios componentes encadenados. Si una respuesta tiene que pasar por un servidor web, luego por un servidor de aplicaciones y luego por una base de datos, los tres tienen que estar funcionando. Por eso la disponibilidad total es el producto de la disponibilidad de cada componente. Si encadenas tres componentes de 99.9%, bajas a cerca de 99.7%. En cambio, si pones dos servidores iguales uno al lado del otro, esa capa solo cae si caen los dos, y sube hasta 99.9999% (suponiendo que las fallas de los dos son independientes). En la escena de abajo, prueba a duplicar cada capa.

Disponibilidad total
99.7% (unas 26.3 horas al año)

Una solicitud tiene que pasar por web → app → BD para atenderse · arriba a la izquierda = disponibilidad por capa

Aunque cada componente tenga un 99.9%, al encadenar tres hace falta que los tres funcionen a la vez, así que el total baja a 99.7%. En cambio, si pones dos servidores iguales uno al lado del otro, esa capa solo cae si caen los dos, y sube a 99.9999%. (El cálculo supone que las fallas son independientes entre sí.)

Un punto que, si se detiene, detiene todo se llama punto único de error (SPOF). Diseñar para la alta disponibilidad es buscar los puntos únicos de error y eliminarlos uno por uno. Y no solo los servidores: una base de datos, un equilibrador de carga, una ruta de red e incluso «la única persona que sabe cómo está configurado este servidor» pueden ser un punto único de error.

Un SLA no es una garantía, sino una promesa de compensación

Cada servicio en la nube promete un tiempo de actividad mensual en su SLA (acuerdo de nivel de servicio). Aquí viene lo que confunde a mucha gente: un SLA no garantiza que «va a funcionar sí o sí este porcentaje», sino que promete que «si no lo cumplimos, te devolvemos una parte de la factura en créditos». No cubre lo que pierdes mientras estás sin servicio, así que la disponibilidad de tu propio servicio tiene que salir de tu diseño. Incluso para el mismo servicio, el SLA es más alto cuando lo repartes en varias zonas que cuando usas un solo servidor.

Un cálculo clásico de examen: en serie, se multiplica (99.9% × 99.9% ≈ 99.8%); con redundancia, es 1 − (1 − a)² (dos servidores de 99.9% → 99.9999%). «La forma más rentable de aumentar la disponibilidad» → primero haz redundante el punto único de error más débil.

Si la pregunta dice… → elige esto

  • “Un componente que, si se detiene, detiene todo”Punto único de error (SPOF)
  • “Disponibilidad total de tres componentes de 99.9% en serie”Cerca de 99.7% (se multiplica)
  • “Con dos servidores iguales, la disponibilidad”Sube: tienen que fallar los dos para caer
  • “Lo que recibes cuando no se cumple el SLA”Créditos de servicio (no una compensación por pérdidas)
  • “Inactividad anual con 99.99% de disponibilidad”Unos 52 minutos

Para eliminar un punto único de error, pasaste de un servidor a dos. Pero ¿y si esos dos están en el mismo edificio?

02

El tamaño de una falla: servidores, zonas y regiones

Las fallas tienen distintos tamaños. A veces se estropea el disco de un servidor. A veces un centro de datos entero se detiene por un corte de energía, un incendio o una falla de red. Y, de vez en cuando, toda un área geográfica se detiene por un desastre natural o una caída a gran escala. El alcance que tiene una sola falla se llama radio de impacto (blast radius).

La nube te muestra ese alcance dividido en zonas de disponibilidad y regiones. Una región es un área geográfica, como Seúl o Tokio, y dentro de ella hay varias zonas de disponibilidad: grupos de centros de datos, cada uno con energía, refrigeración y red independientes. Las zonas están lo bastante cerca para permitir la replicación síncrona (unos pocos milisegundos de latencia), pero lo bastante lejos para que un desastre en una no se extienda a otra.

Distribución
Falla
Distribución
Repartidos en dos zonas de disponibilidad
Resultado
Servicio en pie

Dónde pones los dos servidores decide qué tan grande es la falla que aguantan

Repartiste los dos servidores en zonas de disponibilidad distintas, así que aunque una zona de disponibilidad se caiga entera, la otra toma el relevo. Es la configuración base a la que apunta la mayoría de los servicios. Cada región de AWS tiene al menos tres zonas de disponibilidad, y todas están a menos de 100 km unas de otras.

DistribuciónFalla de servidorFalla de zonaFalla de regiónCosto y complejidad
Varios servidores en una zonaAguantaCaeCaeBajo
Repartidos en varias zonasAguantaAguantaCaeMedio: lo habitual por defecto
Repartidos en varias regionesAguantaAguantaAguantaAlto: retraso de replicación y costo

La mayoría de los servicios en producción usan varias zonas como base. Como están en la misma región, la latencia es lo bastante baja para replicar la base de datos de forma síncrona, y aguantas la falla de una zona. Solo te extiendes a varias regiones cuando también tienes que aguantar la falla de una región (por leyes y normativas, o en servicios muy grandes), y cómo hacerlo son las estrategias de recuperación ante desastres del capítulo 7.

Si la pregunta dice… → elige esto

  • “Mantener el servicio aunque se detenga un centro de datos”Repartir en varias zonas de disponibilidad
  • “Mantener el servicio incluso ante un desastre en toda una región”Una copia en otra región (recuperación ante desastres)
  • “El punto débil de poner dos servidores en la misma zona”Caen juntos si falla la zona
  • “Por qué es posible la replicación síncrona entre zonas”Están en la misma región, así que la latencia es baja
  • “El alcance de una sola falla”Radio de impacto (blast radius)

Para decidir cuánto tienes que aguantar, primero necesitas un objetivo. ¿Cuánto tiempo puedes permitirte estar sin servicio y cuántos datos puedes permitirte perder?

Publicidad

03

Qué proteger y cuánto: RTO y RPO

Cuando diseñas la recuperación ante desastres, hay dos números que se deciden antes que nada. El RPO (objetivo de punto de recuperación) es «cuántos datos puedes permitirte perder cuando algo falla», expresado en tiempo. El RTO (objetivo de tiempo de recuperación) es «cuánto tiempo puedes permitirte estar sin servicio».

Se entiende mejor si pones el momento de la falla en el centro. Hacia atrás, todo lo que hay desde el último punto en que protegiste tus datos (la última copia de seguridad o replicación) son los datos que pierdes: ese es el RPO. Hacia adelante, todo el tiempo hasta que el servicio vuelve a abrir es tu inactividad: ese es el RTO. En la escena de abajo, prueba a cambiar cómo proteges los datos y cómo recuperas.

Cómo proteges los datos
Cómo recuperas
RPO
24 horas
RTO
8 horas

Desde el momento de la falla, el RPO mira hacia atrás y el RTO hacia adelante · escala de tiempo logarítmica, números de ejemplo

El RPO es «cuántos datos puedes permitirte perder cuando algo falla», expresado en tiempo. Con «Copia una vez al día», podrías perder hasta 24 horas de datos acumulados justo antes de la falla. El RTO es «cuánto tiempo puedes permitirte estar sin servicio». Aquí suponemos que «Reconstruir y restaurar la copia» tarda 8 horas, más o menos. Cuanto más corto hagas cualquiera de los dos, más cuesta.

RPORTO
Qué pregunta¿Cuántos minutos u horas de datos puedes perder?¿Cuántos minutos u horas puedes estar sin servicio?
Qué lo determinaFrecuencia de las copias, método de replicaciónCómo recuperas, qué tan listo está tu entorno en espera
Si se acerca a 0Hace falta replicación en tiempo real (síncrona)Hace falta un entorno en espera que ya esté funcionando

Estos dos objetivos los fija el negocio, no la tecnología. Un sistema de pedidos pierde mucho aunque esté caído un solo minuto y no puede perder ni un pedido, mientras que un sistema interno de informes quizá aguante un día sin servicio. Cuanto más ajustado es el objetivo, más alto es el costo, así que para cada sistema pones en la balanza las pérdidas y el costo. Si recuperar cuesta más de lo que te haría perder la falla, pusiste el objetivo demasiado alto.

«Se acepta una pérdida de datos de hasta 15 minutos» → RPO de 15 minutos. «El servicio debe reanudarse en 4 horas» → RTO de 4 horas. Recuerda: el RPO va de «datos» y el RTO, de «tiempo (sin servicio)».

Si la pregunta dice… → elige esto

  • “Pérdida máxima de datos aceptable en una falla”RPO (objetivo de punto de recuperación)
  • “Tiempo máximo para reanudar el servicio tras una falla”RTO (objetivo de tiempo de recuperación)
  • “RPO de un sistema con una sola copia de seguridad al día”Hasta 24 horas
  • “Acercar el RPO a 0”Replicación en tiempo real (síncrona)
  • “Cuanto más cortos son el RTO y el RPO”Más alto es el costo

Ya tienes los objetivos; ahora toca evitar que se detenga. Empecemos por cómo hacer que los servidores aguanten cuando las solicitudes llegan de golpe.

Solo Pro

Hasta aquí llega la parte gratuita

Los otros 5 capítulos están disponibles para suscriptores Pro. Cada uno sigue con visuales en 3D y pistas de “si la pregunta dice…”, y en el último capítulo lo pones a prueba tú mismo.

  1. 04Escalado y escalado automático
  2. 05Replicación y conmutación por error de la base de datos
  3. 06Copia de seguridad y restauración
  4. 07Cuatro estrategias de recuperación ante desastres
  5. 08Diseñar para la resiliencia y ponerla a prueba