Event Bus

L'infrastructure qui permet une communication asynchrone entre services au moyen d'événements.

Qu’est-ce qu’un Event Bus ?

C’est le mécanisme qui permet à un service de publier un fait pertinent et à d’autres services d’y réagir sans avoir besoin d’appels directs immédiats.

Par exemple :

  • ms-orders publie OrderPlaced
  • ms-inventory consomme cet événement
  • ms-notifications le consomme également

Pourquoi utiliser des événements ?

Parce qu’ils aident à :

  • découpler les services dans le temps
  • réduire les dépendances synchrones
  • permettre des réactions multiples à un même fait
  • construire des processus distribués

Responsabilités principales

  • Transport des événements
  • Publication et abonnement
  • Nouvelles tentatives
  • Gestion des messages en échec
  • Prise en charge des DLQ
  • Soutien aux processus distribués

Ce qu’il ne devrait pas être

L’event bus ne devrait pas devenir un endroit où réside la logique métier centrale. La logique de réaction doit se trouver dans les services consommateurs.

Il ne devrait pas non plus servir de prétexte pour publier des événements ambigus ou mal définis.

Concepts importants

Événement de domaine

Représente quelque chose de significatif qui s’est produit dans le métier.

Idempotence

Nécessaire car les messages peuvent arriver plus d’une fois.

Dead Letter Queue

Endroit où vont les messages qui n’ont pas pu être traités correctement.

At-least-once delivery

Garantie courante chez de nombreux brokers : le message arrivera au moins une fois, mais peut être dupliqué.

Trade-offs

Bénéfices

  • Découplage
  • Scalabilité
  • Intégration plus flexible
  • Traitement distribué

Coûts

  • Davantage de complexité opérationnelle
  • Cohérence à terme
  • Observabilité plus difficile
  • Besoin de nouvelles tentatives et d’idempotence

Exemple pratique

Une commande est créée et confirmée.

ms-orders publie OrderPlaced.

À partir de là :

  • inventory décrémente le stock
  • notifications envoie la confirmation
  • analytics enregistre l’événement

Aucun n’a besoin d’être appelé directement dans le même flux synchrone.

Résumé

L’Event Bus permet une communication asynchrone entre services. Sa valeur réside dans le découplage et la distribution des responsabilités, mais il exige plus de discipline en matière de contrats, d’observabilité et d’idempotence.