Valtech et le Model-Driven: Yann nous parle de SOA
Friday, July 11th, 2008La dernière soirée du Paris JUG a provoqué quelques débats sur MDA, avec notamment le post d’Eric sur le positionnement de Valtech. Pour continuer sur la lancée d’Eric, Yann Letanou, Leader Technique chez Valtech Technology, nous propose un article riche sur les bénéfices du MD dans le cadre d’une SOA.
SOA et Approche Model-Driven
L’intérêt grandissant pour les architectures orientées-services amène à se poser la question de l’intérêt d’une approche MDA (Model-Driven Architecture) pour modéliser et au final générer le code permettant l’implémentation des différents composants logiciels.
Nous n’allons pas ici rentrer dans le détail du pour ou contre MDA pour SOA. A Valtech nous pensons que les approches de développement Agile permettent l’émergence d’un design et d’une architecture de bien meilleure qualité qu’une approche MDA. Cette dernière reporte toute la complexité d’écriture du code sur des modèles qui sont loin de permettre les mêmes nuances que du code. La complexité est également reportée sur les générateurs de code qui deviennent alors le point dur car très difficiles à maintenir et à faire évoluer. Au final, Cette élaboration de modèles très détaillés rend improductive l’équipe de développement, qui n’a pas les moyens d’agir au cœur des problèmes.
Toutefois, certaines approches dites « Model-Driven » peuvent être intéressantes lorsqu’elles permettent d’améliorer la productivité et la communication, à condition de ne pas être axées sur de la génération de code à tout va (qui nous ramène au point précédent). C’est par exemple le cas du « Model-Driven Testing » axé sur la génération des tests. C’est aussi le cas des approches centrées sur la génération de fichiers de paramétrage (typiquement à partir de schémas XML standardisés) permettant de configurer des composants logiciels « sur étagère » et à forte valeur ajoutée.
Les technologies utilisées pour implémenter des architectures de services (SOA) sont très axées sur ce type de composant logiciel avec notamment :
- Les moteurs d’orchestration de service, principalement utilisés pour l’automatisation des processus métier,
- Les bus d’intégration de services ESB, épines dorsales de la SOA,
- Les conteneurs de services avec notamment le standard SCA.
L’idée est donc de pouvoir obtenir des applications par paramétrage d’un certain nombre de ces composants logiciels, grâce à l’élaboration de modèles dédiés permettant de s’intégrer dans une démarche agile prenant pour le reste en charge le développement du code applicatif ainsi que le cœur des services. La démarche est ainsi toujours la même :
- On modélise et on paramètre graphiquement, avec un langage et un éditeur dédié,
- On génère le ou les fichiers XML,
- On déploie les fichiers générés dans le composant technique pour le configurer, parallèlement au déploiement du code écrit à côté,
- On supervise ensuite l’exécution.
Moteur d’orchestration : Génération BPEL à partir de BPMN
BPMN est une notation définie et standardisée par l’OMG; elle permet de modéliser des processus métier à partir d’un ensemble d’éléments de modélisation permettant de couvrir une large palette de besoin. BPEL est un standard de l’OASIS définissant une grammaire XML permettant de décrire des processus directement exécutable par un moteur d’orchestration BPEL. L’une des force de BPEL est de se baser sur de l’orchestration de webservices et de supporter via BPEL4People la gestion de tâches humaines à travers un workflow.
Toutefois la syntaxe BPEL est très complexe et des outils ont rapidement vu le jour pour offrir une notation graphique au-dessus de BPEL (ActiveBPEL par exemple). Cette notation graphique est cependant très proche du BPEL et il reste nécessaire de maitriser ce langage pour définir correctement un processus. De plus, cette proximité de la notation graphique par rapport au BPEL fait que les processus définis ainsi restent difficilement lisibles par des personnes non-aguerries aux subtilités du langage. L’OMG a donc défini un mapping BPMN à BPEL permettant de conserver les avantages descriptifs et documentaire du BPMN tout en ayant la possibilité d’en faire un exécutable à travers BPEL. Ainsi des outils comme Intalio BPMS autorisent ce niveau de modélisation et permettent à une personne non-initiée au BPEL de modéliser et de déployer des processus exécutables. Attention toutefois, cela reste un outil d’informaticiens qu’on ne mettra pas dans les mains d’un pur analyste. Néanmoins, il permet de s’abstraire en grande partie des subtilités du BPEL tout en offrant une puissance de modélisation permettant de développer et déployer rapidement des processus exécutables basés à la fois sur de l’orchestration de services et de la gestion de tâches humaine.

Génération XML pour le paramétrage d’un ESB
Nous pouvons résumer simplement un ESB comme un bus logiciel de médiation, basé sur les standards du Web, orienté-service (et non orienté-flux à la différence d’un EAI classique) permettant de mettre en relation les composants d’une SOA, indépendamment des types de protocoles et de messages utilisés.
L’ESB permet d’exécuter des médiations, qui peuvent être vues comme un assemblage de modules logiciels permettant de mettre en relation des composants logiciels. Par exemple, l’ESB peut permettre de gérer différentes versions d’un webservice déployé sur différents serveurs. La médiation consiste alors à définir les conditions permettant de savoir à quelle version du service chaque appel doit être routé. Le service peut être activé via différents protocoles de communication. La médiation définit alors ces protocoles et les transformations nécessaires permettant au final d’activer le bon webservice.
La médiation peut être décrite graphiquement, à l’aide d’un outil, comme par exemple Spagic, IDE Eclipse permettant de paramétrer l’ESB d’apache ServiceMix. On assemble alors un certain nombre de composants élémentaires, issus généralement des EIP (Enterprise Integration Patterns). Puis on génère à partir de cela les différents fichiers XML de description de la médiation que l’on peut alors déployer dans l’ESB. Le format de ces fichiers XML varie en fonction de l’éditeur. A ce titre, le standard JBI (Java Business Integration, JSR208) tente de standardiser les spécifications d’un ESB et donc le format de ces fichiers de configuration XML. Contrairement aux grands éditeurs du marché, plusieurs ESB open-source suivent aujourd’hui ce standard : c’est notamment le cas de Apache ServiceMix, de Sun OpenESB ou encore de Petals.

Génération XML pour le paramétrage d’un conteneur SCA
SCA (Service Component Architecture) est une spécification de l’Open-SOA définissant un modèle pour la création et l’assemblage de composants de service, indépendamment des langages de programmation utilisés pour leur implémentation. Cette initiative est fortement supportée par IBM, dont la suite SOA est basée sur ce modèle.
L’idée est que le développeur puisse définir des assemblages de composants de service, graphiquement, puis pour chaque composant spécifier son implémentation (par exemple, BPEL, Moteur de règle, code java, etc.). Cet assemblage forme un composite SCA, dont la description est réalisée à travers une syntaxe XML dédiée.
Une fois le composite créé, l’outil génère les fichiers XML puis effectue le déploiement dans un ou plusieurs conteneurs de services SCA, selon que les composants de l’assemblage sont tous locaux ou distants.

Vers un environnement de développement SOA unifié
L’idéal est ensuite de disposer d’un environnement unifié pour définir ces différents modèles puis générer les fichiers de paramétrage associés pour automatiquement les déployer dans la brique logicielle correspondante. Les éditeurs tendent également vers cette ambition, comme IBM avec sa suite basée sur Websphere Process Server, et BEA avec sa suite Aqualogic.
Côté Open-Source, le projet Eclipse STP (pour SOA Tool Platform) est aujourd’hui le candidat le plus crédible. Bien que STP ne soit pas parfait pour l’ensemble des briques que nous avons citées (mais c’est aussi le cas des autres), il reste une initiative particulièrement suivi par la communauté SOA.

Auteur: Yann Letanou.


French Scrum User Group
Agile Alliance
Valtech
planet Valtech
