Livre Blanc - Comprendre et savoir utiliser un ESB dans une SOA

| Manuel Eveno (Xebia) | Christophe Heubès (Xebia) | Xebia |

Les ESB (Enterprise Service Bus) visent, d'une part à assurer l'interconnexion et d'autre part à gérer la médiation des communications et des interactions entre services et applications d'un SI. Quoique non indispensables, ils n'en demeurent pas moins une brique à forte valeur ajoutée dans le cadre d'une mise en place d'une architecture orientée service (SOA) mature.

Néanmoins les ESB sont aujourd'hui victimes de leur succès et il est souvent difficile de décrypter leur rôle exact.

L'objectif de ce livre blanc est de présenter les fonctionnalités que l'on peut attendre d'un ESB et comment il peut répondre aux besoins d'adaptation interapplications d'une SOA.

- Titre : Livre Blanc - Comprendre et savoir utiliser un ESB dans une SOA

- Auteurs : Manuel Eveno (Xebia), Christophe Heubès (Xebia), Xebia

- Parution : 16 octobre 2007

- Mise à jour : 13 juin 2020

- Licence : Copyright ® 2007 Xebia. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Intégration, SOA et ESB

- I-A. SOA et la problématique d'intégration

- I-B. Les ESB, héritiers d'une grande famille d'outils d'intégration

- I-B-1. Les outils ETL

- I-B-2. Les middlewares « network centric »

- I-B-3. Les EAI

- I-B-4. Les ESB

- II. Rôle et responsabilités d'un ESB dans une architecture orientée service

- II-A. À quoi sert un ESB ?

- II-B. Tour d'horizon des fonctionnalités d'un ESB

- II-B-1. Adaptation aux environnements hétérogènes

- II-B-2. Médiation et routage

- II-B-3. Management, Monitoring, Contrat de service

- II-B-4. Du côté des standards

- II-B-5. Synthèse des fonctionnalités

- II-C. Les risques dans la mise en place d'un ESB

- III. Cas d'utilisation d'un ESB

- III-A. Couplage lâche

- III-A-1. Problématique

- III-A-2. Principe de mise en œuvre

- III-B. Composition/agrégation de services

- III-B-1. Problématique

- III-B-2. Principe de mise en œuvre

- III-C. Gestion de version

- III-C-1. Problématique

- III-C-2. Principe de mise en œuvre

- III-D. Gestion de la QoS

- III-D-1. Problématique

- III-D-2. Principe de mise en œuvre

- III-E. Intégration avec une solution d'orchestration

- III-E-1. Problématique

- III-E-2. Principe de mise en œuvre

- III-F. Médiation intradomaine et interdomaines

- III-F-1. Problématique

- III-F-2. Principe de mise en œuvre

- III-G. Service Enablement : Exposition de service

- III-G-1. Problématique

- III-G-2. Principe de mise en œuvre

- IV. Conclusion

- V. Remerciements

I - Intégration, SOA et ESB

I-A - SOA et la problématique d'intégration

La construction des systèmes d'information s'est le plus souvent réalisée de façon organique, chaque domaine métier bâtissant un sous-système propre adapté à ses besoins et adossé à des technologies hétérogènes, rarement interopérables. Rapidement, et pour répondre aux besoins croissants d'informatisation des procédures, les problématiques d'intégration de systèmes ont émergé, et avec elles deux questions centrales :

- comment déclencher, en réponse à un événement dans un sous-système donné, un traitement dans un autre sous-système qui lui est étranger ?

- comment assurer la consistance et la propagation des données entre plusieurs sous-systèmes ?

Comme nous le verrons plus loin, un certain nombre de solutions techniques ont été trouvées pour répondre à ces questions.

La mise en œuvre de ces solutions d'intégration s'est le plus souvent faite de façon opportuniste, pour répondre aux besoins immédiats de telle ou telle application. À mesure que ces solutions ad hoc ont été mises en œuvre, les problématiques de gouvernance ou de pilotage global sont apparues :

- les flux se sont multipliés, parfois de façon redondante, ainsi que les chaînes de liaison techniques ;

- le couplage croissant des systèmes a amené son lot de problèmes, synthétisés par le concept d'effet spaghetti ;

- les organisations ont été confrontées à des défis organisationnels nouveaux : si les chaînes de responsabilités étaient claires pour chaque sous-système métier, quid des liaisons entre ces systèmes ?

Ces défis de l'intégration à l'échelle du SI ont été adressés avec plus ou moins de succès par les DSI au travers de chantiers d'urbanisation et de schémas directeurs informatiques. Récemment, le concept d'Architecture Orientée Service (SOA) a permis de cristalliser les bonnes pratiques en matière d'urbanisation et d'intégration du SI et, en les nommant, de fournir un horizon aux grands projets de rationalisation et d'intégration.

Il n'est pas dans le périmètre de ce document de présenter en détail les principes d'une SOA - ce sujet a été longuement traité par ailleurs. On retiendra cependant quelques éléments clés de la mise en œuvre d'une Architecture Orientée Services :

- SOA n'est pas une technologie, ni une recette, encore moins un produit. C'est une façon de penser et de concevoir le Système d'Information. À ce titre, les enjeux organisationnels de sa mise en œuvre sont souvent des défis autrement plus difficiles à relever que les enjeux techniques qui la sous-tendent.

- Comme son nom le suggère, l'élément clé de SOA est le Service. Un Service est un composant logiciel distribué, exposant les fonctionnalités à forte valeur ajoutée d'un domaine métier. D'un strict point de vue technique, un service possède les caractéristiques suivantes : il propose une interface connue et pérenne.

- Il est logiquement unique (c'est - entre autres - ce qui le distingue d'un composant, qui peut être instancié plusieurs fois).

- Il est invocable à distance (c'est une notion classique des architectures distribuées).

- Il est localisable (à terme, il existe donc un annuaire permettant aux clients de le localiser).

- Chaque domaine métier est responsable des services qu'il propose ; il est propriétaire des données et doit se conformer au contrat de service qu'il a publié ; il est en charge de la maintenance et de l'évolution du service. Un service n'a de sens que s'il apporte une valeur métier à l'organisation.

- Quelle que soit la méthode choisie, la mise en œuvre d'une SOA nécessite un pilotage transverse, articulé autour des besoins métier. La construction de l'architecture doit se baser sur les problématiques métier qu'elle tend à résoudre ; les besoins techniques sont inféodés aux besoins métier.

La formalisation du paradigme SOA a clairement eu le mérite de replacer le métier au centre de l'architecture du SI. Mais SOA reste aussi un projet d'intégration à grande échelle. Comment dès lors éviter les chausse-trappes des grands projets d'architectures distribuées ou intégrées, et en particulier le couplage technique et fonctionnel entre consommateurs et fournisseurs de services ?

Le couplage technique impose au consommateur de connaître le protocole d'échange du fournisseur -c'est le propre, nous le verrons plus loin, des middlewares network centric. À grande échelle, un tel couplage complique, voire interdit l'évolution du socle technique, et risque de figer le SI dans une inertie sclérosante.

À la fois plus subtil et plus pernicieux, le couplage fonctionnel impose au client de connaître le format d'échange du fournisseur. Toute évolution du fournisseur a un impact potentiel sur chacun des consommateurs. Mal gérée, cette dépendance peut conduire à de véritables verrous fonctionnels dans le Système d'Information - interdisant toute évolution ou, plus sûrement, augmentant de façon exponentielle le coût de ces évolutions.

Les ESB - nous le verrons dans ce document- offrent une solution technique à ces problématiques. Mais répétons-le : une SOA est avant tout un chantier métier, dont les dimensions techniques sont subsidiaires. En cela, un ESB n'est ni nécessaire ni suffisant à la mise en œuvre d'une architecture orientée service.

Nouveau Graal des Systèmes d'Information, les Architectures Orientées Service sont, dans leur dimension technique, des projets d'intégration à grande échelle. En cela, elles doivent s'appuyer sur une solution d'intégration robuste et souple, permettant d'éviter les écueils du couplage technique et fonctionnel.

I-B - Les ESB, héritiers d'une grande famille d'outils d'intégration

Afin de bien comprendre le rôle des ESB dans une architecture orientée service, il semble opportun de revenir rapidement sur l'histoire des solutions d'intégration.

Comme nous le mentionnions plus haut, les problématiques d'intégration peuvent être synthétisées par deux questions primordiales :

- comment assurer la consistance et la propagation des données entre plusieurs sous-systèmes ?

- comment déclencher, depuis un sous-système donné, un traitement dans un sous-système tiers ?

Assez naturellement, deux grandes catégories de solutions sont apparues : les outils d'ETL, permettant de synchroniser de façon différée, et souvent nuitamment, les données de plusieurs systèmes ; et les solutions dites middleware, destinées à assurer la communication « temps réel » entre systèmes hétérogènes.

I-B-1 - Les outils ETL

Les outils ETL répondent exclusivement à la première question. Ils assurent la synchronisation, la consolidation et la propagation des données entre sous-systèmes disparates. Schématiquement, ils extraient les données du système maître pour mettre à jour, après un transcodage adéquat, les systèmes fils.

Bien qu'ils puissent fonctionner au fil de l'eau, les outils ETL sont plutôt destinés aux traitements de masse en temps différé (batch) - ils sont au demeurant apparus, à l'origine, pour assurer le chargement des datawarehouses.

Leur relative simplicité de mise en œuvre est leur plus grande force. Ils autorisent en outre un premier niveau de rationalisation du SI, en désignant des propriétaires pour les données maîtres. Ces « référents » sont d'ailleurs l'un des prérequis critiques pour la mise en œuvre d'une architecture orientée service (SOA).

Couplés à des formats pivots, les outils ETL permettent de surcroît d'éviter les écueils des liaisons point-à- point et du couplage fonctionnel trop étroit entre systèmes.

Malheureusement, l'approche ETL reste exclusivement centrée sur les données, et n'offre qu'une sémantique métier rudimentaire. Elle échoue en conséquence à résoudre la seconde équation du diptyque, celle de l'intégration de processus, et plus encore à relever les défis des architectures orientées service.

I-B-2 - Les middlewares « network centric »

Comme leur nom le suggère, les solutions middleware fournissent quant à elles une infrastructure technique assurant la médiation entre deux ou plusieurs systèmes. Leur rôle historique est d'assurer le transport d'un message d'un sous-système vers un autre, avec un niveau de couplage plus ou moins important.

Apparus dès le début des années 80, les MOM (Message Oriented Middleware) ont une sémantique asynchrone : le client construit un message et le transmet au middleware, qui se charge de le router vers le ou les systèmes cibles. La communication est scindée en deux, évitant le couplage technique des participants. La garantie de livraison du message est confiée au MOM.

Pendant longtemps, cependant, les MOM sont restés des solutions largement propriétaires, forçant chaque partie à connaître les modalités d'interfaçage avec le broker, et limitant la capacité d'intégration aux environnements et langages supportés par l'éditeur de la solution - JMS, le standard de messaging Java, n'a levé que partiellement cette contrainte, et CosNotification, le service de notification CORBA est resté confidentiel.

Les MOM offrent en outre des capacités de routage souvent limitées, qui obligent à des efforts de configuration importants - chaque route doit être explicitement définie -, rendant leur mise en œuvre difficile à grande échelle.

Les ORB (Object Request Broker), appuyés par la spécification CORBA, ont proposé dès le début des années 90 une approche plus riche et plus ambitieuse.

Plus riche en ce sens que la spécification CORBA supporte virtuellement tous les langages et enrichit l'architecture d'intégration de services techniques de haut niveau, en particulier la localisation, les transactions et la sécurité ; CORBA propose une sémantique d'invocation point-à-point synchrone ou asynchrone, utilisant un protocole et un encodage standardisés ; CosNotification, le service de messaging CORBA, spécifie un MOM interopérable.

Plus ambitieuse, ensuite, puisque l'OMG, l'organisme de tutelle de la spécification CORBA, n'envisageait rien moins que fournir une architecture d'intégration universelle, allant jusqu'à définir un ensemble de standards verticaux destinés aux acteurs institutionnels et industriels désireux d'assurer l'intégration de leurs systèmes (banque, industrie automobile, santé, etc.). Sans entrer dans le détail, le relatif échec de CORBA prend racine dans sa complexité de mise en œuvre et, plus sûrement encore, dans les défauts d'interopérabilité des différentes implémentations, trahison évidente des promesses du standard.

Malgré leurs qualités respectives, MOM et ORB restent des solutions très techniques ; ils permettent certes à la fois la propagation des données et l'intégration des traitements, mais la sémantique des échanges y reste fondamentalement point-à-point : le client doit connaître le format du message qu'il adresse aux systèmes tiers ; ce couplage fonctionnel des systèmes devient rapidement un cauchemar pour la maintenance et l'exploitation, en particulier s'il est étendu à l'ensemble du SI ; enfin, la question de l'interopérabilité n'est pas définitivement résolue, en particulier lorsque le système cible est très fermé - on pense plus spécifiquement aux ERP et aux Mainframes.

I-B-3 - Les EAI

Pour faire face à ces enjeux, une nouvelle catégorie de solutions middleware est apparue : les EAI (Enterprise Application Integration). Tirant parti des deux précédentes approches, les EAI proposent une architecture hub and spoke - à opposer à l'architecture network centric des ORB et MOM -, dans laquelle un composant central assure la médiation physique entre le client et sa cible. Ce composant central prend à son compte l'ensemble des problématiques techniques de bas niveau (localisation, disponibilité, cache, communication, transcodage, interopérabilité au moyen de connecteurs spécialisés, audit, traces, sécurité voire transactions). À l'instar des ETL, ils sont de surcroît en mesure d'assurer la transformation des données afin de limiter le couplage fonctionnel entre les systèmes, et d'appliquer des règles de routage sophistiquées. À ce rôle de super-connecteur et de médiateur, les éditeurs ont souvent ajouté celui d'orchestrateur : les EAI peuvent héberger des processus métier de haut niveau, agrégeant des traitements réalisés dans plusieurs sous-systèmes.

Malgré leurs évidentes qualités, les solutions d'EAI souffrent de leur caractère très propriétaire :

- le protocole utilisé pour les échanges et le transport des messages au sein d'un EAI est propriétaire ;

- la technologie interne aux EAI est propriétaire. Ainsi, l'accès aux applications se fait par l'intermédiaire de connecteurs encore largement spécifiques à chaque éditeur malgré des tentatives de standardisation comme JCA(1) dans le monde Java (ces connecteurs restant souvent très onéreux) ;

- les formats et encodages de données utilisés dans les EAI sont propriétaires.

Outre les problèmes de coûts, ce verrouillage est souvent vécu, parfois injustement, comme un risque excessif concernant un composant aussi stratégique.

Plus perturbant encore, la multiplication des fonctionnalités des solutions d'EAI a brouillé leur rôle ; en mélangeant les genres - médiation et orchestration -, les EAI sont devenus une brique trop complexe recouvrant trop de responsabilités dans le SI. Ainsi, un grand nombre de projets de mise en œuvre d'EAI ont été douloureux et beaucoup plus longs que prévu, ne tenant finalement pas leurs promesses en termes de retour sur investissement (ROI).

I-B-4 - Les ESB

Les ESB sont les héritiers directs des EAI - il suffit de consulter la liste des principaux éditeurs d'ESB pour s'en convaincre : Bea, Tibco, Oracle, IBM, etc. sont précisément des acteurs de l'EAI.

Reprenant les caractéristiques architecturales des solutions d'EAI, les ESB se concentrent sur les fonctions d'interconnexion et de médiation, et s'appuient pour cela sur un ensemble de standards parmi lesquels :

- les Web Services pour gérer les communications synchrones ;

- XML pour définir les formats des messages ;

- JMS(2) pour adresser la communication asynchrone avec les MOM ;

- JCA pour la connexion aux progiciels et systèmes exotiques (ERP, CRM, Mainframes, etc.).

EAI et ESB sont très fréquemment opposés par les analystes. Dans les faits, les produits d'EAI n'existent quasiment plus. Ils se sont transformés en plusieurs produits qui en reprennent les fonctionnalités : d'une part les ESB pour la médiation et d'autre part les solutions de type BPM pour l'orchestration des processus. Certains produits continuent de proposer les deux fonctionnalités, mais elles restent bien dissociées.

Figure 1 - Historique de l'intégration

Les ESB sont aujourd'hui la technologie d'intégration et de médiation interapplicative privilégiée pour la mise en œuvre d'une architecture orientée service. Mais ils restent avant tout une solution technique élégante et sophistiquée aux problématiques plus anciennes de l'intégration interapplicative. Leur utilisation ne garantit en rien le succès ni même la réalité de la mise en œuvre d'une SOA.

Dans la suite de ce document, nous nous attacherons à circonscrire le rôle des ESB dans la mise en place d'une architecture orientée service, et à présenter quelques architectures types répondant à certaines des problématiques techniques de ce chantier.

II - Rôle et responsabilités d'un ESB dans une architecture orientée service

II-A - À quoi sert un ESB ?

D'un strict point de vue technique, le rôle d'un ESB se résume à la connexion et à la médiation entre les services et applications du Système d'Information.

À ce titre, ses principales responsabilités sont les suivantes :

- réconcilier des mondes hétérogènes, à l'aide de standards d'interopérabilité ou de connecteurs spécialisés - c'est le rôle classique d'un middleware d'intégration ;

- découpler consommateurs et fournisseurs de services : un consommateur ne connaît que l'ESB et ne connaît ni les formats ni les protocoles d'échange spécifiques utilisés par le fournisseur du service ;

- agréger des services de niveau N afin de construire des services de niveau N+1. Si l'agrégation est complexe, ou nécessite des structures de contrôle du flux d'exécution, un moteur d'orchestration, reposant par exemple sur le langage BPEL(3), est mis à contribution ;

- tracer les messages qui transitent. Devenant une zone de passage incontournable, l'ESB joue un rôle fondamental dans la traçabilité et le monitoring des traitements. Une telle fonctionnalité peut être fournie par l'ESB ou par une solution tierce adressant également les problématiques de SLA(4), QoS(5), BAM(6), etc.

Le rôle de médiateur des ESB peut devenir plus large encore :

- exposer des services d'applications qui ne supportent pas nativement cette fonctionnalité, tels les Mainframes ou certains progiciels ;

- mutualiser les accès à certaines applications afin de mieux gérer les ressources, de contrôler la charge ou d'appliquer certaines règles de sécurité ou de priorité, etc. ;

- minimiser les coûts des connecteurs legacy en mutualisant les licences. Ainsi déployer un seul connecteur sur un ESB s'avère souvent moins coûteux que de déployer ce même connecteur sur chaque application cliente (CICS Transaction Gateway, Connecteur SAP, etc.) ;

- implémenter un système de cache permettant de décharger certaines applications.

L'une des difficultés majeures de la mise en place d'une architecture orientée service est la gestion du changement. Par nature, les différents îlots du système d'information ont des cycles de vie distincts, certains étant soumis à des rythmes d'évolution soutenus quand d'autres n'évoluent presque jamais. La gestion des montées de version dans les architectures intégrées est l'un des écueils sur lesquels ont échoué un grand nombre de projets d'intégration à grande échelle.

Le rôle de médiateur technique des ESB peut être mis à contribution pour limiter l'impact des changements, en « virtualisant » certains services, ou certaines versions de services, pendant les phases transitoires - nous analyserons plus spécifiquement cette approche dans la troisième partie de ce document.

Au-delà du rôle classique d'un middleware d'intégration, l'ESB doit être considéré comme un véritable « tampon » qui permet d'intégrer toutes les applications en tenant compte de la complexité, du coût, de la montée en charge et du cycle de vie des briques du SI.

II-B - Tour d'horizon des fonctionnalités d'un ESB

Afin de tenir pleinement son rôle, un ESB doit posséder un certain nombre de caractéristiques et de fonctionnalités dont nous vous proposons de faire l'inventaire dans les sections suivantes.

II-B-1 - Adaptation aux environnements hétérogènes

L'ESB apporte une couche d'abstraction vis-à-vis des technologies utilisées dans le SI et doit en conséquence s'adapter aux protocoles et aux formats d'échanges des applications qui le composent. Par exemple, un ESB :

- ne dépend pas d'un système d'exploitation ou d'un langage ;

- supporte autant de standards que possible, dont les Web Services, XML, JCA (et dans l'avenir SCA(7)/ SDO(8) et/ou JBI(9)) ;

- permet d'exposer les services de manière uniforme, quelle que soit la technologie sous-jacente ;

- utilise XML (ou SDO) comme langage standard de représentation et de traitement des données ;

- offre un panel ouvert de connecteurs spécialisés vers les différentes briques du SI (MainFrames, application propriétaire, progiciel, etc.).

II-B-2 - Médiation et routage

La médiation est la principale valeur ajoutée d'un ESB. Dans ce domaine, il doit donc proposer une sémantique riche, susceptible de fiabiliser et de simplifier les échanges, tout en offrant une grande souplesse de mise en œuvre. Voici les principales fonctionnalités que l'on peut attendre d'un ESB en matière de médiation et de routage :

- support de différentes sémantiques d'échange de messages (synchrone « requête-réponse », asynchrone point-à-point, asynchrone selon le modèle « publication-souscription ») ;

- gestion de règles de routage sur les messages ;

- mécanismes de gestion de la priorité des messages ;

- services de transformation et de conversion de messages (ex. : XML <-> EDI, etc.) ;

- manipulation des messages (enrichissement, transformation, combinaison, découpage) ;

- validation des données entrantes ou sortantes ;

- gestion de versions de services de façon transparente (systèmes évoluant à des rythmes différents).

II-B-3 - Management, Monitoring, Contrat de service

Étant un point central, l'ESB doit permettre le suivi et la fiabilisation des échanges qui transitent en son sein grâce notamment à :

- la garantie de livraison des messages tout en conservant les messages non consommés (application indisponible, échec d'une transaction…) ;

- des fonctionnalités permettant de suivre les traitements effectués et les messages reçus ;

- une gestion de la sécurisation des services (authentification, autorisation, confidentialité et audit) ;

- contrôle des SLA et aptitude à modifier le comportement du bus (priorités…) pour assurer ces SLA.

II-B-4 - Du côté des standards

L'ESB est le successeur de l'EAI, qu'il améliore notamment grâce à la standardisation croissante de ses différentes fonctionnalités.

Les tentatives de standardisation actuelles couvrent les besoins suivants :

- format des données ;

- transformation des données ;

- exposition de services ;

- accès aux brokers de messages ;

- accès aux applications ;

- architecture des composants.

Pour le format des données, le standard incontournable est XML. Ce langage offre la possibilité de définir des schémas (XSD) qui contraignent la structure des documents XML et permettent de valider les formats d'échange.

Un autre standard est apparu récemment : SDO. Ce standard a été initié par IBM et BEA puis supporté entre autres par Oracle, Sun et SAP. SDO n'est pas standard d'échange, mais un modèle de programmation permettant de manipuler de façon unifiée des graphes de données « déconnectés » d'origine quelconque - Web Service, bases de données, annuaires, etc. SDO autorise la manipulation statique (fortement typée) ou dynamique (faiblement typée) des données, et a été conçu pour être supporté par plusieurs langages de programmation (il existe aujourd'hui pour Java et C++).

SDO n'est pour l'instant pas très répandu dans les solutions du marché.

XSLT et XQuery sont les standards de transformation associés à XML. Même si la transition est longue, XQuery supplante petit à petit XSLT en raison des nombreux avantages qu'il offre dans la définition des règles de transformation.

Les services représentent, bien évidemment, le cœur d'une SOA. Il est donc logique de trouver des standards concernant l'exposition et l'invocation de services. Le premier, et le plus important de ces standards, est celui des Web Services (WS).

Attention : Même si SOA, ESB et Web Services sont intimement liés, les Web Services ne sont pas le seul moyen d'exposer des services, notamment dans le cadre d'environnements techniques homogènes.

Le standard Web Service entend fournir, à l'instar de CORBA, une technologie unifiée pour décrire et invoquer des services, quelle que soit leur localisation physique ou leur technologie d'implémentation.

Le cœur des Web Services est constitué des standards SOAP et WSDL. WSDL permet la description des services offerts par le Web Service (1er niveau de contrat de service) et SOAP définit le protocole d'échange entre un client et un fournisseur de service, le plus souvent au-dessus du protocole HTTP.

Il existe un grand nombre de standards dans la sphère des Web Services, souvent désignés « standards WS-* ». Citons en particulier WS-Security, qui permet de sécuriser les échanges XML (Authentification, Signature & Cryptage). Son adoption par le marché n'est pas encore flagrante, malgré son support croissant dans la plupart des solutions d'éditeurs.

Le monde WS souffre néanmoins du manque de rigueur des spécifications et des agendas divergents des principaux acteurs qui n'hésitent pas à étendre le standard pour proposer des fonctionnalités propriétaires, souvent au détriment de l'interopérabilité - on pense en particulier à Microsoft.

Ces problèmes d'interopérabilité - qui, on s'en souvient, ont été fatals à CORBA -, ont conduit à la création d'un organisme dédié : la WS-I pour Web Services Interoperability Organization. Elle propose un « Basic Profile » qui regroupe un ensemble de recommandations d'utilisation des standards à suivre (sic) pour éviter les écueils liés au manque d'interopérabilité des implémentations.

La plateforme Java/JEE fournit un certain nombre de standards additionnels destinés à faciliter les échanges entre différents sous-systèmes.

C'est le cas de JMS qui offre un moyen standard d'accéder à la plupart des MOM du marché. Ce standard a été très largement adopté par les éditeurs (IBM, Bea, Tibco, Oracle, Sonic Software, etc.).

Reprenant les principes de JDBC pour les bases de données, le standard JCA (Java Connector Architecture) définit une interface programmatique unifiée pour accéder à des applications tierces quelconques. Plusieurs éditeurs se sont lancés sur le marché des connecteurs JCA. Il est donc facile de trouver des connecteurs pour la plupart des applications courantes du marché (SAP, Siebel, PeopleSoft, CICS, etc.).

D'autres voies de standardisation sont en cours. La plus notable concerne la normalisation de la notion de composant. On citera entre autres SCA : Service Component Architecture.

À lire sur ce sujet : « Introduction à SCA » sur le blog de Xebia France : http://blog.xebia.fr/2007/04/11/introduction-a-sca-service-component-architecture/

Citons enfin JBI, standard proposé par Sun pour standardiser intégralement l'architecture interne des ESB autour de XML et des Web Services.

Le monde de l'intégration d'applications fourmille désormais de standards sur lesquels peuvent s'appuyer les ESB. La maturité de ces standards n'est pas toujours satisfaisante, et leur usage n'est pas la garantie d'une intégration sans douleur.

II-B-5 - Synthèse des fonctionnalités

Le tableau suivant synthétise les principales fonctionnalités que l'on peut attendre d'un ESB.

Connectivité

Supporte de multiples protocoles de transport synchrone ou asynchrone. Il faut voir l'ESB comme un « super-connecteur ». Son rôle est de se connecter à tout type de ressources ou fournisseurs de services. C'est grâce à cela qu'il permet une exposition en couplage lâche de fournisseurs de services.

Routage

Permet d'effectuer des routages de messages basés sur des règles (de contenu, de contexte, etc.). Idéalement, ce routage s'appuie sur un annuaire, sur un registre de services et éventuellement sur un moteur de règles.

Médiation

Adapte le format des messages, le protocole, effectue des transcodifications entre l'appelant et l'appelé.

Exposition de services

Transforme en service(s) un composant ou un traitement d'une application qui ne le peut pas facilement.

Agrégation simple de services

Effectue des agrégations simples de services de niveau N pour construire des services de niveau N+1. Si l'agrégation est complexe, on préférera utiliser un moteur d'orchestration.

Traitement d'événements complexes

Permet la création des règles de corrélation et de jointure d'événements.

Contrat de service

Permet la définition des contrats de services : SLA, niveau de QoS, gestion des priorités, sécurisation des messages (signature et cryptage), garantie de la livraison et de l'intégrité des messages.

Supervision et audit

Offre des fonctions d'audit, de traçabilité, de mesure, d'administration et d'exploitation qui permettent le suivi des traitements. Selon la qualité de l'implémentation, cette fonctionnalité sera déléguée à un outil tiers.

II-C - Les risques dans la mise en place d'un ESB

Un ESB occupe un rôle central dans la mise en place de SOA. Néanmoins, positionner un ESB au sein de l'infrastructure du SI n'est pas synonyme d'aboutissement. La démarche, la méthode et l'organisation mise en place jouent un rôle tout aussi déterminant.

La mise en œuvre d'un ESB dépend du niveau de maturité d'une SOA. L'utilisation d'un ESB n'est pas nécessaire au démarrage d'une SOA. Sa mise en œuvre s'impose après une réflexion plus large au niveau du SI. L'utilisation d'un ESB se justifie essentiellement dans le cadre d'invocations inter ST (Systèmes Techniques) sur un SI technologiquement hétérogène.

Un ESB seul ne permet pas de mettre en place du BPM ou du BAM. L'ESB prendra en charge l'agrégation de services ou l'enrichissement de données, mais il ne faut pas le considérer comme un orchestrateur de processus. Pour cela, il est préférable d'utiliser une véritable solution d'orchestration. Certains éditeurs réunissent dans une seule et même suite les deux fonctionnalités.

Si l'architecture en place est complexe et mal maîtrisée, l'ajout d'un ESB n'apportera pas de réelles solutions. Il risque même de devenir un point critique, mettant en exergue tous les problèmes et incohérences du SI à un seul et même endroit. Comme évoqué précédemment, la démarche, la méthode, l'organisation et l'implémentation des briques d'une SOA sont tout aussi importantes.

Un autre travers dans la mise en place d'un ESB est d'embarquer trop de métier dans les médiations qu'il propose. Le métier, à terme, risque de se perdre entre l'ESB et l'application cible. Il peut en résulter une plus grande complexité dans les évolutions du métier et dans la connaissance et le recensement des fonctionnalités. Afin d'éviter ce phénomène, il faut garder en tête que les médiations développées dans l'ESB doivent être majoritairement éphémères. Leur but est de permettre aux applications d'évoluer de manière indépendante, mais les fonctionnalités métier embarquées dans l'ESB doivent être réintégrées dans les applications concernées.

De par sa position centrale, l'ESB peut aussi devenir un goulet d'étranglement. Plus les médiations sont complexes plus les pertes de performances peuvent être prononcées.

III - Cas d'utilisation d'un ESB

III-A - Couplage lâche

III-A-1 - Problématique

Comme évoqué précédemment, le couplage technique ou fonctionnel est l'un des risques les plus critiques lors de la mise en œuvre d'une architecture orientée service.

Le service invoqué peut être exposé dans une autre technologie, utiliser une autre représentation des données, être asynchrone ou en cluster, etc. L'ESB va prendre en charge ces adaptations pour libérer l'application appelante des adhérences avec l'application qu'elle appelle. Le problème d'adhérence est bien sûr reporté dans l'ESB, mais on considère qu'il est plus facile et plus rapide d'effectuer des modifications dans l'ESB que dans les applications du SI.

III-A-2 - Principe de mise en œuvre

Figure 2 - Cas d'utilisation d'un ESB : Couplage lâche

Les responsabilités de l'ESB sont ici les suivantes :

- exposition : le consommateur ne connaît que l'ESB. Il invoque le service que ce dernier lui expose. Cette invocation se fait sur un protocole et avec un format de données qui sont indépendants du fournisseur de service ;

- routage : l'ESB détermine le fournisseur de service à invoquer (éventuellement en s'appuyant sur un registre ou annuaire de services) ;

- transformation : l'ESB réalise une médiation de format vers celui pris en charge par le fournisseur de service ;

- invocation : c'est l'ESB qui invoque le fournisseur de service.

III-B - Composition/agrégation de services

III-B-1 - Problématique

La composition peut s'avérer nécessaire quand l'application qui fournit les primitifs métier ne peut pas exposer facilement ou rapidement des services conformes à la définition métier qui en a été faite.

III-B-2 - Principe de mise en œuvre

Figure 3 - Cas d'utilisation d'un ESB : Composition / agrégation de services

L'ESB expose un service virtuel qu'il construit par composition ou agrégation de plusieurs autres services.

Il s'agit ici d'un assemblage simple de services, et non d'orchestration ou de processus.

III-C - Gestion de version

III-C-1 - Problématique

Comment limiter l'impact d'une montée de version d'un service dans une architecture intégrée, quand un nombre quelconque d'applications dépendent de la version courante de ce service ?

Ou, à l'inverse, comment déployer en avance de phase une application cliente d'une version d'un service non encore publiée ?

III-C-2 - Principe de mise en œuvre

Figure 4 - Cas d'utilisation d'un ESB : Gestion de version

La gestion de version permet de faire évoluer différents systèmes à des rythmes qui leur sont propres.

Plusieurs situations peuvent se présenter :

- les versions sont incompatibles entre elles (il n'est pas possible d'effectuer une transformation vers la version la plus récente) : le choix d'une version se fait par routage ;

- la nouvelle version est une extension compatible avec la version précédente : l'ESB effectue l'appel vers la nouvelle version en appliquant une transformation du format d'entrée, du format de sortie ou des deux formats. Ceci évite de maintenir dans l'application cible deux versions d'un même service.

III-D - Gestion de la QoS

III-D-1 - Problématique

La QoS d'un service est considérée comme un ratio entre son temps de réponse moyen et la fraîcheur des données qu'il manipule (la QoD : Quality of Data).

L'ESB est en mesure (en s'appuyant éventuellement sur un moteur de règles) de déterminer quelle implémentation invoquer en fonction de la QoS désirée.

L'ESB pourrait aussi être utilisé pour de la « géolocalisation » de services. Imaginons un service qui soit déployé x fois dans différentes régions ou différents pays. L'ESB peut déterminer, à partir du message qui transite, quel est le service le plus approprié.

III-D-2 - Principe de mise en œuvre

Figure 5 - Cas d'utilisation d'un ESB : Gestion de la QoS

Il existe deux implémentations du même service :

- l'implémentation A est au plus proche des données métier qu'il manipule (le référentiel). De ce fait, il travaille avec des données fraîches (mises à jour en temps réel). En revanche, son éloignement de l'ESB implique un temps de réponse long ;

- l'implémentation B est au plus près de l'ESB. Les temps de réponse sont donc très courts. En revanche, il ne travaille pas avec le référentiel de données, mais avec un cache mis à jour chaque nuit. Les données qu'il manipule peuvent donc potentiellement être périmées.

III-E - Intégration avec une solution d'orchestration

III-E-1 - Problématique

Comment déployer un workflow complexe, hébergeant les processus métier de très haut niveau ?

III-E-2 - Principe de mise en œuvre

Figure 6 - Intégration avec une solution d'orchestration

Pour éviter de lier trop fortement l'orchestrateur de processus avec les services qu'il appelle, il est recommandé d'insérer un ESB qui joue encore une fois le rôle de médiateur.

Exemples :

- il convertit les données échangées au format défini par la conception du processus (alignement avec les besoins métier) ;

- il peut exposer tous les services avec la même technologie pour simplifier la réalisation du processus ;

- il crée un nouveau service en agrégeant deux services existants (ce nouveau service sera éventuellement réintégré ultérieurement dans une des briques du SI à l'occasion d'une phase de rationalisation)

III-F - Médiation intradomaine et interdomaines

III-F-1 - Problématique

Comment gérer un ESB quand plusieurs domaines métier, fortement autonomes, l'utilisent pour intégrer leurs applications ?

III-F-2 - Principe de mise en œuvre

Figure 7 - Médiation intradomaine et interdomaines

Les différents domaines d'une organisation sont amenés à échanger les uns avec les autres. Ces domaines correspondent à des équipes différentes, des plannings différents voire à des budgets différents. L'introduction d'un ESB aux frontières des domaines permet de décorréler et de découpler les appels entre ces différents domaines. Les domaines peuvent évoluer à leur vitesse avec leur technologie en suivant leurs propres contraintes et éventuellement avec leur vision des données métier (bien qu'une vision unifiée des données au niveau du SI, lorsqu'elle est possible, simplifie grandement les problèmes de communication).

De même lors d'échange B2B, un ESB peut être placé comme « douanier » entre les applications internes et les applications des partenaires. L'ESB va gérer encore une fois la conversion des protocoles, des formats de données, centraliser les aspects sécurité et traçabilité dans les échanges.

III-G - Service Enablement : Exposition de service

III-G-1 - Problématique

Intégrer les applications existantes introduit bon nombre de problématiques. Certains types d'application ne peuvent pas exposer facilement des services (Mainframe, CICS, AS/400, etc.), d'autres offrent des coûts de développement trop élevés ou encore le coût des briques d'accès pour chaque service est rédhibitoire…

III-G-2 - Principe de mise en œuvre

L'ESB ici va permettre d'exposer les services d'une application existante. Sa connectivité lui permet d'interroger les systèmes existants pour créer les services du SI.

Figure 8 - Service Enablement (Exposition de service)

Dans le cas où les services de l'ESB ont véritablement vocation à durer dans le temps et constituent, finalement, une « extension » de l'application dont il expose les services, on aura tendance à créer une instance de l'ESB distincte du rôle de médiateur habituel.

IV - Conclusion

Utiliser un Enterprise Service Bus (ESB) dans son système d'information contribue à l'agilité visée lors de la mise en œuvre d'une architecture orientée services (SOA). Son adoption se doit néanmoins d'être réfléchie, anticipée et maîtrisée pour éviter les écueils classiques. Un ESB peut apporter de la souplesse dans une SOA grâce au découplage entre consommateurs et fournisseurs de services et à la mise à disposition rapide de nouveaux services.

Mettre en place un ESB, alors que les échanges entre les applications n'ont pas été normalisés et réfléchis de manière transverse, peut générer plus de problèmes qu'il n'apporte de solutions. Le ou les ESB sont au centre du SI et mettent en relief tous les problèmes d'intégration.

Un autre point de vigilance est à souligner. L'ESB ne doit pas être qu'un médiateur sans intelligence (« passe- plat »). Dans ce cas, sa valeur ajoutée est quasiment nulle. À l'opposé, si l'ESB prend à sa charge trop de métier, il risque de dénaturer et déresponsabiliser les applications auxquelles il accède.

D'une manière générale, le contenu d'un ESB doit être en perpétuelle évolution : il sert à donner de l'agilité et de la souplesse au SI pour « éponger » les changements et modérer les impacts en attendant que toutes les applications du SI s'alignent sur les changements.

La plupart des médiations d'un ESB ont une durée de vie courte. Ainsi, mettre en place une méthode agile ou plus généralement itérative pour conduire les projets ESB correspond tout à fait à la philosophie des SOA.

V - Remerciements

Cet article a été mis au gabarit de developpez.com : voici le lien vers le PDF d'origine : les_esb_dans_la_soa.pdf.

Nous tenons à remercier également Philippe DUVAL pour sa relecture attentive de cet article et Régis Pouiller pour la mise au gabarit.

(1)JCA : Java Connector Architecture

(2)JMS : Java Message Service

(3)BPEL : Business Process Execution Language

(4)SLA : Service Level Agreement

(5)QoS : Quality Of Service

(6)BAM : Business Activity Monitoring

(7)SCA : Service Component Architecture

(8)SDO : Service Data Object

(9)JBI : Java Business Integration