Idea de solución
Si le gustaría que expandamos este artículo con más información, como posibles casos de uso, servicios alternativos, consideraciones de implementación o una guía de precios, comuníquese a través de los Comentarios de GitHub.
Esta arquitectura usa varios servicios de almacenamiento para optimizar el rendimiento y el costo del almacenamiento. Azure Cosmos DB contiene datos recientes y proporciona disponibilidad, rendimiento y resistencia. Azure Table Storage contiene todos los datos, tanto recientes como históricos, lo que le permite obtener un almacenamiento rentable para los datos históricos. Por su parte, las funcionalidades de replicación nativa de Azure Storage replican los datos de Azure Cosmos DB en otras regiones. Recuerde que los datos de Azure Table Storage también se deben replicar mediante la replicación nativa o Azure Data Factory. Periódicamente, Azure Data Factory elimina los datos históricos de Azure Cosmos DB para reducir los costos.
En este ejemplo, la aplicación genera 3 TB de datos cada mes, y cuenta con tres meses de datos almacenados en Azure Cosmos DB para conseguir una alta disponibilidad y rendimiento. Los datos de la aplicación también se escriben en la región primaria de Azure Table Storage, donde posteriormente se pueden duplicar en otra región de Azure mediante Azure Data Factory. Para mantener los bajos los costos de almacenamiento, los datos que tengan más de tres meses de antigüedad se borran de Azure Cosmos DB.
Otras ventajas de este enfoque incluyen la resistencia adicional frente a errores individuales del servicio de almacenamiento y la habilitación de la clasificación de solicitudes en función de su importancia crítica para usar los servicios de almacenamiento adecuados.
Esta técnica es especialmente útil en escenarios en los que se vuelve a crear la plataforma de la tecnología de almacenamiento para asegurarse de que el sistema seguirá funcionando según lo previsto durante la fase de migración.
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.
- Pronostican el tiempo.
- Ofrecen o implementan sistemas de tráfico inteligentes, o bien usan tecnología inteligente para supervisar el tráfico.
- Analizan los datos de fabricación del Internet de las cosas (IoT).
- Muestran los datos de medidores inteligentes o usan la tecnología inteligente para supervisar los datos de los medidores.
Arquitectura
Descargue un archivo Visio de esta arquitectura.
- El cliente se autentica con Azure Active Directory (Azure AD) 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 en caso de una interrupción regional.
- Azure App Service hospeda sitios web y API web RESTful. Los clientes del explorador ejecutan aplicaciones AJAX que usan las API.
- Las API web delegan aplicaciones de función 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. Las aplicaciones de función actualizan Azure Cosmos DB y Table Storage.
- Azure Cache for Redis copia en caché los datos de base de datos 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 Cosmos DB contiene entre 3 y 4 meses de los datos más recientes que hayan usado las aplicaciones web.
- Table Storage guarda los datos históricos que usan las aplicaciones web.
- Cada tres meses, Azure Data Factory elimina los datos antiguos de Azure Cosmos DB para reducir los costos de almacenamiento. Los datos permanecen en Table Storage.
Componentes
- Azure Active Directory (Azure AD) es un servicio de administración multiinquilino 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 rápidas de los registros DNS. Administrar Azure DNS es como la administración de 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 de forma perimetral 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 y 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 no tienen 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.
- Azure Cosmos DB es un servicio de bases de datos multimodelo y de distribución global que permite a las soluciones escalar el rendimiento y la capacidad de almacenamiento en un número indefinido de regiones geográficas. Los Acuerdos de Nivel de Servicio (SLA) integrales garantizan el rendimiento, la latencia, la disponibilidad y la coherencia.
- Azure Data Factory es un servicio administrado que organiza y automatiza el movimiento y la transformación de datos.
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 las opciones de conmutación automática por error y de enrutamiento de rendimiento.
- Azure Content Delivery Network (CDN) 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. CDN 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 Fabric es una plataforma para escalar y organizar los contenedores y los microservicios.
- 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
- Los desarrolladores de aplicaciones deben implementar escrituras múltiples en ambos almacenes de datos. Esto puede complicar la implementación y administración general de la aplicación.
- Por ello, debe configurar Azure Data Factory para eliminar los datos en función de las marcas de tiempo de Azure Cosmos DB. Asegúrese de que tiene una columna de marca de tiempo definida en cada entidad.
- Puede usar las funcionalidades de replicación nativa de Table Storage para simplificar la arquitectura, pero tenga en cuenta que se limitará a regiones específicas de Azure que admitan la replicación de tablas.
Pasos siguientes
- Estilo de arquitectura web-cola-trabajo
- Diseño de una aplicación distribuida geográficamente
- Distribución de los datos globalmente con Azure Cosmos DB
- Elección de la API apropiada para Azure Cosmos DB
- Almacenamiento de datos NoSQL y acceso con Azure Cosmos DB y Table API
- Uso de datos NoSQL en Azure Cosmos DB
- Procedimientos para modelar y crear particiones de datos en Azure Cosmos DB mediante un ejemplo real
- Opciones para migrar los datos locales o en la nube a Azure Cosmos DB
- Migre cientos de terabytes de datos a Azure Cosmos DB
- Introducción al servicio Azure Data Factory
- Orqueste el movimiento y la transformación de datos en Azure Data Factory o en las canalizaciones de Azure Synapse
- Directrices para el diseño de tablas