Indigo et le Grand Bleu Par Jean-Jacques Dubray (jjdubray@hotmail.com)

Nous venons de franchir une étape très importante dans l'évolution des architectures logicielles. Le message marketing de Microsoft vient de changer de niveau (mais pas de direction) avec l'annonce d'Indigo. On ne parle plus seulement de Web services, mais plutôt et surtout d'Architecture Orientée Service (SOA). Avec l'entrée en lice d'un éditeur majeur, Octobre 2003 restera comme le lancement officiel du concept de SOA après quelques années d'incubation.

ndigo fait partie de la "vache texane" (Longhorn), la nouvelle génération du système d'exploitation Windows  de Microsoft qui sortira en 2006. Le framework Indigo sera en charge de gérer toute l'infrastructure de communication du système et en particulier de faciliter la "connection" des systèmes entre eux. Indigo privilégie l'échange de message asynchrones au détriment des concepts d'objets distribués. 

Messages, Web services et SOA

Indigo offre "une infrastructure complète pour la création, la consommation, la transformation et l'échange de messages". J'interprète cela en expliquant que le concept de Web service était un niveau trop haut dans la pile des briques technologiques du SOA et qu'en fait il aurait fallu commencer les fondations directement au niveau du message (figure 1). Bien que les Web service pouvaient être décomposés en messages, des standards comme WSDL ne laissent pas suffisamment de degré de liberté pour développer une SOA efficace. D'ailleurs, cela apparaît dans des standards comme WS-CDL (Web service choreography) qui n'arrivent pas à exprimer directement la chorégraphie de web services, mais sont contraints de repartir au niveau du message pour ensuite établir un lien avec des web services définis par WS-DL.

Figure 1. Une représentation possible de la pile des briques technologiques des "web services"

A noter également que Microsoft commence à penser en terme de "Sytèmes Fortement Connectés" (Massively Connected Systems). La notion de système connecté fait partie de sa définition du concept "Orienté Service":

Qu'est ce que le concept "Orienté Service"? 

Le concept "Orienté Service" définit une nouvelle méthode pour l'architecture des systèmes connectés, fondée sur trois principes de base: 

  • Un service est un programme qui interagit avec d'autres programmes au moyen de messages 

  • Un client est un programme qui permet à des humains d'utiliser des services

  • Un système connecté est une collection de services et clients 

(source Microsoft)

J'aime beaucoup cette définition qui, d'une manière très simple mais pas simpliste, définit ce qu'est un service, une architecture orientée service, et l'architecture applicative sous-jacent (le "client" a souvent été le parent pauvre des Web services et SOA).

Aujourd'hui, on peut connecter tout système à tout autre système, le plus souvent avec une bande passante confortable. Le Web a été le premier système fortement connecté (navigateur-serveur). Son succès peut être attribué au fait que les standards du web son sémantiquement pauvres (donc facile à mettre en oeuvre avec un bon degré d'interopérabilité) et que les "clients" du web (i.e vous et moi) sont "sémantiquement tolérants". Si nous voulons tirer les mêmes avantages de cette connectivité entre programmes, nous devons aller au-delà des standards du Web avec notamment un travail important au niveau sémantique. Aujourd'hui, la couche technologique du SOA est en pleine construction. Les standards s'appellent par exemple: composition, orchestration, chorégraphie, coordination, collaboration et interaction. 

Par conséquent, Indigo est encore loin d'être une implémentation complète, utilisable dans un contexte de SOA, mais c'est certainement plus qu'une vision. Tout ceux qui ont utilisé WSE 2.0 (Web Service Enhancement) peuvent en témoigner. Aujourd'hui, les efforts de développement d'Indigo cherchent d'abord à aligner les modèles d'implémentation des technologies Microsoft au concept de programmation orientée service. On peut penser que dans peu de temps Indigo s'attaquera aux standards du SOA proprement dit. La bonne nouvelle c'est qu'enfin on parle de message et de "peer-to-peer" et plus seulement de "Request-Response" et de consommateur/producteur.

Le pari de Microsoft

Au delà de l'annonce d'Indigo (qui n'est pas vraiment une nouvelle, puisqu'on ne trouve rien de plus aujourd'hui que dans WSE 2.0), Microsoft, prend un risque très fort en se lançant le premier dans le bataille du SOA alors que les technologies du SOA sont loin d'être définies. BPEL est en plein travail (sans avoir complètement cerné son cahier des charges, ignorant tous les autres concepts de la pile), WS-CDL a publié son premier draft, Oracle et Sun viennent aussi d'introduire le concept de "coordination" que je trouve très intéressant (WS-CAF). Personne ne travaille encore au niveau des sémantiques métiers du SOA. ebXML semble bien placé pour occuper cette place, il y a aussi des standards de modélisation (BCF et BMC) qui permettraient de passer du design-time au run-time en un clic de souris. 

Au passage, on peut qu'en même penser que Microsoft ne se lance pas dans cette aventure totalement au hasard. Les annonces sur les technologies du SOA devraient pleuvoir dans les semaines qui viennent. Il faut aussi considérer que le temps presse pour assurer la croissance de .NET face a J2EE. Il faut être sexy et apporter des innovations réelles pour espérer convaincre. Indigo est a mon sens une innovation majeure. Bien sûr, IBM, SUN et Oracle sont sur les talons de Microsoft. Et puis, il y a aussi une petite société de la Silicon Valée, Collaxa, qui pourrait très bien nous montrer et ouvrir la voie du SOA avant tout le monde. 

Conclusion

Le message est clair (:-), SOA représente l'avenir des architectures d'entreprise. C'est cette architecture qui nous permettra de tirer partie des systèmes massivement connectés, comme en son temps, l'architecture J2EE nous a permis de conquérir le web. Il est peut être temps de renommer SOAP, Service Oriented Architecture Protocol, puisqu'Indigo marque, à mon sens, la mort des concepts d'Objet Métier et d'Objet Distribué. En sorte, la victoire du message sur la méthode. Bienvenue dans le monde de la Programmation Orientée Service (POS). Nous avons une architecture, il nous manque encore, je crois, un langage, si possible sémantique (et pas syntactique) et déclaratif (et non pas procédural).  

Auteur : Jean-Jacques Dubray

Biographie : Jean-Jacques est architecte chez Attachmate où il travaille sur un nouveau projet lié à SOA. Il travaille depuis 1997 sur les technologies XML, Web Services, SOA et BPM. Il a notamment participé a la conception des standards: ebXML BPSS, BPML 0.4, et OAGIS. Il est membre du "board" du Centre XML et Web services de l'université de New-York.

 Ressources

 J.J. Dubray "Code Name Indigo", ebpml.org
 Don Box, "A Guide to Developing and Running Connected Systems with Indigo"
 Microsoft FAQ on Indigo

 Q&A: Microsoft's Eric Rudder on Longhorn, Indigo, Web services
 Analyse de Clemens

 WebServices.org Indigo page

 DotNetGuru.org - Business Centric Methodology (BCM)