Vous trouverez sur ce site mes publications concernant les technologies de l'information. Le contenu est disponible en français et en anglais.
dimanche, 10 juin 2007
Concepts fondamentaux SOA
La mise en oeuvre d‘une Architecture Orientée Services, SOA pour utiliser le terme à la mode, est maintenant fréquente. Ces mises en oeuvres font sainement mûrir les réflexions sur ce sujet. Après une première phase de diffusion et d'explication sur ce qu'est le SOA, une certaine acceptation se met en place. Ainsi on trouve par exemple les grands principes qui guident cet architecture , les bénéfices espérés, une méthode de mise en oeuvre et bien sûr les implémentations des vendeurs qui aideront à la mettre en oeuvre (le verbe “aider” est important car ces outils ne sont pas magique).

Cette architecture permet tout d‘abord de se poser des vrais questions de fonds sur la formalisation du métier de l‘entreprise et place l‘architecture du système en première ligne et cela est bien salutaire.
Ce qui est également intéressant à mon sens est le changement de paradigme qui s'opère avec cette architecture. Je m'intéresse fortement aux niveaux d'abstraction des concepts que l'on manipule et le SOA apporte clairement un niveau d'abstraction élevé très appréciable. Quels sont les concepts que l'on peut considérer comme fondamentaux des architectures SOA ?
- Les concepts formant un processus qui sont : l'activité, la transition, la synchronisation. Ces concepts sont important car ils permettent de mettre l'accent sur la modélisation d'un traitement à un niveau macro avec une possibilité d'implémentation quasi-directe. Cela va de pair avec le retour en grâce des langages fonctionnels , on peut ainsi dire que la fonction reprend le pas sur la donnée qui avait été mise un peu trop en avant avec l‘approche objet.
- L'événement : concept fondamental d'une modélisation dynamique digne de ce nom et quelque peu délaissé au sein d' UML . BPMN , quant à lui, intègre mieux ce concept.
- La composition : l‘approche objet a essentiellement apporté une vision structurelle de cette notion. Une approche plus dynamique est fournie par le style architectural "Pipe-and-Filter".
- Le service : le service est l‘élément unitaire de cette architecture car c‘est lui qui est l‘interface du système unitaire sous-jacent (et si possible implémenté avec une approche objet).
- Les données : cela peut paraitre évident mais ce concept très large a tellement évolué ces dernières années dans ses implémentations que je me permet de le faire rejaillir en tant que concept fondamental. Le web et le langage XML y sont pour beaucoup dans ces évolutions. L'article d'Adam Bosworth concernant les changements de fond en cours dans la structuration de données en est une excellente vision. Il ne faut pas oublier non plus que ces données se déplacent et proviennent de source hétérogènes, la norme SDO vise précisement à faciliter ces manipulations lors de la mise en oeuvre.
Ces cinq grands concepts forment ainsi pour moi les fondations des architectures SOA. On trouve également quelques concepts transverses mais qui restent pour moi secondaires et moins structurants (les registres de services, les moteurs de règles, la gestion des services et leur surveillance, etc.). Un principe qui reste néanmoins très important lors de l'implémentation, mais qui n'aide donc pas à la modélisation, est le respect des standards ( XML , WS-* ou web avec REST , etc.).
Ce billet m‘est inspiré par celui de Gregor Hope sur les patterns SOA, je le rejoins sur les trois premiers concept mais à mon sens l‘approche déclarative ne fait pas de rupture de paradigme car elle est en place depuis longtemps (SQL en est l‘exemple le plus fameux)..
Technorati Tags: SOA concepts fondamentaux

