Agent de messages (message brokers) : définition et usages

Qu’est-ce qu’un agent de message ou message broker ? À quoi ça sert ? Quels outils : plutôt Apache Kafka ou Rabbit MQ ? Le point avec des exemples sur cet article !
NathanA.jpg
Nathan ARMANETMis à jour le 29 Mai 2023
agent de messages message broker qu'est-ce que c'est et à quoi ça sert ?

Lorsqu'un SI se développe et évolue, la communication entre applications devient un enjeu critique pour que les différentes fonctionnalités restent fluides et stables.

Les agents de messages répondent à cet enjeu en permettant de découpler les éléments du SILe SI désigne le système d'informations d'une organisation. et de déplacer la problématique "comment gérer l'envoi d'une donnée ?"

1. Les agents de messages : c'est quoi ?

Les agents de messages (ou message brokers en anglais) sont des modules intermédiaires qui permettent la communication entre différents éléments informatiques (applications, systèmes, services, ...).

Un agent de messages peut valider, stocker, acheminer et délivrer des messages aux destinataires appropriés.

Il existe 3 types de modèles de distribution des messages :

Le modèle orienté log/journal :

Tous les messages sont stockés dans un ou plusieurs fichiers "journaux". Les consommateurs accèdent à ces journaux en lecture seule (ils ne peuvent pas supprimer les messages), ils parcourent les journaux à l'aide d'un offset qui évolue au fur et à mesure de la lecture des journaux.

Le modèle orienté queue/file d'attente :

Le broker crée des files d'attente pour chaque consommateur et va ensuite acheminer les messages vers ces files d'attente en se basant sur un système de routage.

Le modèle orienté souscription :

Les consommateurs s'abonnent à un filtre de sélection des messages et à un endpoint sur lequel il recevra les messages. Lors de la réception d'un message le broker déterminera quel(s) endpoint(s) invoquer pour chaque message sur la base des règles qui ont été enregistrées

2. Les agents de messages : à quoi ça sert ?

Les agents de messages servent d'intermédiaire entre applications. Grâce à eux, les expéditeurs peuvent envoyer des messages sans se soucier d'où se trouvent les destinataires, si les destinataires sont actifs ou encore du nombre de destinataires. Cela facilite le découplage des différents services au sein des systèmes impactés.

Prenons l'exemple d'une entreprise qui a plusieurs magasins, chaque magasin doit envoyer un résumé de chaque vente réalisée à différents services (ici RH, BI et compta). Sans agent de messages, les magasins devront notifier chaque service individuellement et s'assurer que le message est bien arrivé à tous les destinataires. 

SI sans agent de message - message broker

Avec un agent de messages, les magasins devront envoyer la notification une seule fois à l'agent. L'acheminement du message aux destinataires est assuré par l'agent. 

SI avec agent de message - message broker

3. Les agents de messages : quel outils existent ?

Il existe diverses applications comme Apache Kafka (agent orienté log/journal), RabbitMQ (agent orienté queue/file d'attente) ou encore Microsoft Azure Service Bus (agent orienté queue/file d'attente) pour ne citer qu'eux.

Chaque application (en fonction du mode de fonctionnement et des extensions) est plus ou moins adaptée à certains contextes, par exemple :

  • Grâce à son orientation queue/file d'attente, RabbitMQ est plutôt utilisé dans des contextes de type e-commerce, santé, services financiers ou encore systèmes IoT
  • Grâce aux outils disponibles, Apache Kafka est particulièrement adapté pour effectuer des tâches de type : analyse en temps réel, agrégation de journaux ou encore apprentissage automatique

Ainsi, avant de choisir quelle application utiliser, il faut savoir définir le contexte d'exécution et d'utilisation de l'agent.

Par exemple, si nous avons besoin d'un agent de messages pour permettre de collecter et d'agréger de nombreux messages provenant de différents systèmes/services tout en tenant compte de différentes mesures (localisation, état, ...) tout en se souciant de la scalabilité future ou actuelle du SI alors Apache Kafka sera une solution plus lourde mais plus adaptée que RabbitMQ. Or, si nous avons uniquement besoin d'un agent de messages rapide et léger pour faire communiquer différents services alors RabbitMQ sera une solution tout à fait pertinente.

Conclusion

Dans cet article, nous avons vu ensemble ce qu'est un agent de messages et à quoi il sert. Son rôle est de plus en plus important avec un contexte de découplage de SI en un ensemble de services que l'on veut le plus indépendants possible.

Pour plus d'informations, n'hésitez pas à nous contacter en suivant ce lien !