Agent de messages (message brokers) : définition et usages
Le 29/05/2023 Par Nathan ARMANET webtutorielapplication-web
Lorsque 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 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 jounaux.
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 determinera 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 seins 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.
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.
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 contexte 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'hesitez pas à nous contacter en suivant ce lien !
Sommaire
1. Les agents de messages : c'est quoi ?
Le modèle orienté log/journal :
Le modèle orienté queue/file d'attente :
Le modèle orienté souscription :
2. Les agents de messages : à quoi ça sert ?
3. Les agents de messages : quel outils existent ?
Conclusion