Compartir a través de


Almacenamiento mínimo: fuente de cambios para replicar datos

Azure Front Door
Azure App Service
Funciones de Azure
Azure Cosmos DB
Azure Table Storage

En este artículo se presenta una solución de alta disponibilidad para una aplicación web que trata con grandes volúmenes de datos a los que es necesario acceder dentro de un período de tiempo específico. La solución implica el uso de Azure Cosmos DB como almacén de datos principal y el uso de la fuente de cambios de Azure Cosmos DB para replicar los datos en un almacenamiento secundario de bajo coste. Una vez que expire el período de tiempo especificado, se usa Azure Functions para eliminar los datos de Azure Cosmos DB. Los datos del almacenamiento secundario permanecen disponibles durante un período de tiempo más largo para habilitar otras soluciones con fines de auditoría y análisis. La solución también proporciona alta durabilidad mediante la replicación de datos en diferentes servicios de datos.

Arquitectura

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 del explorador ejecutan aplicaciones asincrónicas de JavaScript y XML (AJAX) que utilizan 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

  • Microsoft Entra ID es un servicio de administración de identidades y acceso que se puede sincronizar con un directorio local. En esta arquitectura, autentica a los usuarios y concede acceso a las aplicaciones web hospedadas en App Service.
  • Azure DNS es un servicio de hospedaje de alta disponibilidad para dominios del sistema de nombres de dominio (DNS). En esta arquitectura, Azure DNS proporciona resolución DNS y para la aplicación web expuesta a través de Azure Front Door.
  • Azure Front Door es una red de entrega de contenido segura y un equilibrador de carga. En esta arquitectura, acelera la entrega de contenido, proporciona funcionalidades de conmutación por error y protege las aplicaciones frente a amenazas cibernéticas.
  • App Service es un servicio totalmente administrado para compilar, implementar, hospedar 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, puede codificar las pantallas front-end o la interfaz web como API REST basadas en HTTP. Puede separarlos y convertirlos sin 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. En esta arquitectura, App Service hospeda la interfaz web y las API REST de la aplicación.
  • 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 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 que siempre permanezcan actualizados. En esta arquitectura, Functions controla tareas en segundo plano, como la replicación de datos y la eliminación de registros expirados.
  • 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, que actúa como 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. Esta arquitectura usa Queue Storage para la mensajería de tareas.
    • 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. Esta arquitectura usa Table Storage para almacenar una copia sincronizada y reestructurada de los datos en Azure Cosmos DB.
  • 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 (OLTP) de alto rendimiento mediante su diseño para escalarlas y usar un almacén de datos en memoria, como Azure Cache for Redis. En esta arquitectura, Azure Cache for Redis acelera el acceso a datos usados con frecuencia, lo que mejora el rendimiento de las aplicaciones de funciones y las aplicaciones web.
  • Azure Cosmos DB es una base de datos multimodelo distribuida globalmente que permite a las soluciones escalar de forma elástica e independiente el rendimiento y el almacenamiento en cualquier número de regiones geográficas. Proporciona garantías de rendimiento, latencia, disponibilidad y coherencia con acuerdos completos de nivel de servicio (SLA). En esta arquitectura, Azure Cosmos DB almacena datos recientes y emite una fuente de cambios que se usa para replicar actualizaciones en Table Storage.

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.

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:

  • Personalice la experiencia del cliente e impulse la interacción a través de fuentes de distribución de datos en vivo y sensores en ubicaciones físicas.
  • Hacen un seguimiento de los hábitos de gasto y del comportamiento de compra de los clientes.
  • Realice un seguimiento de las flotas de vehículos mediante la recopilación de datos sobre la ubicación, el rendimiento y el comportamiento del conductor para mejorar la eficiencia y la seguridad.
  • 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