L'architecture orientée événements (EDA) est une approche dans laquelle les composants d'un système interagissent par le biais d'événements : des messages concernant des changements ou des actions survenus. Le système est composé de générateurs d'événements (producers), de consommateurs (consumers) et d'un bus de messages (message bus, broker) qui livre les événements.
L'EDA permet de créer des systèmes évolutifs et faiblement couplés. Un changement dans un composant ne nécessite pas de modification des autres : seule la génération et le traitement des événements sont concernés.
Exemple de code (génération et traitement d'événements en Node.js) :
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // Gestionnaire d'événements emitter.on('userCreated', (user) => { console.log('Utilisateur créé :', user); }); // Génération d'un événement emitter.emit('userCreated', { id: 1, name: 'Ivan' });
Caractéristiques clés :
L'EDA est-elle l'opposée de l'architecture microservices ?
Non, ce ne sont pas des opposés. Les microservices utilisent souvent l'EDA pour la communication entre services.
Peut-on utiliser l'EDA uniquement avec des brokers de messages ?
Pas nécessairement. Les événements locaux (par exemple, via le patron Observer) réalisent également l'EDA, mais les brokers permettent de construire des systèmes distribués.
Garantit-elle l'immuabilité des données ?
Non. L'EDA concerne l'interaction des composants ; la résilience à la ré-processing (idempotence) et la cohérence des données doivent être mises en œuvre explicitement.