Procesamiento de pedidos escalable

Azure Cosmos DB
HDInsight de Azure

Este escenario de ejemplo es útil para aquellas organizaciones que necesitan una arquitectura resistente y altamente escalable para el procesamiento de pedidos en línea. Entre las posibles aplicaciones se incluyen aplicaciones de comercio electrónico, puntos de venta, realización de pedidos y reserva y seguimiento de inventario.

Architecture

Un diagrama de arquitectura de ejemplo de una canalización de procesamiento de pedidos escalable

Descargue un archivo de Visio de esta arquitectura.

Flujo de datos

Esta arquitectura detalla los componentes clave de una canalización de procesamiento de pedidos. Los datos fluyen por el escenario de la siguiente manera:

  1. Los mensajes de eventos entran en el sistema a través de aplicaciones orientadas al cliente (sincrónicamente a través de HTTP) y de varios sistemas back-end (asincrónicamente a través de Apache Kafka). Estos mensajes se pasan a una canalización de procesamiento de comandos.
  2. Un microservicio de procesador de comandos ingiere y asigna cada mensaje de evento a un comando de un conjunto definido. El procesador de comandos recupera cualquier información relacionada con el estado actual para ejecutar el comando desde una base de datos de instantáneas de secuencias de eventos. A continuación, se ejecuta el comando y la salida de este se emite como un nuevo evento.
  3. Cada evento que se emite como salida de un comando se confirma en una base de datos de secuencias de eventos mediante Azure Cosmos DB.
  4. Con cada inserción o actualización de base de datos que se confirma en la base de datos de secuencias de eventos, la fuente de cambios de Azure Cosmos DB crea un evento. Los sistemas de nivel final se pueden suscribir a todos los temas de eventos que sean pertinentes para ese sistema.
  5. Todos los eventos de la fuente de cambios de Azure Cosmos DB se envían también a un microservicio de secuencia de eventos de instantáneas que calcula los cambios de estado provocados por los eventos que se han producido. Posteriormente, el nuevo estado se confirma en la base de datos de instantáneas de secuencias de eventos que está almacenada en Azure Cosmos DB. Esta base de datos de instantáneas proporciona un origen de datos distribuido globalmente y con baja latencia para el estado actual de todos los elementos de datos. La base de datos de secuencias de eventos proporciona un registro completo de todos los mensajes de eventos que han pasado a través de la arquitectura, lo cual permite escenarios eficaces de pruebas, solución de problemas y recuperación ante desastres.

Componentes

  • Azure Cosmos DB es un servicio de Microsoft, de bases de datos multimodelo y de distribución global 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. Ofrece garantía de rendimiento, latencia, disponibilidad y coherencia con Acuerdos de Nivel de Servicio (SLA) integrales. En este escenario se emplea Azure Cosmos DB para el almacenamiento de flujos de eventos y de instantáneas, y se aprovechan las características de la fuente de cambios de Azure Cosmos DB para proporcionar coherencia de datos y recuperación de errores.
  • Apache Kafka en Azure HDInsight es una implementación de servicio administrado de Apache Kafka, una plataforma de streaming distribuida de código abierto para compilar canalizaciones y aplicaciones de streaming de datos en tiempo real. Kafka también proporciona una funcionalidad de agente de mensajería similar a una cola de mensajes, donde puede publicar y suscribirse a los flujos de datos con nombre. Este escenario utiliza Kafka para procesar los eventos entrantes y los eventos de nivel inferior en la canalización de procesamiento de pedidos.

Detalles del escenario

Este escenario emplea un enfoque de aprovisionamiento de eventos mediante un modelo de programación funcional que se implementa a través de microservicios. Cada microservicio se trata como un procesador de flujos de datos y toda la lógica de negocios se implementa mediante microservicios. Este enfoque permite obtener alta disponibilidad y resistencia, replicación geográfica y un rendimiento rápido.

El uso de servicios de Azure administrados como Azure Cosmos DB y HDInsight puede ayudarle a reducir los costos aprovechando la experiencia de Microsoft en almacenamiento y recuperación de datos globalmente distribuidos de escala en la nube. Este escenario es adecuado específicamente para un escenario de comercio electrónico o de venta. Si tiene otras necesidades de servicios de datos, revise la lista de servicios de bases de datos inteligentes totalmente administrados de Azure.

Posibles casos de uso

Otros casos de uso pertinentes incluyen:

  • Sistemas back-end de comercio electrónico o punto de venta.
  • Sistemas de administración de inventarios, para los sectores del comercio y la fabricación.
  • Sistemas de realización de pedidos.
  • Otros escenarios de integración pertinentes para una canalización de procesamiento de pedidos.

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.

Existen muchas opciones tecnológicas de ingesta de mensajes, almacenamiento de datos, procesamiento de secuencias, almacenamiento de datos analíticos en tiempo real, y de análisis e informes.

Los microservicios se han convertido en un estilo arquitectónico popular para la compilación de aplicaciones en la nube resistentes, altamente escalables, que se pueden implementar de forma independiente y que evolucionan rápidamente. Los microservicios requieren un enfoque diferente para diseñar y compilar aplicaciones. Para obtener instrucciones sobre la creación y ejecución de una arquitectura basada en microservicios, consulte Diseño de microservicios en Azure.

Disponibilidad

El enfoque de aprovisionamiento de eventos de este escenario permite a los componentes del sistema acoplarse de forma flexible e implementarse independientemente unos de otros. Azure Cosmos DB ofrece alta disponibilidad y ayuda a las organizaciones a administrar los inconvenientes asociados con la coherencia, la disponibilidad y el rendimiento, todo ello con las correspondientes garantías. Apache Kafka en HDInsight está también diseñado para alta disponibilidad.

Azure Monitor proporciona interfaces de usuario unificadas para la supervisión de distintos servicios de Azure. Para más información, consulte Supervisión en Microsoft Azure. Event Hubs y Stream Analytics se integran ambos con Azure Monitor.

Para otras consideraciones sobre disponibilidad, consulte la lista de comprobación de disponibilidad.

Escalabilidad

Kafka en HDInsight permite la configuración del almacenamiento y la escalabilidad para los clústeres de Kafka. Azure Cosmos DB proporciona un rendimiento rápido predecible y se escala sin problemas a medida que crece su aplicación. La arquitectura de aprovisionamiento de eventos basada en microservicios de este escenario también facilita el escalado del sistema y la expansión de sus funcionalidades.

Para ver otras consideraciones sobre escalabilidad, consulte la lista de comprobación de eficiencia del rendimiento que encontrará en el Centro de arquitectura de Azure.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

El modelo de seguridad de Azure Cosmos DB autentica a los usuarios y proporciona acceso a sus datos y recursos. Para más información, consulte Seguridad de base de datos de Azure Cosmos DB.

Para instrucciones generales de diseño de soluciones seguras, consulte Documentación de Azure Security Center.

Resistencia

La arquitectura de aprovisionamiento de eventos y las tecnologías asociadas de este ejemplo, hacen que este escenario sea altamente resistente cuando se producen errores. Para obtener instrucciones generales sobre el diseño de soluciones resistentes, consulte Diseño de aplicaciones resistentes de Azure.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

Para examinar el costo de ejecutar este escenario, todos los servicios están preconfigurados en la calculadora de costos. Para ver cómo cambiarían los precios en su escenario concreto, cambie las variables pertinentes para que coincidan con el volumen de datos esperado. En este escenario, los precios de ejemplo solo incluyen Azure Cosmos DB y un clúster de Kafka para procesar los eventos generados desde la fuente de cambios de Azure Cosmos DB. No se incluyen procesadores ni microservicios para sistemas originales ni para sistemas de nivel final, y su costo depende en gran medida de la cantidad y escalabilidad de estos servicios así como de las tecnologías elegidas para implementarlos.

La moneda de Azure Cosmos DB es la unidad de solicitud (RU). Con las unidades de solicitud, no es necesario reservar capacidades de lectura/escritura ni aprovisionar CPU, memoria e IOPS. Azure Cosmos DB admite varias API con distintas operaciones, que van desde lecturas y escrituras sencillas a consultas de grafos complejas. Puesto que no todas las solicitudes son iguales, se les asigna una cantidad regularizada de unidades de solicitud según la cantidad de procesamientos necesario para atender la solicitud. El número de unidades de solicitud que requiere la solución depende del tamaño del elemento de datos y del número de operaciones de lectura y escritura en la base de datos por segundo. Para más información, consulte Unidades de solicitud en Azure Cosmos DB. Estos precios estimados se basan en una instancia de Azure Cosmos DB que se ejecuta en dos regiones de Azure.

Hemos proporcionado tres ejemplos de perfiles de costo según la cantidad de actividad que se espera:

  • Pequeño: este ejemplo de plan de tarifa corresponde a 5 unidades de solicitud reservadas con un almacén de datos de 1 TB en Azure Cosmos DB y un pequeño clúster de Kafka (D3 v2).
  • Mediano: este ejemplo de plan de tarifa corresponde a 50 unidades de solicitud reservadas con un almacén de datos de 10 TB en Azure Cosmos DB y un clúster mediano de Kafka (D4 v2).
  • Grande: este ejemplo de plan de tarifa se corresponde con 500 unidades de solicitud reservadas con un almacén de datos de 30 TB en Cosmos DB y un clúster grande de Kafka (D5 v2).

Colaboradores

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

Creadores de entidad de seguridad:

  • Alex Buck | Desarrollador de contenido sénior

Pasos siguientes

Este escenario de ejemplo se basa en una versión más amplia de esta arquitectura creada por jet.com para su canalización de procesamiento de pedidos de un extremo a otro. Para más información, consulte el perfil de cliente técnico de jet.com y la presentación de jet.com en Build.

Vea este otro contenido:

Consulte el contenido de arquitectura relacionado: