Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se presenta una solución de alta disponibilidad para una aplicación web que administra grandes volúmenes de datos a los que es necesario acceder dentro de un período de tiempo específico. La solución usa Azure Cosmos DB como almacén de datos principal y usa la fuente de cambios Azure Cosmos DB para replicar datos en almacenamiento secundario de bajo costo. Después del período de tiempo especificado, la solución usa Azure Functions para eliminar los datos de Azure Cosmos DB. Los datos del almacenamiento secundario permanecen disponibles más tiempo para la auditoría y el análisis de otras soluciones. La solución replica los datos en diferentes servicios de datos, lo que proporciona alta durabilidad.
Arquitectura
Descargue un archivo Visio de esta arquitectura.
Flujo de datos
El siguiente flujo de datos corresponde al diagrama anterior:
El cliente se autentica mediante Microsoft Entra ID y se concede acceso a las aplicaciones web hospedadas en Azure App Service.
Azure Front Door, que es un firewall y un equilibrador de carga de nivel 7, cambia el tráfico de usuario a la región en espera si hay una interrupción regional.
App Service hospeda sitios web y API web de RESTful. Los clientes del explorador ejecutan aplicaciones XML y JavaScript asincrónicas que usan las API.
Las API web delegan la responsabilidad del código hospedado en Functions para controlar las tareas en segundo plano. Las tareas se ponen en cola en Azure Queue Storage.
Los mensajes en cola desencadenan las funciones, que realizan las tareas en segundo plano.
Azure Managed Redis almacena en caché los datos de base de datos de las funciones. La solución descarga las lecturas de la base de datos para cambiar lentamente los datos y acelera las aplicaciones de función y las aplicaciones web mediante la memoria caché.
Azure Cosmos DB contiene los datos generados recientemente.
Azure Cosmos DB emite un feed de cambios que se puede usar para replicar cambios.
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.
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 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 que los desarrolladores usan para compilar, implementar, hospedar y escalar aplicaciones web. Puede compilar aplicaciones mediante .NET, Node.js, Java, Python o PHP. Las aplicaciones se pueden ejecutar en contenedores o en Windows o Linux. En esta arquitectura, App Service hospeda la interfaz web y las API REST de la aplicación. Para obtener más información sobre las API web, consulte Diseño de API web RESTful.
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. Puede usar microservicios para crear servidores que se conecten a servicios Azure y que siempre permanezcan actualizados. En esta arquitectura, Functions ejecuta tareas en segundo plano, como la replicación de datos y la eliminación de registros expiradas.
Azure Storage es un conjunto de servicios en la nube escalables y seguros para datos, aplicaciones y cargas de trabajo. En esta arquitectura, Storage proporciona Queue Storage para la mensajería de tareas y Table Storage para el almacenamiento de datos replicado de bajo costo.
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 según sea necesario. El acceso es rápido y rentable para muchas aplicaciones. Esta arquitectura usa Table Storage para almacenar una copia sincronizada y reestructurada de los datos en Azure Cosmos DB.
Azure Managed Redis es un servicio totalmente administrado de almacenamiento en caché en memoria y un intermediario de mensajes para compartir datos y estado entre recursos informáticos. Para mejorar el rendimiento de las aplicaciones de procesamiento de transacciones en línea de alto volumen, diséñelas para que escalen mediante un almacén de datos en memoria, como Azure Managed Redis. En esta arquitectura, Azure Managed Redis acelera el acceso a los 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 alimenta las soluciones para 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. En esta arquitectura, Azure Cosmos DB almacena los datos recientes y emite una fuente de cambios que puede usar 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 Container Apps es un servicio de contenedor totalmente administrado y sin servidor que los desarrolladores usan para compilar e implementar aplicaciones modernas a escala.
Azure Kubernetes Service (AKS) es un servicio de Kubernetes totalmente administrado para la implementación y administración de aplicaciones en contenedor. Puede usarlo para implementar una arquitectura de microservicios con componentes que se escalan de forma independiente y a petición.
Azure Container Instances ejecuta tareas sin necesidad de administración de infraestructura. Es útil durante el desarrollo y ejecutar 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 almacena grandes volúmenes de datos de aplicaciones web en Azure Cosmos DB. Las aplicaciones web que controlan grandes cantidades de datos usan Azure Cosmos DB para escalar de forma elástica e independiente el rendimiento y el almacenamiento.
Cuando se realizan cambios en la base de datos, el flujo de la fuente de cambios de Azure Cosmos DB 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. También puede organizar un movimiento de datos de bajada más amplio mediante canalizaciones de Azure Data Factory o Fabric Data Factory para aterrizar datos en zonas de análisis.
La aplicación web necesita los datos solo durante un período de tiempo limitado. Esta solución ejecuta y elimina periódicamente los datos expirados de Azure Cosmos DB, lo que reduce los costos. Puede desencadenar funciones a petición o programarlas para que se ejecuten en momentos específicos.
Posibles casos de uso
Esta solución es adecuada para cualquier aplicación que:
- Use una gran cantidad de datos.
- Requiere que los datos estén disponibles en un período de tiempo específico.
- Use datos que expiran.
Algunos ejemplos son las aplicaciones que:
Personalice la experiencia del cliente e impulse la interacción mediante 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 y mejore la eficiencia y la seguridad mediante el uso de datos de ubicación, rendimiento y comportamiento del conductor.
Pronostican el tiempo.
Supervisar y administrar sistemas de tráfico.
Analice datos de IoT de fabricación.
Supervise los datos de medidores inteligentes.
Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework, que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de una carga de trabajo. Para obtener más información, consulte Well-Architected Framework.
Reliability
La confiabilidad ayuda a garantizar que la aplicación pueda cumplir los compromisos que realice para sus clientes. Para obtener más información, vea Lista de verificación para la revisión del diseño en términos de confiabilidad.
La fuente de cambios de Azure Cosmos DB garantiza la entrega como mínimo una vez. Diseñe la función de replicación para que sea idempotente para que los eventos duplicados no generen datos incoherentes en Table Storage.
Azure Front Door proporciona conmutación automática por error regional. Si la región primaria deja de estar disponible, el tráfico se enruta a la región en espera sin intervención manual.
Optimización de costos
La optimización de costos se centra en formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la optimización de costes.
La ventaja del costo principal proviene del traslado de datos expirados de Azure Cosmos DB, que se factura por unidad de solicitud (RU), a Table Storage, que se factura por transacción y por GB almacenados. Este proceso es más barato para los datos a los que se accede con poca frecuencia.
Si la carga de trabajo tiene requisitos de rendimiento predecibles, considere la capacidad reservada para Azure Cosmos DB.
Use la fuente de cambios para la replicación. Este método reduce el mantenimiento del código en comparación con la replicación en la aplicación principal.
Esta solución conlleva costos adicionales para el almacenamiento secundario y para las funciones que administran la replicación y expiración de datos.
Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para obtener más información, consulte la Lista de comprobación de revisión de diseño para la excelencia operativa.
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, use marcas de tiempo y marcas de copia para realizar un seguimiento del progreso de la migración.
Omita las fuentes de eliminación que generan las funciones al eliminar entradas de Azure Cosmos DB. Este enfoque impide la eliminación de entradas del almacenamiento secundario de Azure Table.
Eficiencia en el rendimiento
La eficiencia del rendimiento hace referencia a la capacidad de escalado de la carga de trabajo para satisfacer las demandas de los usuarios de forma eficaz. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la eficiencia del rendimiento.
La latencia de procesamiento de fuente de cambios afecta a la rapidez con la que los datos están disponibles en Table Storage. Para satisfacer sus requisitos de latencia, escale el plan de la aplicación de funciones y la configuración de procesamiento por lotes.
Para evitar particiones activas, elija una clave de partición de Azure Cosmos DB que distribuya el rendimiento de escritura uniformemente entre particiones lógicas.
Azure Managed Redis reduce la presión de lectura en Azure Cosmos DB para los datos que cambian lentamente, lo que reduce la latencia y el consumo de RU.
Colaboradores
Microsoft mantiene este artículo. Los siguientes colaboradores escribieron este artículo.
Autor principal:
- Nabil Siddiqui | Arquitecto de soluciones en la nube: innovación digital y de aplicaciones
Otro colaborador:
- Filipe Moreira | Arquitecto de soluciones en la nube
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
- Documentación de Azure Front Door y de la red de entrega de contenido (CDN) en la nube
- Uso de Azure Cosmos DB
- Elección de la API apropiada para Azure Cosmos DB
- Desarrollar soluciones mediante el uso de Azure Cosmos DB
- Migrar grandes volúmenes de datos a Azure Cosmos DB
- Cómo modelar y particionar datos mediante un ejemplo real
- Modelos de diseño de la fuente de cambios de Azure Cosmos DB
- Crear una arquitectura basada en eventos sin servidor mediante Azure Cosmos DB y Functions
- ¿Qué es Fabric Data Factory?
- Orchestrate el movimiento y la transformación de datos mediante Azure Data Factory
- documentación de Fabric Data Factory