L’architecture orientée services [Huhns2005] (SOA pour Service-Oriented
Architecture) est un style architectural construit sur les paradigmes de l'approche à
services. Le terme SOA, en plus de désigner l’architecture basée sur un motif d’interaction
particulier à la base des applications orientées service, fait aussi référence aux
technologies mettant en œuvre l’approche à services.
II.2.1 Principes de l'architecture orientée service
Le découplage entre consommateurs et fournisseurs est le principe fondamental des
SOA. En découplant les éléments d’une application il devient alors possible de les
remplacer à tout moment et de composer des applications à partir de services existants. Le
contrat de service également appelé spécification de service est le seul lien entre le
fournisseur et les consommateurs d’un service. Outre le principe d’encapsulation hérité
des approches à objets et à composants, les SOA utilisent un mécanisme de liaison tardive
s’appuyant sur un motif d’interactions tripartites pour atteindre ce niveau de découplage.
La liaison proprement dite n’est effectuée qu’au moment de l’exécution, juste avant que
le service requis ne soit utilisé. L’utilisateur du service ne possède qu’une dépendance vers
l’interface fonctionnelle du service, et c’est à l’exécution que les appels sont redirigés vers
le fournisseur de service. Ainsi consommateurs et fournisseurs peuvent évoluer
indépendamment tant que la spécification fonctionnelle du service ne change pas. Ce
mécanisme de liaison tardive est rendu possible grâce à l’annuaire de services.
Parfois appelé registre, répertoire ou courtier de services, l’annuaire est l’entité centrale
des architectures orientées service. C’est son rôle d’intermédiaire entre consommateurs et
fournisseurs de service qui permet le découplage et la liaison retardée propre aux SOA.
Les schémas ci-dessous décrivent de manière synthétique (Figure 7) et détaillée (Figure 8)
le motif d’interaction entre les 3 acteurs des SOAs. Ce motif comporte trois phases :
• la publication;
• la découverte et la sélection;
• la liaison.
C ons ommateur de s ervice C ons ommateur de s ervice F ournis s eur de s ervice F ournis s eur de s ervice Annuaire de s ervice Annuaire de s ervice S S 1. Publication 2. Découverte et sélection 3. LiaisonAvant qu’un service ne puisse être utilisé un fournisseur de ce service doit être localisé
par l’annuaire. Pour cela, les fournisseurs de service publient leur service auprès de
l’annuaire tandis que les consommateurs interrogent l’annuaire afin de découvrir et
sélectionner un ou des prestataires du service recherché. Seulement ensuite le
consommateur peut se lier à un fournisseur et utiliser son service. Afin de proposer une
sélection plus fine des services, il est parfois possible pour les prestataires de publier en
plus de l’interface fonctionnelle du service, ses propriétés extra-fonctionnelles. Ainsi les
consommateurs peuvent, par l’utilisation de filtres par exemple (cf. Figure 8), choisir
parmi plusieurs prestataires du même service. L’annuaire quant à lui peut être unique et
centralisé, distribué entre plusieurs sous-annuaires dispersés sur le réseau, dupliqué pour
répondre à des problèmes de tolérance aux pannes, etc. Enfin, un consommateur de
service peut aussi jouer le rôle de fournisseur. En utilisant un ou plusieurs services il peut
créer de nouvelles fonctionnalités et proposer ainsi de nouveaux services. Il s’agit d’une
forme de composition de service.
Prestataire Annuaire Consommateur
Instance de service publie(specification, ref) decouvre(specification) filtreFournisseurs() retourneRefsFournisseurs filtreResultats() etablitLiaison() creeInstance() <<create>> retourneInstance() utiliseService() rendService relache(instance) detruitInstance() <<destroy>>
Figure 8. Diagramme de séquence UML du patron SOC
On trouve également dans la littérature certaines règles de conception de SOA
[FAROS2006] : l’indépendance aux aspects technologiques, l’absence d’état, la cohésion
et l’idempotence. On notera cependant que, si certaines règles comme l’encapsulation et
l’indépendance aux aspects technologiques sont bien maîtrisées, d’autres sont plus
contraignantes (l’idempotence ou l’absence d’état) et sont à ce titre moins appliquées.
II.2.2 Architectures orientées service étendues
L'architecture orientée service étendue est une extension à l'architecture orientée
service telle qu'elle a été présentée ci-dessus. Cette notion de SOA étendue définie par
Papazoglou [Papazoglou et al 2007] s'attaque à des problématiques relatives à l'approche
à services. Le SOA ne traite pas, de base, des problématiques de composition et
d'administration qui apparaissent dès que l'on commence à réaliser des applications
bâties sur l'approche à services.
La Figure 9 présente ces préoccupations sous forme d'une pyramide reposant sur les
primitives du SOA de base (la publication, la découverte, la sélection et la liaison)
gravitant autour de la spécification de service.
Au-dessus du SOA basique sont proposées des fonctionnalités pour le support de la
composition de services dont la coordination de services qui correspond à une
composition comportementale : ce sont les procédés métiers qui sont composés. La
chorégraphie et l’orchestration présentées sur la Figure 10 sont deux formes de
composition comportementale [Peltz2003]. L’orchestration consiste en une série
d’activités appelant chacune un service. La logique de composition se situe au niveau de
l’orchestrateur. A l’inverse, dans une chorégraphie de services, la logique de composition
est embarquée dans le service.
Publication
Publication DécouverteDécouverte Sélection
Sélection LiaisonLiaison Composition
Composition Supervision
Administration
Propriétés extra-fonctionnelles (qualité de service, sécurité, …)
Figure 9. Schéma pyramidal représentant une SOA étendue
L'autre type de composition qui permet de créer des applications à services est la
composition structurelle qui permet de construire des services composites. Sans cet étage
relatif à la composition de services, il ne pourrait y avoir de notion d'applications à
services. Le dernier étage de la pyramide des SOAs étendues concerne ce qui a trait à
l'administration des applications à services (construites par composition de services).
Cette couche traite des fonctionnalités de gestion telles que le déploiement, la supervision
et l'évolution.
Enfin à tous ces étages, une architecture orientée service étendue doit être capable de
gérer des propriétés extra-fonctionnelles telles que la sécurité ou la qualité de service.
A1 A2 A3 A4 S1 S2 S3 S1 S2 S3
Figure 10. Orchestration (à gauche) et chorégraphie (à droite) [Pedraza2009a]
II.2.3 Services Web
Les Services Web sont l’archétype des architectures orientées services, ce qu’on peut
qualifier de standard de fait. C’est l’ensemble des technologies que l’on regroupe sous le
terme de Services Web qui a contribué au succès et à une adoption grandissante de
l’approche à services [Malloy2006]. L’objectif premier des services Web visait à faciliter
l’intégration de systèmes hétérogènes. En effet les services Web permettent à des
applications hétérogènes s’exécutant au sein de différentes entreprises de pouvoir
interopérer à travers des services exposés par les applications. L’utilisation de
spécifications construites sur le standard XML (eXtensible Markup Language) facilite
l’encapsulation et par conséquent l’interopérabilité [Motahari2006].
La Figure 11 représente la pile technologique de base (non étendue) sur laquelle
s’appuient les services Web. Un service est spécifié par son interface WSDL. La
communication passe par des messages encapsulés dans une enveloppe SOAP, véhiculés
par une couche de transport (généralement le protocole HTTP, mais aussi SMTP, IIOP,
…). UDDI est l’annuaire de service permettant la découverte et la sélection de services
Web.
HTTP, SMTP, IIOP, ... XML, URI, XML Schema Transport Contenu Protocole SOAP Message Service WSDL UDDI Description DécouverteII.2.3.1 Spécification de service : WSDL et ses extensions
La description des services web est réalisée dans un langage spécifique appelé WSDL
(Web Service Description Language) [WSDL2001, WSDL2007] recommandée par W3C
(World Wide Web Consortium) depuis la version 2.0. Le langage WSDL est basé sur une
grammaire XML et permet de décrire l’interface du service, les types de données employés
dans les messages, le protocole de transport employé dans la communication et même des
informations permettant de localiser le service spécifié.
De nombreuses spécifications souvent nommées WS-* étendent WSDL afin de
transformer les services Web en architecture orientée services étendue. Ainsi certaines
spécifications fournissent des informations complémentaires, comme WS-CDL (Web
Services Choreography Description Language) qui contient des informations sur l’ordre
des opérations à effectuer, ou WSDL-S (Web Services Semantics) qui décrit la sémantique
du service.
II.2.3.2 Communication : SOAP
La communication avec un service Web utilise le protocole standard SOAP. Ce protocole
bâti sur XML permet la transmission de messages entre les services Web et leurs clients.
SOAP fournit une enveloppe contenant des informations sur le message lui-même afin de
permettre son acheminement et son traitement. SOAP fournit également un modèle de
données définissant le format du message, c’est-à-dire les informations à transmettre tels
que les paramètres d’entrées et de sorties.
Les services Web reposent sur des interactions de type client-serveur et SOAP est un
protocole de RPC (Remote Procedure Call), c’est-à-dire qu’il offre un mécanisme de
requête-réponse permettant à un objet d’invoquer à distance des méthodes d’un autre
objet. La transmission de messages est généralement assurée par le protocole http qui
passe plus facilement les pare-feux, mais peut également se faire à l’aide d’autres
protocoles tels que SMTP.
II.2.3.3 Découverte : UDDI
L’annuaire de services Web, appelé UDDI (Universal Description, Discovery and
Integration) supporte l’enregistrement de descriptions de services appelés types de
services ainsi que de fournisseurs de services (des entreprises). UDDI fournit des moyens
de publier un fournisseur de service, typiquement une entreprise, à travers des pages
blanches, jaunes et vertes. Les pages blanches contiennent le nom du fournisseur et sa
description, les pages jaunes catégorisent un fournisseur et les pages vertes, plus
techniques, décrivent les moyens d’interaction avec un fournisseur: descripteurs WSDL de
services fournis ou processus métiers.
Il est courant que l’annuaire UDDI se publie lui-même comme un service Web pouvant
être interrogé en utilisant le protocole SOAP.
UDDI est un annuaire distribué dans lequel l’information est répliquée sur plusieurs
sites, en conséquence un fournisseur de services ne doit publier sa description de service
que vers un seul nœud du réseau de registres. En plus de pouvoir se publier lui-même
ainsi que son type de service, un fournisseur de service peut aussi se retirer de l’annuaire.
Toutefois, ceci reste essentiellement théorique (cf. Figure 12). En pratique, les
descripteurs WSDL contiennent déjà des informations permettant de localiser le service,
ainsi la découverte et la sélection du service se font au développement et non à l’exécution.
Le consommateur de service connait la localisation du fournisseur de service et n’utilise
que très rarement l’annuaire UDDI. Ce mode d’interaction où consommateurs et
fournisseurs sont directement liés ne tire pas profit de la propriété de couplage « lâche »
apportée par l’approche à services. Les rares implémentations d’UDDI se heurtent en effet
à un problème de performances en tentant de passer à l’échelle du web, et se limitent donc
aux réseaux d’entreprise.
WS WS WS WS WS WS
Figure 12. UDDI : de la théorie (à gauche) à la pratique (à droite)