Introducción a la arquitectura orientada a eventos (EDA)
El presente es roadmap de entrenamiento en EDA. La arquitectura orientada a eventos (EDA) es un modelo de arquitectura de software que se basa en el procesamiento de eventos. En una arquitectura EDA, los componentes de software se comunican entre sí mediante la publicación y el consumo de eventos. Los eventos son mensajes que representan cambios en el estado del sistema.
EDA tiene una serie de beneficios sobre otros modelos de arquitectura de software, incluyendo:
- Escalabilidad: Las arquitecturas EDA son escalables porque pueden agregarse fácilmente nuevos componentes sin afectar al rendimiento del sistema.
- Flexibilidad: Las arquitecturas EDA son flexibles porque los componentes pueden comunicarse entre sí de forma independiente, lo que permite que el sistema se adapte a cambios en los requisitos.
- Robustez: Las arquitecturas EDA son robustas porque los componentes pueden recuperarse de fallos individuales sin afectar al funcionamiento general del sistema.
Herramientas para construir soluciones EDA
Hay una serie de herramientas disponibles para construir soluciones EDA. Estas herramientas incluyen:
- Apache Kafka: Apache Kafka es un Store de Eventos que puede actuar como sistema de mensajería de alto rendimiento y escalable que se utiliza para publicar y consumir eventos.
- RabbitMQ: RabbitMQ es otro sistema de mensajería de alto rendimiento que adopta AMQP y es muy utilizado en soluciones Springboot. Se utiliza para publicar y consumir mensajes y eventos tanto como en Colas MQ como en Tópicos (pub/sub)
Patrones de EDA
Hay una serie de patrones de diseño que se pueden utilizar en las arquitecturas EDA. Estos patrones incluyen:
- Sagas: Las sagas son un patrón de diseño que se utiliza para asegurar el procesamiento atómico de transacciones en múltiples sistemas.
- CQRS: CQRS es un patrón de diseño que se utiliza para separar la lectura y la escritura de datos en diferentes sistemas.
- CDC: CDC es un patrón de diseño que se utiliza para replicar cambios de datos en tiempo real desde una fuente a un destino.
EDA frente a ESB
Un bus de servicios empresariales (ESB) es un tipo de arquitectura de software que se utiliza para integrar componentes de software dispares. Un ESB hace esto proporcionando un punto central de comunicación entre los componentes de software.
EDA y ESB tienen una serie de similitudes, incluyendo:
- Ambos se utilizan para integrar componentes de software dispares.
- Ambos pueden proporcionar un punto central de comunicación entre los componentes de software.
Sin embargo, EDA y ESB también tienen una serie de diferencias que se describirán en el Curso