L'architettura orientata agli eventi (EDA) è un approccio in cui i componenti del sistema interagiscono tramite eventi: messaggi su cambiamenti o azioni avvenute. Il sistema è composto da generatori di eventi (producers), elaboratori (consumers) e un bus di messaggi (message bus, broker) che consegna gli eventi.
L'EDA consente di creare sistemi scalabili e debolmente accoppiati. Una modifica in un componente non richiede la modifica degli altri: solo la generazione e l'elaborazione degli eventi.
Esempio di codice (generazione e elaborazione di eventi in Node.js):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Gestore di eventi emitter.on('userCreated', (user) => { console.log('Utente creato:', user); }); // Generazione di un evento emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Caratteristiche principali:
L'EDA è l'opposto dell'architettura a microservizi?
No, non è un'opposizione. I microservizi spesso usano l'EDA per la comunicazione tra i servizi.
Si può usare l'EDA solo con broker di messaggi?
Non necessariamente. Eventi locali (ad esempio, tramite il pattern Observer) implementano anche l'EDA, ma i broker permettono di costruire sistemi distribuiti.
L'EDA garantisce l'immutabilità dei dati?
No. L'EDA riguarda l'interazione tra i componenti; la resilienza alla rielaborazione (idempotenza) e la coerenza dei dati devono essere implementate esplicitamente.