¿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 solicitud-respuesta, aunque valiosos, no siempre ofrecen la agilidad o escalabilidad necesarias para estos entornos dinámicos. La arquitectura basada en eventos (EDA) puede ofrecer un paradigma potente para crear aplicaciones responsivas, resilientes y escalables. Es un patrón de arquitectura de software que puede impulsar la producción, detección, consumo y reacción a eventos.

Comprende la arquitectura controlada por eventos

Definición de la arquitectura basada en eventos

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

A diferencia de los modelos tradicionales basados en solicitudes, 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 "publicador") simplemente anuncia que el evento ocurrió. Otros servicios (los "consumidores" o "suscriptores") que estén interesados en ese tipo de evento pueden reaccionar a él de forma independiente y en su propio tiempo.

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, enrutador de eventos): Es la infraestructura intermediaria que transfiere 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 lleva a cabo una acción significativa en un servicio o sistema. Por ejemplo, un usuario podría hacer clic en el botón "Enviar pedido" en un sitio web de comercio electrónico. El servicio responsable de controlar esta acción inicial (el productor de eventos) genera un objeto de evento que contiene información pertinente sobre lo que sucedió, como el ID del pedido, los artículos y los detalles del cliente.
  • Transmisión de eventos: El productor envía este evento a un canal de eventos. Este canal es una pieza de infraestructura dedicada, como una cola de mensajes o un sistema de publicación y suscripción (pub/sub), diseñado para manejar el flujo de eventos.
  • Filtrado y enrutamiento de eventos (por el canal de eventos): El canal de eventos recibe el evento. Luego, puede aplicar reglas de filtrado o enrutar el evento según su tipo, contenido o tema a varios consumidores posteriores que registraron interés en tales eventos. Por ejemplo, un evento "order_placed" podría enrutarse a un servicio de inventario, un servicio de notificaciones y 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. Continuación del ejemplo de comercio electrónico:
  • El servicio de inventario podría disminuir los niveles de stock de los artículos pedidos.
  • El servicio de notificación podría enviar un correo electrónico de confirmación del pedido al cliente.
  • El servicio de envío podría iniciar el proceso de logística.

Beneficios de la arquitectura basada en eventos

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

Escalabilidad mejorada

Los servicios en una EDA están poco acoplados y pueden escalarse de forma independiente. Si un servicio de “procesamiento de pedidos” tiene demasiada carga, puedes escalar verticalmente solo ese servicio sin afectar, por ejemplo, al servicio de “notificación de usuarios”.

Resiliencia y tolerancia a errores mejoradas

La arquitectura basada en eventos puede ayudar a la solidez de la aplicación aislando las fallas del servicio. La naturaleza desacoplada garantiza que un mal funcionamiento en un servicio de consumidor no se propague y cause una falla completa del sistema.

Mayor agilidad y flexibilidad

Los desarrolladores pueden agregar, modificar o quitar servicios con un impacto mínimo en otras partes del sistema. Los nuevos servicios pueden suscribirse a flujos de eventos existentes para agregar nuevas funciones sin necesidad de realizar cambios en los productores de eventos originales.

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 capacidad es particularmente valiosa para aplicaciones en que la acción rápida es primordial, como la detección de fraude, el análisis en tiempo real y la supervisión operativa.

Integración simplificada

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

Extensibilidad

Agregar nuevas funciones o reaccionar a eventos existentes de nuevas formas a menudo implica simplemente implementar un nuevo servicio de consumidor que se suscribe al flujo de eventos pertinente.

Resuelve tus desafíos más difíciles con Google Cloud

Los clientes nuevos obtienen $300 en créditos gratuitos que pueden usar en Google Cloud.

Casos de uso de la arquitectura basada en eventos

Las características de EDA pueden hacer que sea adecuado para una amplia gama de aplicaciones en diversas industrias.

EDA es un patrón común para habilitar la comunicación y el flujo de datos entre microservicios. En lugar de llamadas directas y síncronas a la API 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 se ocupan de 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, los sistemas de alertas o los procesos automatizados de toma de decisiones.

Desde la administración de los niveles de inventario en respuesta a las ventas hasta el procesamiento de pedidos en varias etapas (pago, envío, cumplimiento) y el envío de notificaciones a los clientes, EDA puede ayudar a administrar los flujos de trabajo complejos y asíncronos inherentes al comercio en línea. Si un servicio de procesamiento de pagos es lento, el evento de pedido aún puede capturarse y procesarse con otros servicios, como la reserva de inventario.

Muchos procesos empresariales se basan en eventos. Por ejemplo, el envío de un reclamo de seguro (evento) puede activar una serie de actividades posteriores: verificación de fraude, evaluación, comunicación con el cliente y, por último, procesamiento del pago. EDA puede ayudar a modelar y automatizar estos flujos de trabajo de manera 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 servidores (como Cloud Run Functions) suelen diseñarse para estar basadas en eventos. Se ejecutan en respuesta a varios activadores de eventos, como la carga de un objeto en el almacenamiento en la nube, la llegada de un mensaje a una cola o una solicitud HTTP. EDA es una opción natural para crear aplicaciones con componentes sin servidores.

La detección de fraude en tiempo real, la supervisión del mercado de valores y el procesamiento de operaciones son casos de uso financieros fundamentales que se benefician de la baja latencia y la alta capacidad de procesamiento de EDA.

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

Google Cloud proporciona un sólido paquete de servicios que le permite a los clientes crear e implementar potentes aplicaciones basadas en eventos. La plataforma 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 administrados clave:

  • Pub/Sub: Es un servicio de mensajería en tiempo real, distribuido a nivel global, escalable y confiable que actúa como bus de eventos o agente de mensajes en EDA. Pub/Sub ayuda a los servicios a publicar eventos y a otros servicios a suscribirse a estos eventos de forma asíncrona. Desvincula a los publicadores de los suscriptores y admite funciones como la entrega "al menos una vez", las suscripciones de envío y extracción, y el filtrado de mensajes.
  • Eventarc: Eventarc puede proporcionar una forma estandarizada de administrar el flujo de eventos conectando fuentes de eventos (como cambios en buckets de Cloud Storage, finalización de trabajos de BigQuery o eventos de aplicaciones personalizados) a los consumidores de eventos. Permite a los desarrolladores activar fácilmente servicios de Cloud Run, Cloud Run Functions o Workflows en respuesta a eventos.
  • Cloud Run: Esta plataforma de procesamiento completamente administrada te permite ejecutar tus contenedores sin estado para que se puedan invocar a través de solicitudes HTTP o eventos de Pub/Sub (a menudo a través de Eventarc). Con Cloud Run Functions, puedes implementar pequeños fragmentos de código de un solo propósito (Functions) que responden a una amplia variedad de eventos sin necesidad de administrar servidores o entornos de ejecución. En la arquitectura basada en eventos, los servicios de Cloud Run pueden ser muy eficaces como consumidores de eventos, ya que procesan cargas de trabajo activadas por estos eventos.
  • Workflows: Una plataforma de organización completamente administrada que te permite definir, implementar y administrar flujos de trabajo sin servidores. Los flujos de trabajo pueden activarse por 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 adecuados para organizar procesos empresariales complejos basados en eventos.
  • Dataflow: Para el procesamiento complejo de eventos (CEP) y el análisis de transmisiones, Dataflow puede proporcionar una plataforma unificada de procesamiento de datos por lotes y de transmisión. Puede transferir flujos de eventos desde Pub/Sub, realizar transformaciones, agregaciones y análisis sofisticados, y, luego, enviar los resultados a otros sistemas o activar más acciones.

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud