Definition

ESB

Un bus de services d'entreprise (ESB, Enterprise Service Bus) est un outil middleware qui sert à répartir le travail entre les composants connectés d'une application. Les ESB sont conçus pour offrir une méthode cohérente de répartition du travail, donnant aux applications la possibilité de se connecter au bus et de s'abonner aux messages en fonction de règles structurelles et métier simples.

A ce titre, ils sont utiles à la fois dans l'informatique distribuée et dans l'intégration de composants. Pour bien comprendre leur rôle, il faut les considérer comme des ensembles de commutateurs, capables d'acheminer un message selon un itinéraire spécifique entre les composants de l'application, en fonction de l'implémentation et du contenu du message, ou de règles métier.

Comparaison entre ESB et microservices

Les ESB ont souvent été présentés comme un moyen de mettre en oeuvre et de gérer efficacement des architectures SOAP (comme une architecture orientée services traditionnelle, par exemple), mais ils représentent une stratégie de workflow bien différente de celle qu'apportent les approches plus découplées associées aux microservices.  

Contrairement aux microservices (ou aux stratégies similaires qui arbitrent les connexions entre l'interface de programmation d'application et les composants sans mettre en place de workflow), un ESB se trouve au coeur même du workflow applicatif. En effet, il constitue une file d'attente de messages qui régit les échanges d'information dans toute l'application.

Un ESB ne cherche pas à savoir si les composants qui utilisent le bus sont locaux ou distants, ni à imposer d'obligations particulières quant aux langages de programmation. Au lieu de cela, il permet d'unifier les différents moyens qu'ont les composants de recevoir ou d'envoyer des informations en provenance ou en direction d'autres éléments applicatifs.

How an ESB works

Avantages d'un bus de services d'entreprise

Dans la mesure où une architecture ESB contrôle le mode de circulation du travail, il est plus facile de modifier les composants d'une application ou d'en ajouter de nouveaux. Rien ne lui échappant, l'ESB est le lieu idéal pour imposer des obligations de sécurité et de conformité, consigner les conditions normales et les exceptions, voire surveiller les performances des transactions.

Un ESB assure également l'équilibrage de charge en instanciant plusieurs copies d'un composant pour améliorer les performances. Il prend également en charge le basculement en cas de défaillance d'un composant ou de ses ressources.

Why use an ESB

Inconvénients d'un bus de services d'entreprise

Le concept d'ESB pose néanmoins un défi dans la mesure où aucune norme unique n'est reconnue en termes de fonctionnalités ou de comportement. En principe, un ESB joue le rôle d'un bus qui aiguille les messages entre applications ou composants selon des règles précises. Mais, au fil du temps, le terme a subi un glissement de sens pour décrire tout ce qui, d'une façon ou d'une autre, prend en charge un workflow.

Oracle, par exemple, classe près d'une douzaine d'outils middleware dans la catégorie ESB, quel que soit le nombre de fonctions ESB qu'ils assurent parmi celles citées.

L'acheminement des messages selon un langage de règles est communément admis comme le trait caractéristique qui distingue les ESB des autres outils middleware. Quoi qu'il en soit, la promotion des produits mettant généralement en avant des notions et fonctionnalités connues des acheteurs, les utilisateurs potentiels devront clairement définir les besoins de leur entreprise, puis examiner les fonctionnalités des différentes solutions ESB envisagées par rapport à ces besoins.

Cette définition a été mise à jour en janvier 2019

Pour approfondir sur Outils de développement