Architecture systèmeArchitecte de solutions

Qu'est-ce que l'architecture orientée événements (Event-Driven Architecture, EDA) et quels problèmes résout-elle ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

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 :

  • Assure un faible couplage entre les composants
  • Facile à étendre et à modifier la logique de réaction aux événements
  • Nécessite une conception de qualité et une surveillance des interactions

Questions piégées.

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.