- Blog Xebia France - http://blog.xebia.fr -
SOA : Du composant au service : L’autonomie
Posted By Christophe Heubès On Mercredi 29 avril 2009 @ 8:00 In SOA | No Comments

Comme son nom le suggère, l’élément clé de SOA (Service Oriented Architecture) est le Service. Il est pourtant difficile de faire le consensus autour de la notion de service et il est souvent difficile de répondre à cette simple question « Qu’est-ce qu’un service ? ». Ce sujet débouche invariablement sur, au choix : Un blanc ; Une réponse alambiquée et incertaine ; Une discussion enflammée (ou un débat stérile).
On pourrait proposer la définition suivante : « Un Service est un composant logiciel distribué, exposant les fonctionnalités à forte valeur ajoutée d’un domaine métier ». Malheureusement, les définitions aussi courtes (bien qu’exactes) sont nécessairement incomplètes et amènent un florilège de questions.
Pour répondre plus précisément à la question, nous vous proposons de passer en revue les huit aspects qui caractérisent un service :
Ces 8 aspects sont issus du livre « SOA Principles of Service Design » de Thomas Erl, également auteur du site SOA Principles.
Dans ce billet, nous nous attarderons sur la notion d’autonomie.
Comme nous l’avons vu dans le précédent billet de cette série : La réutilisabilité des services constitue une des pierres angulaires de la mise en œuvre d’une architecture orientée service. En effet, la mise en œuvre d’une SOA vise, entre autres, à éviter le gaspillage des ressources en éliminant les redondances inhérentes au modèle en silo. D’autre part, la réutilisation est une condition première de l’agilisation du SI indispensable à la réduction du time-to-market, principal élément de ROI des SOA.
Mettre l’emphase sur la réutilisabilité des services commence bien sûr par la fourniture de services proposant une logique réutilisable, mais cela implique également que l’implémentation de cette logique soit effectivement réutilisable une fois déployée. La confrontation au monde réel est souvent douloureuse.
En effet, le modèle SOA pousse à maximiser les possibilités de réutilisation des services produits. Les services identifiés comme réutilisables sont ainsi mis à disposition d’un large spectre de services composites, de processus, d’applications, … Au fil du temps, de tels services ont donc vocation à prendre part à un nombre croissant de compositions, d’orchestrations, de workflow, …
Dans cette optique de sollicitation massive, il est donc important de concevoir l’implémentation des services en prêtant tout particulièrement attention à la concurrence d’accès. Les accès concurrents à un service ne doivent en aucun cas modifier son comportement, sa fiabilité ou ses performances. En d’autres termes, un service doit respecter son contrat (et ses SLAs), quelque soit le volume de sollicitations auquel il est soumis : Un service doit être prédictible.
Afin de garantir cette prédictibilité dans le cadre d’accès concurrents, deux principes doivent être appliqués lors de l’élaboration des services :
Ces deux aspects sont fortement liés. En attendant le billet consacré à la notion de « statelessness des services », je vous invite à relire l’article Service Stateful vs. Service Stateless.
Afin que les services s’acquittent au mieux de leurs engagements (comportement, fiabilité, performances, …), ils doivent exercer un contrôle fort sur leur environnement d’exécution et sur les ressources qui sous-tendent leur implémentation. L’autonomie d’un service traduit la mesure du degré de contrôle qu’un service exerce sur son environnement. Plus un service à de contrôle sur son environnement (plus il est autonome), plus son comportement au runtime sera prévisible.
Lors de la décomposition des fonctions du SI en inventaire de services, il est souhaitable de définir les membres de ce registre comme des blocs indépendants. C’est donc un haut niveau d’autonomie individuelle des services qui est visé. Réduire l’accès partagé aux ressources d’un service et augmenter le niveau d’isolation physique des services sont deux leviers permettant d’augmenter cette capacité des services à fonctionner de façon autonome.
Tous les services d’un inventaire ne pourront évidement pas offrir un contrôle complet sur leur environnement. C’est pourquoi Thomas Erl propose de distinguer deux niveaux basiques d’autonomie :
La mise en œuvre d’une SOA se faisant, dans la grande majorité des cas, au sein d’un existant avec lequel il faut vivre pendant longtemps (la refonte de tout ou partie du SI en mode big-bang est trop coûteuse et trop risquée), un inventaire de services offrant exclusivement des services d’ un niveau d’autonomie pure reste un objectif difficilement atteignable. C’est pourtant cet objectif qu’il faut viser car un tel inventaire de service permet d’adresser nos préoccupations de monté en charge et de concurrence d’accès.
La mise en œuvre du principe d’autonomie est donc extrêmement importante car elle détermine dans quel mesure les autres principes peuvent être mis en application dans le monde réel (nos environnements de production) en favorisant la fiabilité et la prédictibilité des services.
Article printed from Blog Xebia France: http://blog.xebia.fr
URL to article: http://blog.xebia.fr/2009/04/29/soa-du-composant-au-service-lautonomie/
Click here to print.