La arquitectura impulsada por eventos es un modelo de integración creado alrededor de la publicación, captura, procesamiento y almacenamiento (o persistencia) de eventos. Específicamente, cuando una aplicación o servicio realiza una acción o sufre un cambio que otra aplicación o servicio podría querer conocer, publica un evento (un registro de esa acción o cambio) que otra aplicación o servicio puede consumir y procesar para realizar uno o más acciones a su vez.
La arquitectura basada en eventos permite un acoplamiento flexible entre aplicaciones y servicios conectados, pueden comunicarse entre sí mediante la publicación y el consumo de eventos sin saber nada entre ellos, excepto el formato del evento. Este modelo ofrece ventajas significativas sobre una arquitectura de solicitud/respuesta (o modelo de integración), en la que una aplicación o servicio debe solicitar información específica de otra aplicación o servicio específico que está esperando la solicitud específica.
La arquitectura basada en eventos maximiza el potencial de las aplicaciones nativas en la nube y habilita tecnologías de aplicaciones poderosas, como analítica en tiempo real y soporte de decisiones.
En una arquitectura basada en eventos, las aplicaciones actúan como productores de eventos o consumidores de eventos (y a menudo como ambos).
Un productor de eventos transmite un evento, en forma de mensaje, a un broker o alguna otra forma de router de eventos, donde el orden cronológico del evento se mantiene en relación con otros eventos. Un consumidor de eventos ingiere el mensaje, en tiempo real (cuando ocurre) o en cualquier otro momento que desee, y procesa el mensaje para desencadenar otra acción, flujo de trabajo o evento propio.
En un ejemplo simple, un servicio bancario podría transmitir un evento de 'depósito', que otro servicio en el banco consumiría y respondería al registrar un depósito en el extracto del cliente. Pero las integraciones basadas en eventos también pueden desencadenar respuestas en tiempo real basadas en análisis complejos de grandes volúmenes de datos, como cuando el 'evento' de un cliente que hace clic en un producto en un sitio de comercio electrónico genera recomendaciones instantáneas de productos basadas en las compras de otros clientes.
Hay dos modelos básicos para transmitir eventos en una arquitectura impulsada por eventos.
En el modelo de mensajería de eventos o publicación/suscripción, los consumidores de eventos se suscriben a una clase o clases de mensajes publicados por los productores de eventos. Cuando un productor de eventos publica un evento, el mensaje se envía directamente a todos los suscriptores que desean consumirlo.
Normalmente, un broker maneja la transmisión de mensajes de eventos entre editores y suscriptores. El broker recibe cada mensaje de evento, lo traduce si es necesario, mantiene su orden en relación con otros mensajes, los pone a disposición de los suscriptores para su consumo y luego los borra una vez que se consumen (para que no se puedan volver a consumir).
En el modelo de streaming de eventos, los productores de eventos publican flujos de eventos a un broker. Los consumidores de eventos se suscriben a los flujos, pero en lugar de recibir y consumir cada evento a medida que se publica, los consumidores pueden ingresar a cada flujo en cualquier momento y consumir solo los eventos que desean consumir. La diferencia clave aquí es que el broker retiene los eventos incluso después de que los consumidores los hayan recibido.
Una plataforma de streaming de datos, como Apache Kafka, gestiona el registro y la transmisión de enormes volúmenes de eventos con un rendimiento muy alto (literalmente billones de registros de eventos por día, en tiempo real, sin retrasos en el rendimiento). Una plataforma de streaming ofrece ciertas características que un broker de mensajes no tiene:
En comparación con la arquitectura de aplicación de solicitud/respuesta, la arquitectura basada en eventos ofrece varias ventajas y oportunidades para desarrolladores y organizaciones:
En los microservicios, una arquitectura de aplicación nativa en la nube fundamental, las aplicaciones se ensamblan a partir de servicios implementables de forma independiente y poco acoplados. Los principales beneficios de los microservicios son esencialmente los beneficios del acoplamiento flexible: facilidad de mantenimiento, flexibilidad de implementación, escalabilidad independiente y tolerancia a fallas.
No es sorprendente que la arquitectura impulsada por eventos se considere una práctica recomendada para las implementaciones de microservicios. Los microservicios pueden comunicarse entre sí mediante API REST. Pero REST, un modelo de integración de solicitud/respuesta, socava muchos de los beneficios de la arquitectura de microservicios débilmente acoplados al forzar una integración síncrona y estrechamente acoplada entre los microservicios.
La implementación de una arquitectura impulsada por eventos es crucial para las organizaciones que buscan automatizar y optimizar los flujos de trabajo de sus aplicaciones y respaldar los procesos comerciales. También puede ser una parte importante del éxito de la modernización de aplicaciones, ya que la demanda de mejores experiencias del cliente y de más aplicaciones causa impactos en las operaciones comerciales y de TI.
Cuando se trate de satisfacer estas demandas, será de gran ayuda avanzar hacia una mayor automatización. Lo ideal sería comenzar con pequeños proyectos cuyo éxito sea mensurable, que luego pueda escalar y optimizar para otros procesos y en otras partes de su organización.
Al trabajar con IBM, usted tendrá acceso a funcionalidades de automatización basadas en IA, incluyendo flujos de trabajo preintegrados, para ayudar a acelerar la innovación haciendo que cada proceso sea más inteligente.
Dé el siguiente paso:
Empiece con una cuenta de IBM Cloud hoy mismo.
Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, lo tenemos cubierto con automatización basada en IA. Descubra cómo las empresas líderes se están transformando.
Cree, modernice y gestione aplicaciones de forma segura en cualquier Cloud, con confianza.
Mejor velocidad y calidad de la aplicación: esa es la genialidad de la integración basada en IA.
IBM Cloud Pak for Data es una plataforma de datos abierta y extensible que proporciona una estructura de datos para que todos los datos estén disponibles para inteligencia artificial y análisis, en cualquier nube.
IBM Streams es una plataforma analítica avanzada que se utiliza para ingerir, analizar y correlacionar información de diferentes fuentes de datos en tiempo real.