Esta arquitectura proporciona una solución de alta disponibilidad para una aplicación web que usa grandes cantidades de datos. Es un enfoque flexible que puede proporcionar una solución global para distribuir aplicaciones y datos y así poder mantenerlos cerca de los usuarios.
Recuerde que esta arquitectura requiere un software de replicación personalizado. Dependiendo de las aplicaciones y la configuración, esto puede ser difícil de crear.
Existen varias opciones de configuración posibles:
Activa/pasiva: existe una región primaria que normalmente proporciona servicio a todos los usuarios. También hay una región en espera que se activa cuando la región primaria no funciona. Cuando el sistema principal está activo, un servicio de replicación replica los cambios de la base de datos en la región que está en espera.
Activa/activa: existe una región primaria que normalmente está activa, lo que proporciona un servicio de lectura a usuarios cercanos y otro servicio de escritura a todos los usuarios. Una o varias regiones están activas y proporcionan un servicio de solo lectura a usuarios cercanos. Los servicios de escritura siempre se dirigen a la región primaria y los de lectura siempre se dirigen a la región activa más cercana.
Igual que sucede con la configuración Activa/pasiva, hay una región en espera que se activa cuando la región primaria no puede funcionar. Cuando el sistema principal está activo, un servicio de replicación replica los cambios de la base de datos en la región de solo lectura que está en espera. Cuando la región en espera está activa, un servicio de replicación replica los cambios de la base de datos en las regiones de solo lectura.
Un inconveniente de este enfoque es la alta latencia de las operaciones de escritura.
Multiactiva: existen varias regiones activas y cada una es capaz de proporcionar un servicio completo a los usuarios. La actividad del usuario siempre se dirige a la región activa más cercana.
La implementación multiactiva es bastante compleja y puede requerir un diseño e implementación de expertos.
Puesto que la replicación es una implementación personalizada, el nivel de coherencia puede ser el necesario.
La posible dificultad de implementar la replicación personalizada y el tiempo necesario son puntos importantes a tener en cuenta si usa esta arquitectura.
Nota
La aplicación puede necesitar que tenga varias cuentas de almacenamiento en algunas circunstancias. Para obtener más información, consulte Puntos a tener en cuenta.
Posibles casos de uso
La arquitectura puede ser adecuada para cualquier aplicación que use grandes cantidades de datos que siempre deban estar disponibles. Algunos ejemplos son las aplicaciones que:
- Hacen un seguimiento de los hábitos de gasto y del comportamiento de compra de los clientes (sector minorista).
- Previsión meteorológica (sector de la agricultura, el medio ambiente y multimedia/noticias).
- Ofrecen o implementan sistemas de tráfico inteligentes, o bien usan tecnología inteligente para supervisar el tráfico (sectores de la automoción y el transporte).
- Analizan los datos de fabricación del Internet de las cosas (IoT).
- Muestran los datos de medidores inteligentes o usan tecnología inteligente para supervisar los datos de los medidores (sector energético).
Architecture
Descargue un archivo Visio de esta arquitectura.
Flujo de datos
- El cliente se autentica con Microsoft Entra ID y se le concede acceso a las aplicaciones web hospedadas en Azure App Service.
- Azure Front Door, un firewall y un equilibrador de carga de nivel 7, cambia el tráfico de usuario a otra región de Azure si hay una interrupción regional.
- Azure App Service hospeda sitios web y API web RESTful. Los clientes de explorador ejecutan aplicaciones AJAX que usan las API.
- Las API web delegan aplicaciones de funciones para controlar las tareas en segundo plano. Las tareas se ponen en cola en Azure Queue Storage.
- Las aplicaciones de función que hospeda Azure Functions realizan las tareas en segundo plano, y las desencadenan los mensajes en cola.
- El software de replicación personalizado garantiza que las tablas sigan siendo idénticas entre regiones.
- Azure Cache for Redis copia en la caché los datos de la tabla de las aplicaciones de función. Esto descarga la actividad de la base de datos y acelera las aplicaciones de función y las aplicaciones web.
- Azure Table Storage contiene los datos que usan las aplicaciones web.
Componentes
- Microsoft Entra ID es un servicio de administración de identidades y acceso que se puede sincronizar con un directorio local. Azure DNS es un servicio de hospedaje de alta disponibilidad para dominios DNS que proporciona a las aplicaciones consultas de DNS y actualizaciones de registros DNS de gran velocidad. Administrar Azure DNS es como administrar otros servicios de Azure. Además, usa las mismas credenciales, API, herramientas y facturación.
- Azure Front Door es una red de entrega de contenido segura (CDN) y un equilibrador de carga con conmutación por error instantánea. Funciona en el borde cerca de los usuarios, lo que acelera la entrega de contenido y protege las aplicaciones, las API y los sitios web frente a amenazas cibernéticas.
- Azure App Service es un servicio totalmente administrado para compilar, implementar y escalar aplicaciones web. Puede compilar aplicaciones mediante .NET, .NET Core, Node.js, Java, Python o PHP. Las aplicaciones se pueden ejecutar en contenedores o en Windows o Linux. En una migración del sistema central, las pantallas de front-end o la interfaz web se pueden programar como API REST basadas en HTTP. Se pueden segregar y pueden no tener estado para organizar un sistema basado en microservicios. Para obtener más información sobre las API web, consulte Diseño de API web RESTful.
- Azure Functions proporciona un entorno para ejecutar pequeños fragmentos de código, denominados funciones, sin tener que establecer una infraestructura de aplicaciones. Puede usarlo para procesar datos masivos, integrar sistemas, trabajar con IoT, y crear API y microservicios sencillos. Con los microservicios, puede crear servidores que se conecten a los servicios de Azure y estén siempre actualizados.
- Azure Storage es un conjunto de servicios en la nube seguros y escalables de forma masiva para datos, aplicaciones y cargas de trabajo. Incluye Azure Files, Azure Table Storage y Azure Queue Storage. Azure Files suele ser una herramienta eficaz para migrar cargas de trabajo del sistema central.
- Azure Queue Storage proporciona colas de mensajes sencillas, rentables y duraderas para cargas de trabajo grandes.
- Azure Table Storage es un almacén de pares clave-valor noSQL para el desarrollo rápido que usa conjuntos de datos semiestructurados masivos. Las tablas son sin esquema y se adaptan fácilmente a medida que cambian las necesidades. El acceso es rápido y rentable para muchos tipos de aplicaciones y, normalmente, cuesta menos que otros tipos de almacenamiento con clave.
- Azure Cache for Redis es un servicio de almacenamiento en caché en memoria totalmente administrado y un agente de mensajes para compartir los datos y el estado entre los recursos de los procesos. Incluye el producto de código abierto Redis y el producto comercial de Redis Labs como servicios administrados. Se puede mejorar el rendimiento de las aplicaciones de procesamiento de transacciones en líneas de alto rendimiento si se diseñan para escalarlas y para usar un almacén de datos en memoria como Azure Cache for Redis.
Alternativas
- Azure Traffic Manager dirige las solicitudes DNS entrantes en las regiones globales de Azure en función de los métodos de enrutamiento de tráfico elegidos. También proporciona conmutación automática por error y enrutamiento de rendimiento.
- Azure Content Delivery Network copia en caché el contenido estático en los servidores perimetrales para una respuesta rápida y usa optimizaciones de red para mejorar la respuesta con el contenido dinámico. Content Delivery Network es especialmente útil cuando la base de usuarios es global.
- Azure Container Apps es un servicio de contenedor sin servidor totalmente administrado que se usa para compilar e implementar aplicaciones modernas a escala.
- Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado para la implementación y la administración de aplicaciones contenedorizadas. Se puede usar para implementar una arquitectura de microservicios con componentes que se escalan de forma independiente a petición.
- Azure Container Instances proporciona una manera rápida y sencilla de ejecutar tareas sin tener que administrar la infraestructura. Es útil durante el desarrollo o para la ejecución de tareas no programadas.
- Azure Service Bus es un servicio de mensajería en la nube confiable para una integración híbrida sencilla. Se puede usar en lugar de Queue Storage en esta arquitectura. Para obtener más información, consulte Colas de Storage y de Service Bus: comparación y diferencias.
Consideraciones
Recuerde que esta arquitectura requiere un software de replicación personalizado. Esto puede ser difícil de crear, en función de las aplicaciones y la configuración. La posible dificultad de implementar la replicación personalizada y el tiempo necesario son puntos importantes a tener en cuenta si usa esta arquitectura.
Dado que la replicación está diseñada de forma personalizada, los desarrolladores tienen una gran flexibilidad a la hora de implementar una estrategia de coherencia de datos.
Hay límites de rendimiento en Table Storage que se pueden superar mediante la adición de cuentas de almacenamiento. Las siguientes circunstancias pueden requerir cuentas adicionales:
- Para implementar servicios multiinquilino para dar soporte a varios clientes.
- Para proporcionar soporte técnico a los clientes con mayores tasas de transacciones.
- Para proporcionar soporte técnico a los clientes con grandes conjuntos de datos.
- Para acelerar el acceso a los datos mediante la distribución de datos entre varias cuentas de almacenamiento.
- Para separar los datos en niveles de archivo de acceso frecuente y poco frecuente.
- Para realizar copias de datos para tener copias de seguridad y realizar informes.
Para obtener más información, consulte Objetivos de escalabilidad y rendimiento de Table Storage.
Si la aplicación ya contiene datos, debe escribir rutinas para copiar los datos antiguos en las cuentas de almacenamiento. Asegúrese de que tenga marcas de tiempo y de copia para supervisar el progreso de la migración de datos.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
- Nabil Siddiqui | Arquitecto de soluciones en la nube: innovación digital y de aplicaciones
Pasos siguientes
- Directrices para el diseño de tablas
- Uso de redundancia geográfica para diseñar aplicaciones de alta disponibilidad