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 ?"
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 :
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 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.
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
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.
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.
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 :
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.
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 !
Scalabilité des applications : le podcast AXOPEN aborde un sujet trop souvent laissé de côté ! Pour l’écouter, c’est par ici.
Pourquoi et comment utiliser une solution d’API Management dans son système d’informations ?
JSF le problème de l'autocomplete off