La arquitectura orientada a eventos (EDA) es un enfoque en el que los componentes del sistema se comunican a través de eventos: mensajes sobre cambios o acciones que han ocurrido. El sistema consta de generadores de eventos (producers), consumidores (consumers) y un bus de mensajes (message bus, broker), que entrega los eventos.
EDA permite crear sistemas escalables y débilmente acoplados. Un cambio en un componente no requiere modificar otros: solo la generación y el procesamiento de eventos.
Ejemplo de código (generación y procesamiento de eventos en Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Manejador de eventos emitter.on('userCreated', (user) => { console.log('Usuario creado:', user); }); // Generación de eventos emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Características clave:
¿Es EDA lo opuesto a la arquitectura de microservicios?
No, no son opuestos. Los microservicios a menudo utilizan EDA para la comunicación entre servicios.
¿Se puede usar EDA solo con brokers de mensajes?
No necesariamente. Los eventos locales (por ejemplo, a través del patrón Observer) también implementan EDA, pero los brokers permiten construir sistemas distribuidos.
¿Garantiza EDA la inmutabilidad de los datos?
No. EDA se trata de la interacción entre componentes; la resistencia al procesamiento repetido (idempotencia) y la coherencia de los datos deben implementarse de manera explícita.