Jump to section

¿Qué es la arquitectura basada en eventos?

Copiar URL

La arquitectura basada en eventos es un modelo y una arquitectura de software que sirve para diseñar aplicaciones. Se creó para registrar, comunicar y procesar eventos entre servicios desacoplados, es decir, para mantener el asincronismo de los sistemas y, al mismo tiempo, permitir que continúen compartiendo información y completando tareas. 

Muchos diseños de aplicaciones modernas se basan en eventos, como los marcos de interacción con los clientes, que deben utilizar los datos de los clientes de forma inmediata. Las aplicaciones con esta arquitectura pueden crearse con cualquier lenguaje de programación, ya que la expresión "basado en eventos" se refiere a un enfoque de programación, no a un lenguaje. Es una buena opción utilizar esta arquitectura para las aplicaciones distribuidas modernas, puesto que permite que el acoplamiento entre los sistemas sea mínimo.

El acoplamiento entre los elementos de este tipo de arquitectura es bajo porque los productores de eventos no saben qué consumidores están atentos a un evento y el evento en sí no contiene información sobre sus consecuencias.

 

Los eventos registran los sucesos y los cambios importantes en el estado del hardware y el software del sistema. No son lo mismo que las notificaciones, ya que estas son los mensajes que el sistema envía para comunicar a alguno de sus elementos sobre un evento.

Sus fuentes pueden ser internas o externas, es decir, pueden provenir de los usuarios, como el clic de un ratón o el uso de una tecla; de fuentes externas, como las señales que emiten los sensores; o de los sistemas, como la carga de un programa.

Ambos son conceptos relacionados, pero distintos, dentro de la arquitectura de software y los sistemas basados en eventos.

Al desacoplar los elementos de un sistema, se eliminan o minimizan las dependencias directas entre ellos para que ninguno dependa de otro. En el contexto de la arquitectura basada en eventos, esto se logra al asegurarse de que los elementos que generan eventos envíen datos sin centrarse en un elemento específico del consumidor. El desacoplamiento permite que los elementos cobren independencia y que el sistema sea más flexible.

El bajo acoplamiento es un tipo específico de desacoplamiento cuyo objetivo es disminuir el grado de interdependencia entre los elementos sin separarlos por completo. En un sistema con esas características, los sistemas pueden interactuar unos con otros, pero lo hacen de una manera en la que no se generan dependencias de ninguna clase.

Ambas características fomentan la flexibilidad y la independencia, lo cual crea sistemas ágiles y adaptables.

Esta arquitectura está compuesta por elementos productores (publicadores) y elementos consumidores (suscriptores) de eventos. El productor detecta un evento y lo representa como un mensaje. Como los elementos del sistema están desacoplados, el productor no accede a información sobre el consumidor del evento ni su resultado.

Luego de que se detecta el evento, se transmite desde el productor hasta el consumidor mediante canales y se procesa de manera asincrónica en una plataforma específica. Los consumidores deben recibir la notificación de que ocurrió un evento. Es posible que lo procesen o que solo se vean afectados por él.

La plataforma ejecuta la respuesta correcta al evento y le envía la actividad downstream al consumidor adecuado. En esta actividad, se ve el resultado del evento.

Apache Kafka es una conocida plataforma de transmisión de datos distribuida, que sirve para el procesamiento de eventos. Se encarga del procesamiento, las suscripciones, la publicación y el almacenamiento de los flujos de eventos en tiempo real. Además, puede utilizarse para varios casos prácticos en los cuales el alto rendimiento y la capacidad de ajuste son fundamentales. También, puede reducir la latencia a milisegundos, ya que disminuye la necesidad de contar con integraciones directas entre las fuentes para el intercambio de datos en ciertas aplicaciones.

Existen otros administradores de eventos de middleware que pueden funcionar como plataformas de procesamiento.

La arquitectura de este tipo puede basarse en un modelo de publicación/suscripción o en uno de flujo de eventos.

Modelo de publicación/suscripción
Es una infraestructura de mensajería que se basa en las suscripciones a los flujos de eventos. En este modelo, cuando ocurre un evento o se publica, se envía a los suscriptores correspondientes.

Modelo de flujo de eventos
En este modelo, en cambio, los eventos se ingresan en un registro. Los consumidores no se suscriben a un flujo, sino que pueden leerlo desde cualquiera de sus partes y unirse a él en cualquier momento.

Existen varios tipos de flujos:

  • El procesamiento de flujos de eventos utiliza una plataforma de transmisión de datos, como Apache Kafka, para incorporar los eventos y procesar o transformar su flujo. 
  • El procesamiento de eventos sencillo se da cuando un evento desencadena de inmediato una acción en el consumidor.

El procesamiento complejo requiere que un consumidor procese una serie de eventos para detectar patrones. El primer tipo que se mencionó se puede utilizar para detectar patrones significativos en los flujos.

Esta arquitectura permite que las empresas obtengan un sistema flexible que mejora los flujos de trabajo al adaptarse a los cambios y tomar decisiones de inmediato. Cuando se tiene conocimiento sobre las situaciones apenas suceden, se pueden utilizar todos los datos disponibles sobre el estado actual de los sistemas en la toma de decisiones empresariales, tanto si se realiza de forma manual como automática.

Los eventos se captan a medida que surgen de fuentes tales como los dispositivos del Internet de las cosas (IoT), las aplicaciones y las redes, lo cual permite que los productores y los consumidores compartan la información sobre el estado de la situación y las respuestas al evento instantáneamente.

Las empresas pueden incorporar una arquitectura basada en eventos a sus sistemas y aplicaciones para mejorar su capacidad de ajuste y de respuesta y acceder a los datos y al contexto que necesitan para tomar mejores decisiones.

Estas arquitecturas ofrecen la ventaja del desacoplamiento de los elementos para que los productores y los consumidores de datos o servicios no necesiten comunicarse directamente, lo que da como resultado un sistema más flexible y ajustable que, a su vez, permite integrar elementos nuevos con mayor facilidad, promueve la tolerancia a los errores y mejora la eficiencia general del sistema.

Red Hat proporciona herramientas integradas y sistemas de software de gestión que le permiten conectar las tecnologías y los microservicios heredados en todos los entornos de nube híbrida. Además, respalda las arquitecturas basadas en eventos con una integración ágil.

Red Hat OpenShift y el conjunto de herramientas de Red Hat Application Foundations permiten que las empresas mejoren la productividad de los desarrolladores, automaticen los canales de CI/CD y apliquen sus iniciativas de seguridad al principio y durante el ciclo de desarrollo. Al automatizar las prácticas de DevSecOps y, al mismo tiempo, proporcionar seguridad para las aplicaciones en los tiempos de ejecución, se obtiene una cadena de suministro de software más segura.

La función OpenShift Dev Spaces proporciona a los desarrolladores un entorno de trabajo más rápido, uniforme y confiable y, a los equipos de operaciones de la TI, control desde un solo lugar. Tanto las funciones de OpenShift (la informática sin servidor y la malla de servicios) como las de Red Hat Application Services (los tiempos de ejecución y los marcos, la gestión de las API, la transmisión de los datos y los servicios basados en eventos) proporcionan a los desarrolladores acceso de autoservicio a lenguajes y herramientas y mejoran su productividad. Si tienen cierta preferencia por alguna herramienta, Red Hat les permite acceder a un amplio ecosistema de soluciones compatibles con OpenShift y desarrolladas por nuestros partners.

Artículos relacionados

Artículo

¿Qué es la integración?

¿Desea saber qué es la integración? Obtenga información acerca de qué es, cómo incorporarla y por qué es mucho mejor con un enfoque open source.

Artículo

¿Qué es Apache Kafka?

Apache Kafka es una plataforma distribuida de transmisión de datos que permite publicar, almacenar y procesar flujos de registros, así como suscribirse a ellos, de forma inmediata.

Artículo

¿Qué es una API?

Una API o interfaz de programación de aplicaciones es un conjunto de definiciones y protocolos que se usa para diseñar e integrar el software de las aplicaciones.

Más información sobre la integración

Productos

Conjunto completo de tecnologías de integración y mensajería para conectar aplicaciones y datos a través de infraestructuras híbridas. Incluye Red Hat 3scale API Management, Red Hat AMQ, Red Hat Runtimes, registro de datos modificados y un registro de servicios.

Conjunto de tecnologías de integración y tiempos de ejecución diseñados para ayudar a crear, implementar y operar aplicaciones de manera segura y a escala a través de la nube híbrida.

Conjunto de productos, herramientas y elementos que permiten desarrollar y mantener las aplicaciones directamente en la nube. Incluye Red Hat AMQ, Red Hat Data Grid, Red Hat JBoss® Enterprise Application Platform, Red Hat JBoss Web Server, una compilación de OpenJDK de Red Hat, una compilación de Quarkus de Red Hat, un grupo de tiempos de ejecución de nube, Migration Toolkit for Applications, inicio de sesión único y un servicio para lanzamientos .

Los servicios de nube de Red Hat® incluyen aplicaciones, plataformas y servicios de datos alojados y gestionados que optimizan la experiencia en la nube híbrida reduciendo los costos operacionales y simplificando la entrega de aplicaciones nativas de la nube.

Contenido adicional

Ebook

Integración ágil: el plano técnico de la arquitectura empresarial

VISION GENERAL

Red Hat Cloud Services

Servicios gestionados para el desarrollo en la nube

Capacitación

Curso de capacitación gratuito

Red Hat Agile Integration Technical Overview