L'Enterprise Service Bus possède comme son nom l'indique une architecture en bus qui l'oppose à l'architecture hub and spoke des premiers EAI. Ceci fait de l'ESB une solution hautement distribuée. Les composantes de cette architecture sont illustrées sur la figure suivante.
Le Middleware Orienté Message (MOM) qui permet l'échange de messages de manière asynchrone. Ainsi chaque message est déposé sur une file d'attente avant d'être consommé par le destinataire.
Les services Web qui permettent d'interfacer les applications avec le bus. Chaque service contient une logique d'intégration des messages (transformation, routage, etc).
Les transformations qui concernent les messages circulant sur le bus, elles sont essentielles dans un ESB car leur rôle est de permettre à des applications de converser même si elles définissent différemment leurs données.
Le routage intelligent qui découple l'expéditeur du message de son destinataire. C'est en fait l'ESB qui va déduire la destination du message. Pour cela il se base sur le contenu du message et les règles qui ont été définies.
Le Business Activity Monitoring (BAM) qui permet de suivre l'activité d'un processus métier.
Le Business Process Management (BPM) qui a pour but de maîtriser l'orchestration des processus métier, c'est-à-dire l'enchaînement des échanges entre applications.
L'ESB peut s'appuyer sur les standards suivants :
Le standard JBI est important, mais n'emporte pas l'adhésion de tous les acteurs (IBM et BEA notamment). Pour cette raison, les éditeurs proposent souvent leur propre conteneur de services.
les ESB supportent des standards tels que XML, JMS, JCA, JMX et les nombreux standards relatifs aux Web Services. Ce qui implique une intégration des systèmes en place plus rapide, plus économique et plus souple.
Les bus ESB automatisent le routage des transactions commerciales en fonction du contenu des documents XML et des règles commerciales établies. Il n’est ainsi plus nécessaire de programmer cette fonctionnalité dans le code de l’application.
Les fonctionnalités fournies par les ESB sont implémentées comme des services spécialisés distincts (service de transformation, service de routage intelligent, service de logging, etc.). Ces services implémentés dans de petits containers peuvent être déployés indépendamment les uns des autres, de façon sélective.
L’architecture de services des ESB est distribuée avec beaucoup plus de modularité qu’une architecture monolithique, ce qui permet d’apporter une réponse précise et souple aux besoins de ‘scalabilité’ rencontrés dans les problématiques de montée en charge.
Les ESB permettent de construire des architectures sans point individuel de défaillance (SPOF)). Ainsi, quand un serveur tombe en panne, le reste du système peut continuer à fonctionner.
Les bus ESB offrent la possibilité de centraliser les services de configuration, de déploiement et de gestion distribués à l’échelle de l’entreprise. De plus, il vous autorise à échelonner et gérer les services de l’entreprise indépendamment les uns des autres. La transparence des implantations permet de mettre les services à niveau, de les déplacer ou de les remplacer sans devoir changer une ligne de code !