Arquitectura multirregión
Correr una aplicación en varias regiones cloud para que aguante perder una entera.
Una región cloud es un grupo de data centers en una zona geográfica, como Virginia del Norte o São Paulo. Repartir una aplicación entre zonas de disponibilidad dentro de una región ya la protege de perder un edificio. Una arquitectura multirregión va más allá: corre la aplicación en dos o más regiones, muchas veces muy lejos entre sí, para que siga andando aunque se caiga una región entera, y para que los usuarios lejanos reciban respuestas desde un lugar más cercano.
Hay dos estilos principales. En activo-pasivo, una región atiende todo el tráfico y otra tiene una copia lista para reemplazarla; el DNS o un balanceador de carga global mueve a los usuarios cuando la principal falla. En activo-activo, todas las regiones atienden usuarios al mismo tiempo. El activo-activo es más rápido para un público global y el cambio ante una falla es más suave, pero es mucho más difícil de construir.
Lo difícil son los datos. Copiar una base de datos entre regiones lleva tiempo, porque la distancia suma latencia, así que en cualquier momento las copias pueden estar un poco atrasadas. Dos usuarios que editan el mismo registro en regiones distintas pueden chocar. Hay que elegir entre esperar a que todas las regiones se pongan de acuerdo, que es lento, o aceptar una pequeña ventana de cambios que se podrían perder o conciliar después. Encima pagás servidores y transferencia de datos en cada región, y algunas leyes limitan a dónde pueden ir los datos personales. Por eso muchas empresas reservan lo multirregión para sus sistemas más críticos.
Para quedarse
- La aplicación corre en dos o más regiones, lejos entre sí.
- Aguanta la caída de una región entera y atiende más rápido a usuarios lejanos.
- Activo-pasivo tiene una de reserva; activo-activo atiende desde todas.
- Mantener los datos sincronizados entre regiones es lo más difícil y caro.
Para seguir leyendo
- Fundamentos multirregionales de AWS (AWS Orientación prescriptiva)
- Opciones de recuperación de desastres en la nube (AWS)
- Estrategias para diseñar redundancia (Azure Well-Architected Framework)