Tuesday, February 10, 2009

Les ESB sont distribués par définition

Ça faisait longtemps que j'avais pas posté mais je viens de lire un truc qui m'a pas plu et qui a au moins l'avantage de tirer le blog de sa léthargie hivernale.

J'étais en train de lire différentes interventions concernant les portails d'entreprise ici, ici et (je ne donnerai pas mon avis sur le sujet, n'y connaissant pas grand chose) quand les ESB, sujet que je connais un peu mieux, sont venus se greffer (me demandez pas pourquoi) au débat sous une forme que l'on peut résumer à peu près comme cela : "Les portails, c'est comme les ESB, c'est centralisé !".

Je le répéterai dix mille fois s'il le faut mais les ESB ne sont pas centralisés...qu'on me donne tous les arguments contre mais pas celui-là...le principe d'un ESB est au contraire d'être une solution distribuée.


Un ESB, pour faire rapidement, c'est une infinité de conteneurs de services relié par un bus. Les conteneurs de services (Apache ServiceMix ou Mule par exemple) sont des composants légers et facilement configurables fournissant les fonctionnalités de connectivité (HTTP, JMS, Fichier...), de routage et de transformation. Le bus en lui-même est plus une abstraction qu'autre chose ; il s'agit, pour simplifier, du réseau d'entreprise chargé de relier les conteneurs entre eux, en s'appuyant notamment sur des technologies de communication fiables et standards comme JMS (Apache ActiveMQ par exemple) ou les spécifications WS-Reliability. Il s'agit donc bien d'une architecture distribuée.

Le malentendu concernant des ESB provient du fait que les éditeurs, lors de l'apparition des ESB, se sont retrouvés avec des EAI maison (un EAI est maison ou n'est pas !) sur les bras. Ne pouvant rater le train en marche, ils ont très souvent purement et simplement ajouter "ESB" au nom du produit existant (magie du marketing)...les dommages collatéraux de tout cela ont été (sont encore ?) que les ESB sont apparus comme une solution centralisée d'intégration d'entreprise.


Il faut ajouter à cela que les coûts de licence font que, souvent, les clients ne peuvent pas, pour des raisons financières évidentes, mettre en place un ESB en tant que tel : une multiplication des conteneurs entraîne de facto une multiplication des licences (n conteneurs = n licences). Tout cela conduit à mettre en place en production un conteneur de services unique et donc centralisé que l'on finit par appeler ESB. La boucle est bouclée : "un ESB est centralisé".



Je conclurai en mettant en avant la légitimité évidente des solutions open source (ServiceMix, Mule, OpenESB...) dans la mise en place d'un ESB distribué (pléonasme donc !) du fait de leur légéreté et de leur coût d'acquisition nul. Enfin je conseillerais à tous ceux qui s'intéressent de près ou de loin aux ESB de se procurer le livre de Dave Chappell qui est à l'origine de l'engouement sur le sujet.