¿Qué son las arquitecturas basadas en eventos y cómo pueden permitir interacciones de usuario en tiempo real, microservicios enchufables y análisis de streaming y datos extensibles? En este artículo, exploraremos el concepto de arquitecturas basadas en eventos y cómo pueden transformar la forma en que diseñamos sistemas.
Índice
El Manifiesto Reactivo
En el desarrollo de sistemas, es importante tener una aproximación coherente y efectiva. Es aquí donde entra en juego el Manifiesto Reactivo. Este conjunto de directrices comunitarias establece los pilares para un diseño de sistema donde la mensajería asíncrona y la escalabilidad son fundamentales.
El manifiesto se basa en la idea de que un sistema debe ser:
- Mensaje-driven: El sistema debe basarse en la comunicación a través de eventos y mensajes asincrónicos.
- Escala: Debe ser capaz de expandirse y contraerse según la carga de trabajo.
- Resistente: No debe haber un único punto de fallo y debe poder recuperarse de fallos de manera elegante.
- Responsivo: Debe funcionar de manera rápida y eficiente, respondiendo a las solicitudes de los usuarios en tiempo real.
- Maintainable: Debe ser fácil de mantener y actualizar, lo que significa que los cambios o correcciones deben ser sencillos de implementar.
- Extensible: El sistema debe ser flexible y permitir su expansión con facilidad.
Con estos conceptos en mente, podemos construir un sistema que esté preparado para enfrentar los desafíos del mundo actual.
Eventos y Mensajes
Antes de ahondar en el diseño de eventos, es importante entender qué son y cómo funcionan los eventos. En su forma más básica, un evento es una declaración inmutable de un hecho que ocurrió en el pasado. En el contexto de una aplicación de venta al por menor, por ejemplo, un evento podría ser la confirmación de una compra en un servicio de pago.
En el modelo de mensajería tradicional, los servicios se comunican entre sí enviando mensajes directamente. Por ejemplo, el servicio de pago enviaría mensajes al inventario, envío y servicios de contacto para mantenerlos informados sobre las compras. Esto es conocido como entrega dirigida, ya que los mensajes tienen un destinatario específico.
Además, en el modelo de mensajería, la comunicación puede ser bidireccional y conversacional. Por ejemplo, el inventario puede responder al servicio de pago con información adicional sobre el estado de los productos.
Es importante destacar dónde residen los mensajes antes de ser enviados y después de ser recibidos. Los mensajes viven en el servicio emisor hasta que son recibidos por el servicio receptor, o en el caso de un enrutador de mensajes, pueden residir temporalmente en una máquina intermedia. Esto implica que la persistencia de los datos de los mensajes es transitoria.
En cambio, en el diseño basado en eventos, los servicios productores generarán eventos cada vez que ocurra algo relevante, sin tener en cuenta qué servicio o servicios consumirán ese evento. Esto permite una gran escalabilidad, ya que múltiples servicios pueden estar interesados en los eventos, sin afectar el funcionamiento del servicio productor.
Además, los eventos generados se registran en un registro de eventos, que puede ofrecer varias ventajas. Por ejemplo, estos eventos pueden desencadenar acciones, como la activación de servicios asociados, como un dispositivo de Internet de las cosas o la ejecución de una función. Además, el registro de eventos crea un historial de eventos que puede ser utilizado para replays, es decir, reproducir una secuencia de eventos en orden cronológico.
Otra ventaja del registro de eventos es que permite la persistencia de datos, que puede ser inmutable y permanente. Esta persistencia de datos permite a las aplicaciones basadas en eventos acceder a un gran repositorio de datos, como un lago de datos, para alimentar aplicaciones de inteligencia artificial y análisis de datos en tiempo real.
Diseño de Eventos
El diseño adecuado de eventos es fundamental para aprovechar al máximo las arquitecturas basadas en eventos. En primer lugar, debemos considerar quiénes son los productores de eventos en nuestro sistema. Esto puede incluir aplicaciones web, aplicaciones móviles y dispositivos de Internet de las cosas.
En esta arquitectura, el componente central que maneja todos los eventos que fluyen a través del sistema se conoce como la columna vertebral de eventos. Esta columna vertebral permite que todos los eventos generados se procesen de manera eficiente y se distribuyan a los servicios pertinentes.
Como se mencionó anteriormente, el registro de eventos es un aspecto clave de esta arquitectura. Los registros de eventos no solo pueden desencadenar acciones y optimizar el almacenamiento de datos, sino que también son accesibles para cualquier servicio o aplicación que necesite consumir eventos específicos. Esto hace que los registros de eventos sean valiosas fuentes de información en un sistema basado en eventos.
En cuanto al procesamiento de eventos, las arquitecturas basadas en eventos también pueden aprovechar la capacidad de procesamiento de streaming. Esto se basa en la API de Apache Kafka Streams, que permite realizar cálculos y análisis en tiempo real sobre los eventos que se están produciendo.
Un ejemplo de esto puede ser una aplicación de transmisión de música, donde los eventos que se producen en tiempo real pueden utilizarse para sugerir o personalizar las listas de reproducción para los usuarios.
Comunicación y Plugabilidad
La capa de comunicación en las arquitecturas basadas en eventos se basa en el modelo de publicación y suscripción. Esto permite que cualquier microservicio contenerizado se pueda conectar fácilmente a la arquitectura existente y comenzar a consumir o producir eventos sin afectar a otras aplicaciones.
La capacidad de plugabilidad es una de las ventajas clave de las arquitecturas basadas en eventos. Esto significa que se pueden agregar nuevos servicios al sistema sin interrupciones, ya que pueden comenzar a consumir eventos desde el momento en que se conectan. Además, si la persistencia de eventos se ha mantenido a lo largo del tiempo, los nuevos servicios también pueden consumir eventos históricos, lo que permite una integración sin problemas.
Resumen del Artículo
Aspecto | Resumen |
---|---|
Manifiesto Reactivo | Directrices para un diseño de sistemas coherente y eficiente, que se centra en la mensajería asíncrona, la escalabilidad y la resistencia. |
Eventos y Mensajes | La diferencia entre el modelo de mensajería tradicional y el diseño basado en eventos, donde los eventos son declaraciones de hechos pasados y se registran en un historial. |
Diseño de Eventos | Consideraciones para el diseño adecuado de eventos, incluyendo quiénes son los productores de eventos y cómo se manejan los registros de eventos. |
Comunicación y Plugabilidad | La capacidad de conectar fácilmente nuevos servicios a la arquitectura existente y la ventaja de consumir eventos históricos. |
Preguntas Frecuentes (FAQs)
P: ¿Cuál es la diferencia entre el modelo de mensajería tradicional y el diseño basado en eventos?
R: En el modelo de mensajería tradicional, los servicios se comunican a través de mensajes directos, mientras que en el diseño basado en eventos, los eventos se registran y los servicios pueden consumirlos sin preocuparse por quién los produce.
P: ¿Cómo puede utilizarse el registro de eventos para optimizar el almacenamiento de datos?
R: El registro de eventos puede utilizarse para mantener un historial de eventos, lo que permite realizar replays y optimizar la persistencia de datos.
P: ¿Qué papel juega el procesamiento de streaming en las arquitecturas basadas en eventos?
R: El procesamiento de streaming permite realizar cálculos y análisis en tiempo real sobre los eventos que se están produciendo, lo que puede ser útil para aplicaciones como la transmisión de música o el análisis en tiempo real de datos.
En conclusión, las arquitecturas basadas en eventos ofrecen una forma poderosa de diseñar sistemas escalables, resilientes y responsivos. Al aprovechar la mensajería asíncrona, los registros de eventos y la capacidad de plugabilidad, estas arquitecturas permiten crear sistemas flexibles y adaptables a las necesidades cambiantes del mundo digital.
¡Espero que hayas encontrado este artículo informativo y útil!
Si deseas obtener más información sobre temas relacionados, no dudes en consultar nuestros artículos relacionados.
Hasta la próxima.
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!