¿Qué es la arquitectura basada en eventos?

Las empresas necesitan cada vez más sistemas que puedan reaccionar de forma instantánea a una amplia variedad de activadores, desde interacciones con clientes hasta lecturas de sensores. Los modelos tradicionales de petición-respuesta, aunque son valiosos, no siempre ofrecen la agilidad o la escalabilidad necesarias para estos entornos dinámicos. La arquitectura basada en eventos (EDA) puede ofrecer un paradigma eficaz para crear aplicaciones adaptables, resilientes y escalables. Es un patrón de arquitectura de software que puede promover la producción, la detección, el consumo y la reacción a eventos.

Información sobre la arquitectura basada en eventos

Definición de arquitectura basada en eventos

La arquitectura basada en eventos es un modelo para diseñar aplicaciones de software en el que los servicios de bajo acomplamiento y se comunican mediante la producción y el consumo de eventos. Un "evento" es un suceso significativo o un cambio en el estado del sistema. Puede ser cualquier cosa, desde un cliente que hace un pedido hasta un sensor que detecta un cambio de temperatura, un archivo nuevo que se sube al almacenamiento o un registro de base de datos que se actualiza.

A diferencia de los modelos tradicionales basados en peticiones, en los que un servicio llama explícitamente a otro y espera una respuesta, la EDA permite que los servicios operen de forma asíncrona. Un servicio que genera un evento (el "productor" o "editor") simplemente anuncia que el evento ha tenido lugar. Otros servicios (los "consumidores" o "suscriptores") que estén interesados en ese tipo de evento pueden reaccionar a él de forma independiente y cuando quieran.

Los componentes clave de un EDA suelen incluir lo siguiente:

  • Productores de eventos: aplicaciones o servicios que generan eventos.
  • Consumidores de eventos (o suscriptores): aplicaciones o servicios que reciben y procesan eventos.
  • Canal de eventos (o bus de eventos, agente de mensajes o enrutador de eventos): infraestructura intermediaria que ingiere eventos de productores, los filtra y los entrega a los consumidores interesados. Este componente es fundamental para desacoplar a los productores de los consumidores.

¿Cómo funciona la arquitectura basada en eventos?

El flujo de trabajo en una arquitectura basada en eventos suele seguir un patrón coherente.

  • Ocurrencia y producción de eventos: se produce una acción significativa en un servicio o sistema. Por ejemplo, un usuario puede hacer clic en el botón "Enviar pedido" de un sitio web de comercio electrónico. El servicio responsable de gestionar esta acción inicial (el productor de eventos) genera un objeto de evento que contiene información relevante sobre lo que ha ocurrido, como el ID del pedido, los artículos y los datos del cliente.
  • Transmisión de eventos: el productor envía este evento a un canal de eventos. Este canal es una parte específica de la infraestructura, como una cola de mensajes o un sistema de publicación-suscripción (pub/sub), diseñado para gestionar el flujo de eventos.
  • Filtrado y enrutamiento de eventos (por el canal de eventos): el canal de eventos recibe el evento. A continuación, puede aplicar reglas de filtrado o enrutar el evento en función de su tipo, contenido o tema a varios consumidores posteriores que hayan registrado su interés en ese tipo de eventos. Por ejemplo, un evento "order_placed" podría enrutarse a un servicio de inventario, a un servicio de notificaciones y a un servicio de envío.
  • Consumo y procesamiento de eventos: los servicios interesados (consumidores) reciben el evento del canal. Cada consumidor procesa el evento de forma asíncrona e independiente. Continuando con el ejemplo del comercio electrónico:
  • El servicio de inventario podría reducir los niveles de stock de los artículos pedidos.
  • El servicio de notificaciones podría enviar un correo de confirmación del pedido al cliente.
  • El servicio de envío podría iniciar el proceso logístico

Ventajas de la arquitectura basada en eventos

Adoptar una arquitectura basada en eventos puede ofrecer numerosas ventajas, sobre todo en sistemas complejos y distribuidos.

Escalabilidad mejorada

Los servicios de una EDA tienen un bajo acoplamiento y se pueden escalar de forma independiente. Si un servicio de procesamiento de pedidos está bajo una carga pesada, puedes escalar verticalmente solo ese servicio sin afectar, por ejemplo, al servicio de notificaciones de usuario.

Mayor resiliencia y tolerancia a fallos

La arquitectura basada en eventos puede ayudar a que las aplicaciones sean más robustas, ya que aísla los fallos de los servicios. Su naturaleza desacoplada garantiza que un mal funcionamiento en un servicio de consumo no se propague y cause un fallo completo del sistema.

Mayor agilidad y flexibilidad

Los desarrolladores pueden añadir, modificar o eliminar servicios con un impacto mínimo en otras partes del sistema. Los nuevos servicios pueden suscribirse a flujos de eventos ya existentes para añadir nuevas funciones sin necesidad de que los productores de eventos originales hagan cambios.

Capacidad de respuesta en tiempo real

La arquitectura basada en eventos ayuda a los sistemas a responder a los eventos con una inmediatez notable. Esta función es especialmente valiosa para las aplicaciones en las que es fundamental actuar con rapidez, como la detección de fraudes, las analíticas en tiempo real y la monitorización operativa.

Integración simplificada

La EDA puede servir como una base flexible para integrar sistemas dispares, incluidas aplicaciones antiguas, microservicios modernos y servicios de terceros. Cada sistema puede publicar y consumir eventos sin necesidad de integraciones directas punto a punto con todos los demás sistemas.

Capacidad de extensión

Añadir nuevas funciones o reaccionar a eventos de nuevas formas suele implicar simplemente desplegar un nuevo servicio de consumo que se suscriba al flujo de eventos pertinente.

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito gratis para invertirlos en Google Cloud.

Casos prácticos de la arquitectura basada en eventos

Las características de la EDA hacen que sea adecuada para una amplia gama de aplicaciones en diversos sectores.

La EDA es un patrón común para habilitar la comunicación y el flujo de datos entre microservicios. En lugar de realizar llamadas a la API directas y síncronas que pueden crear un acoplamiento estrecho, los microservicios pueden publicar eventos cuando cambia su estado, y otros microservicios pueden suscribirse a estos eventos para reaccionar en consecuencia.

Las aplicaciones que gestionan flujos de datos de alta velocidad, como los datos de sensores de IoT, los registros de aplicaciones, los feeds de redes sociales o los datos de mercados financieros, pueden usar EDA para procesar, analizar y reaccionar a esta información en tiempo real. Esto puede ayudar a potenciar los paneles de control, los sistemas de alertas o los procesos automatizados de toma de decisiones.

La EDA puede ayudar a gestionar los flujos de trabajo complejos y asíncronos inherentes al comercio online, desde la gestión de los niveles de inventario en respuesta a las ventas hasta el procesamiento de pedidos en distintas fases (pago, envío y tramitación), pasando por el envío de notificaciones a los clientes. Si un servicio de procesamiento de pagos es lento, el evento de pedido se puede captar y procesar mediante otros servicios, como la reserva de inventario.

Muchos procesos empresariales se basan en eventos. Por ejemplo, la solicitud de una reclamación de seguro (evento) puede desencadenar una serie de actividades posteriores: comprobación de fraude, evaluación, comunicación con el cliente y, finalmente, procesamiento del pago. La EDA puede ayudar a modelar y automatizar estos flujos de trabajo de forma eficaz.

Cuando los datos deben mantenerse coherentes en varios sistemas o almacenes de datos, se puede usar EDA. Se puede publicar un cambio en una base de datos (un evento), lo que permite que otras bases de datos o cachés se suscriban a estos eventos de cambio y se actualicen.

Las funciones sin servidor (como Cloud Run functions) suelen diseñarse para que se activen con eventos. Se ejecutan en respuesta a varios activadores de eventos, como la subida de un objeto a Cloud Storage, la llegada de un mensaje a una cola o una solicitud HTTP. La arquitectura basada en eventos es una opción natural para crear aplicaciones con componentes sin servidor.

La detección de fraudes en tiempo real, la monitorización del mercado de valores y el procesamiento de operaciones son aplicaciones financieras esenciales que se benefician de las capacidades de baja latencia y alto rendimiento de EDA.

¿Cómo usa Google Cloud la arquitectura basada en eventos?

Google Cloud ofrece un sólido paquete de servicios que permite a los clientes crear y desplegar potentes aplicaciones basadas en eventos. La plataforma en sí aprovecha los principios basados en eventos para ofrecer servicios escalables y resilientes. Para los clientes que crean soluciones basadas en eventos, Google Cloud ofrece varios servicios gestionados clave:

  • Pub/Sub: es un servicio de mensajería en tiempo real distribuido a nivel mundial, escalable y fiable que actúa como bus de eventos o intermediario de mensajes en una EDA. Pub/Sub ayuda a los servicios a publicar eventos y a otros servicios a suscribirse a ellos de forma asíncrona. Desvincula a los editores de los suscriptores y admite funciones como la entrega "al menos una vez", las suscripciones push y pull, y el filtrado de mensajes.
  • Eventarc: Eventarc puede proporcionar una forma estandarizada de gestionar el flujo de eventos conectando fuentes de eventos (como cambios en los segmentos de Cloud Storage, finalizaciones de tareas de BigQuery o eventos de aplicaciones personalizadas) con consumidores de eventos. Permite a los desarrolladores activar fácilmente servicios de Cloud Run, funciones de Cloud Run o Workflows en respuesta a eventos.
  • Cloud Run: esta plataforma de computación totalmente gestionada te permite ejecutar tus contenedores sin reconocimiento del estado, de forma que se puedan invocar mediante solicitudes HTTP o eventos de Pub/Sub (a menudo a través de Eventarc). Con Cloud Run functions, puedes desplegar pequeños fragmentos de código con un solo propósito (funciones) que responden a una amplia variedad de eventos sin necesidad de gestionar servidores ni entornos de ejecución. En una arquitectura basada en eventos, los servicios de Cloud Run pueden ser muy eficaces como consumidores de eventos, ya que procesan las cargas de trabajo que desencadenan estos eventos.
  • Workflows: una plataforma de orquestación totalmente gestionada que te permite definir, desplegar y gestionar flujos de trabajo sin servidor. Los flujos de trabajo se pueden activar mediante eventos (a través de Eventarc o Pub/Sub) y pueden coordinar llamadas a varios servicios de Google Cloud y APIs basadas en HTTP, lo que los hace idóneos para orquestar procesos empresariales complejos basados en eventos.
  • Dataflow: para el procesamiento de eventos complejos (CEP) y las analíticas en tiempo real, Dataflow puede proporcionar una plataforma unificada de procesamiento de datos en tiempo real y por lotes. Puede ingerir flujos de eventos de Pub/Sub, realizar transformaciones, agregaciones y análisis sofisticados, y, a continuación, enviar los resultados a otros sistemas o activar otras acciones.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud