Almacenamiento mínimo: fuente de cambios para replicar datos

Azure Front Door
Azure App Service
Azure Functions
Azure Cosmos DB
Azure Table Storage

Este artículo presenta una solución de alta disponibilidad para una aplicación web que usa grandes cantidades de datos que deben estar disponibles durante un período de tiempo específico. Almacena los datos en Azure Cosmos DB y usa la fuente de cambios de Azure Cosmos DB para replicar los datos en un almacenamiento secundario. Una vez transcurrido el período de tiempo especificado, se usa Azure Functions para eliminar los datos de Azure Cosmos DB.

Architecture

Arquitectura de un sistema resistente que usa dos tipos de almacenamiento para reducir los costos.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

  1. El cliente se autentica con Microsoft Entra ID y se le concede acceso a las aplicaciones web hospedadas en Azure App Service.
  2. Azure Front Door, un firewall y equilibrador de carga de capa 7, cambia el tráfico del usuario a la región de espera en caso de interrupción regional.
  3. App Service hospeda sitios web y API web de RESTful. Los clientes de explorador ejecutan aplicaciones AJAX que usan las API.
  4. Las API web delegan la responsabilidad del código hospedado por Functions para controlar las tareas en segundo plano. Las tareas se ponen en cola en Azure Queue Storage.
  5. Los mensajes en cola desencadenan las funciones, que realizan las tareas en segundo plano.
  6. Azure Cache for Redis copia en caché los datos de la base de datos para las funciones. Mediante una memoria caché, la solución descarga la actividad de la base de datos y acelera las aplicaciones de funciones y las aplicaciones web.
  7. Azure Cosmos DB contiene los datos generados recientemente.
  8. Azure Cosmos DB emite una fuente de cambios que se puede usar para replicarlos.
  9. Una aplicación de funciones lee la fuente de cambios y los replica en las tablas de Azure Table Storage. Otra aplicación de funciones quita periódicamente los datos expirados de Azure Cosmos DB.
  10. Table Storage ofrece almacenamiento de bajo costo.

Componentes

  • Azure Microsoft Entra ID es un servicio de administración multiinquilino de identidad 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.
  • 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.
  • Functions facilita 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 en masa, integrar sistemas, trabajar con dispositivos de Internet de las cosas (IoT) y compilar 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, Table Storage y Queue Storage. Azure Files suele ser una herramienta eficaz para migrar cargas de trabajo del sistema central.
  • Queue Storage facilita colas de mensajes sencillas, rentables y duraderas para cargas de trabajo grandes.
  • Table Storage es un almacén de pares clave-valor NoSQL para desarrollo rápido que usa grandes conjuntos de datos semiestructurados. 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. Puede mejorar el rendimiento de las aplicaciones de procesamiento de transacciones en línea de alto rendimiento diseñándolas para modificar la escala y para usar un almacén de datos en memoria, como Azure Cache for Redis.
  • Azure Cosmos DB es una base de datos multimodelo y de distribución global de Microsoft que permite a las soluciones modificar la escala de rendimiento y almacenamiento de forma elástica e independiente en cualquier número de regiones geográficas. Ofrece garantía de rendimiento, latencia, disponibilidad y coherencia con Acuerdos de Nivel de Servicio (SLA) integrales.

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 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.

Detalles del escenario

Esta solución usa Azure Cosmos DB para almacenar el gran volumen de datos que usa la aplicación web. Las aplicaciones web que controlan grandes cantidades de datos se benefician de la capacidad de Azure Cosmos DB para escalar de forma elástica e independiente el rendimiento y el almacenamiento.

Otro componente clave de la solución es la fuente de cambios de Azure Cosmos DB. Cuando se realizan cambios en la base de datos, el flujo de la fuente de cambios se envía a un desencadenador de Functions controlado por eventos. A continuación, una función ejecuta y replica los cambios en las tablas de Table Storage, que proporcionan una solución de almacenamiento de bajo coste.

La aplicación web necesita los datos solo durante un período de tiempo limitado. La solución aprovecha ese hecho para reducir aún más los costes. En concreto, otra función ejecuta y elimina periódicamente datos expirados de Azure Cosmos DB. Además de desencadenarse, las funciones también se pueden programar para ejecutarse en momentos establecidos.

Posibles casos de uso

La arquitectura es adecuada para cualquier aplicación que:

  • Use una gran cantidad de datos.
  • Requiera que los datos estén siempre disponibles cuando sea necesario.
  • Use datos que expiran.

Algunos ejemplos son las aplicaciones que:

  • Hacen un seguimiento de los hábitos de gasto y del comportamiento de compra de los clientes.
  • Pronostican el tiempo.
  • Ofrecen o implementan sistemas de tráfico inteligentes, o bien usan tecnología inteligente para supervisar el tráfico.
  • Analice datos de IoT de fabricaciones.
  • Muestran los datos de medidores inteligentes o usan la tecnología inteligente para supervisar los datos de los medidores.

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

  • Al implementar y mantener esta solución, incurrirá en costes adicionales.
  • El uso de la fuente de cambios para la replicación requiere menos mantenimiento del código que la replicación de la aplicación principal.
  • Necesita migrar los datos existentes. El proceso de migración requiere scripts o rutinas ad hoc para copiar datos antiguos en cuentas de almacenamiento. Al migrar los datos, asegúrese de usar marcas de tiempo y marcas de copia para realizar un seguimiento del progreso de la migración.
  • Para evitar eliminar entradas del almacenamiento secundario de Azure Table, omita las fuentes de eliminación que se generan cuando las funciones eliminen entradas desde Azure Cosmos DB.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

  • Nabil Siddiqui | Arquitecto de soluciones en la nube: innovación digital y de aplicaciones

Pasos siguientes