Prochains événements des
Systèmes d'Information Durables

Programme

Header
 
 

Concepts utilisés dans la démarche SOA

Activation de services

L’activation de services consiste à créer une variante d’un service afin de le configurer conformément aux règles de mise à disposition d’un consommateur : options de fonctionnement, choix du niveau de la qualité d’exploitation… Les règles de mise à disposition forment le contrat d’utilisation du service. Lorsque que le contrat est validé par le fournisseur on considère que le service est activée pour une variante et pour un consommateur.

La plate-forme d'activation de services met en œuvre le modèle d'architecture de gestion par les contextes (pattern Contexte-Aware) pour la gestion des variantes et des contrats d'utilisation. Cette plate-forme dispose d'une console métier qui permet aux équipes techniques et opérationnelles de paramétrer les données des variantes et des contrats. Certains éléments d'une variante peuvent être directement modifiés par le consommateur si celui-ci dispose des droits délégués par le fournisseur. Il faut alors que la plate-forme d'activation de services autorise le travail collaboratif : plusieurs organisations chez le fournisseur et partage de certains paramétrages avec les consommateurs.

L’activation de services est un domaine clef du SOA car la construction de services répond à une volonté d’exposition de multiples services vers plusieurs consommateurs. La gestion de cette exposition crée un nouvel écosystème de paramétrage des variantes de services et de création des contrats d’utilisation. C'est aussi à ce niveau que les fonctions de monitoring des flux d'exploitation sont mises en œuvre.

L’activation de services est également nommée « provisioning » de services.

Administration des Catégories et des Services

Chaque catégorie (au sens de Grady Booch, contributeur à UML : voir aussi définition plus bas) correspond à un agrégat de données dont le périmètre forme une notion métier qui est valable de manière transversale aux projets. Un premier projet construit une version initiale de la catégorie puis les autres la réutilise et l'enrichisse progressivement.

Une cellule transverse d'administration des catégories permet d'unifier et de promouvoir les catégories entre les projets. Par exemple, lorsqu'un projet entame la modélisation de ses données il mène d'abord l'identification et l'analyse des catégories susceptibles d'être réutilisées. Cette réutilisation concerne l'agrégat de données, c'est-à-dire un modèle entités/associations ou un Diagramme de classes mais aussi la réutilisation des services exposés par les catégories.

L'administration des catégories est une évolution des cellules d'administration des données. Le grain de cette administration s'opère sur les agrégats et s'étend aux services qui y sont rattachés.

Cahier des charges SOA

Dans le cahier des charges on spécifie les services de type métier. La découverte de ces services se mène à partir de la modélisation des processus organisationnels (MOT en Merise, Diagramme d'activités en UML). La maîtrise d'ouvrage est fortement impliquée dans ce travail et il faut prendre en compte les spécificités suivantes des services métiers :

Certaines parties du cahier des charges peuvent être mises à disposition de la maîtrise d'ouvrage et de la maîtrise d'œuvre du consommateur. Ce choix dépend du mode d'organisation du projet et plus précisément du niveau d'implication des consommateurs pour la spécification des services métiers. Dans cette hypothèse, le plan-type du cahier des charges SOA doit faire la distinction entre les informations confidentielles du fournisseur et celles pouvant faire l'objet d'une diffusion aux consommateurs.

Catégorie (selon Grady Booch, contributeur à UML)

Le concept de catégorie est pivot dans la démarche SOA. Une catégorie est un agrégat de classes du diagramme de classes (ou entités/association en Merise) qui respecte des propriétés strictes de stabilité, de continuité et de consistance métier. Historiquement le concept de catégorie est aussi nommé objet-métier ou sujet-métier. Il a été introduit la première fois par Grady Booch dans le cadre de UML.

La catégorie permet de décomposer la logique des opérations et des phases sous la forme de services rattachés aux différentes catégories du système d'information. Il s’agit de services de type externe et qui réifie le pattern d’architecture applicative SOA. Selon un principe de base de la taxonomie, on impose qu’un service appartienne à une et une seule catégorie. La catégorie est donc à la fois un régulateur de la granularité des services (on décompose les traitements autour des catégories) mais aussi de classificateur (on range chaque service dans une et une seule catégorie)

Grâce à sa propriété de stabilité, la catégorie à une vocation transversale aux projets. C’est la raison pour laquelle il est intéressant de mettre en place une cellule d’administration des catégories afin d’unifier et de favoriser la réutilisation entre les projets : réutilisation des agrégats de données des catégories (modèle de classes ou MCD) et les services attachés à chaque catégorie.

Propriétés détaillées du concept de catégorie

Composant

Un composant correspond à une unité de traitement exécutable. Par exemple en J2EE il peut s’agir d’un EJB session, d’une servlet... Le périmètre d’un composant est directement régulé par le pattern d’architecture applicative SOA et à ce titre il réifie obligatoirement soit :

Un composant est typé selon les couches de l’architecture N-Tiers. Il est, de manière exclusive, spécialisé soit dans la couche de présentation, soit dans celle des règles applicatives soit dans l’accès aux données.

Contrat d'utilisation de service

Un service est décrit par un contrat d’utilisation qui précise ses conditions d’usage (notamment les préconditions, postconditions, exceptions) et les devoirs que le consommateur doit respecter.

Selon le type du service, le contrat d’utilisation prend différentes formes :

Dans les meilleures pratiques on précise une typologie de contrat : syntaxique (interface + binding), sémantique (préconditions, postconditions…), qualité de services (métriques au sens par exemple de WS-Agreement). A partir ce cette définition on étudie la couverture du WSDL actuel, comment la compléter et quels outils de gestion des contrats mettre en œuvre en administration et en exploitation (parsing automatique des clauses du contrat).

Couplage faible

Un service est en couplage faible quand il n’est pas autorisé à appeler directement un autre service. Il délègue cette responsabilité à un traitement spécialisé que l’on nomme fonction d’orchestration.

Grâce au couplage faible, on peut réutiliser un service sans devoir reprendre des services qui lui sont liés.

A partir de cette première définition, on ajoute d'autres principes techniques qui contribuent à découpler les services entre eux :

1. Un service est activable indépendamment de sa technologie. Pour ce faire, l'activation se réalise par l'envoi (et la réception) d'un message XML (il ne s'agit donc pas d'une activation d'objet distribué comme en Corba ou DCOM).

2. Un service peut être activé suivant un mode asynchrone. Dans ce cas, le service s'abonne à un événement auprès de la fonction d'orchestration (ce qui renvoi aux principes de l'architecture EDA - Event Driven Architecture).

Décomposition SOA

On distingue trois niveaux de décomposition SOA :

Extensibilité du code des services et réutilisation

Lorsque que l’on souhaite réutiliser un service il est souvent nécessaire de l’adapter au préalable afin qu’il se conforme au nouveau contexte d’utilisation. Cette adaptation ne doit pas nécessiter une duplication du code d’origine, ce qui conduirait à une impasse en génie logiciel (problème d’intégrité et de maintenance de plusieurs codes dupliqués). Pour étendre le code d’origine sans le modifier (principe de fermeture/ouverture du code) il existe trois approches possibles :

L’extensibilité du code et donc la gestion des variantes de service est un sujet déterminant du SOA. Aujourd’hui, la pratique combinée de l’héritage (usage très encadré) et du context-Aware (effort de modélisation et outillage de gestion des paramètres) offre un excellent cadre de développement et d’exploitation des variantes. On ne duplique plus le code, on l’étend. A terme, on pourra ajouter l’AOP pour rationaliser encore plus ces principes.

Fonction d'orchestration

La fonction d’orchestration est assurée par les concepts SOA d’opération (celles exposées par le service métier) et de processus mais jamais à d’autres niveaux de l’architecture. C’est un point très important pour rationaliser l’usage des techniques d’orchestration.

Les quatre rôles clefs de la fonction d’orchestration sont indiqués maintenant :

Pour la liste des spécifications sur ces standards WS-*** et les autres, veuillez consulter sur notre synthèse des standards Web services

Gestion de projet SOA

Au niveau des services métiers, la particularité SOA réside dans l'existence d'une gestion de projet participative entre les maîtrises d'ouvrage et d'œuvre du fournisseur avec celles des consommateurs impliqués dans la spécification des services. Dans le cas où le fournisseur conduit le projet sans impliquer des consommateurs représentatifs, on revient à une démarche plus classique de conduite de projet.

Au niveau de la spécification des services qui forment l'architecture applicative (services exposés par les catégories et services internes à la catégorie) les consommateurs ne sont pas impliqués. Par contre, du côté du fournisseur, il faut prévoir l'intervention d'une cellule transversale d'administration des catégories afin d'unifier les catégories et de favoriser la réutilisation des services.

Sur ce schéma, le sigle TRS fait référence à la cellule transversale d'administration des catégories.

Modèle d'adaptation

Un modèle d'adaptation est une structure de données qui recense l'ensemble des paramètres susceptibles de faire varier le comportement du service. Une certaine valorisation de ces paramètres permet de créer une variante du service. Une variante est exécutable dans le cadre d'un contexte d'usage identifié. Ce principe de fonctionnement renvoie aussi au modèle d'architecture de gestion par les contextes (pattern de Context-Aware).

Généralement on utilise le format XML Schema du W3C pour créer le modèle d’adaptation. XML Schema est bien approprié pour la définition de paramètres notamment grâce aux facettes de contraintes et aux types étendus.

Quand on spécifie les services et plus particulièrement les services de type métier, il est déterminant de concevoir ce modèle d’adaptation. C’est grâce à lui que la création de variantes de services est possible, ce qui est déterminant pour la flexibilité d’exposition des services aux consommateurs.

Modèle logique SOA

Le modèle logique est un modèle d’organisation des classes qui permet de réifier les concepts SOA manipulés. La continuité entre les phases de spécification et d’implémentation du logiciel est indispensable :

Généralement, on associe à chaque façade une interface qui, selon les principes de la programmation par interface, permet de faire évoluer les implémentations des façades suivants plusieurs versions en limitant les impacts sur le code existant du côté des clients des services.

Opération

Une opération correspond à un traitement exposé par un service métier. Dans l'approche SOA, on admet qu'un service métier puisse exposé plusieurs opérations. Ce principe permet d'être conforme avec la terminologie du W3C sur les Web services, sans pour autant imposer que l'opération soit implémentée ultérieurement en SOAP-XML (ce qui reste un choix technique). L'opération est découverte à partir de l'analyse du processus organisationnel.

Lorsque l'on implémente le service métier en technologie web service, on dispose d'une correspondance sémantique et fonctionnelle immédiate entre l'opération du service métier et l'opération du web service. Evidemment, le choix d'implémentation en web service reste optionnel. On peut pratiquer la démarche SOA sans implémenter la technologie web service. Par contre l'inverse n'est pas pertinent. En effet, la bonne constitution des web services et des opérations exposées en SOAP-XML nécessite l'usage du cadre méthodologique SOA.

Les parties du processus organisationnel qui ne sont pas exposées sous la forme d'opération d'un service métier sont regroupées sous le concept de phase.

En final, un processus organisationnel est donc découpé en une série d'opérations et de phases. Le concept d'opération reste facultatif car il n'est pas toujours nécessaire de spécifier des services métiers, ce qui n'empêche pas d'utiliser la démarche SOA plus tard lors de la découpe des phases sous la forme de services attachés aux catégorises. Voir définition des concepts de catégorie et de phase.

Pattern d'architecture applicative SOA

Le pattern d’architecture applicative SOA s’appuie sur le concept de catégorie pour organiser la structuration du logiciel sous la forme de service. Il ne s’agit pas ici des services de type métier dont le contour fonctionnel est issu de la modélisation des processus mais des services de type externe qui traite d’une préoccupation de génie logiciel.

Pattern Context-aware - Modèle d'architecture de gestion par les contextes

Ce pattern permet la création de variantes de services grâce à un dispositif de gestion de paramètres. Les paramètres susceptibles de faire varier le comportement d’un service sont localisés dans un modèle d’adaptation.

Un produit logiciel permet de créer différentes valorisations des paramètres selon les contextes d’usage du service : un canal, un partenaire, une filiale… Ce produit dispose d’une console de paramétrage qui permet d’agir sur les variantes sans intervenir dans le code du service (principe même du paramétrage). Dans la pratique, cette console peut être utilisée par les maîtrises d’ouvrage afin d’agir de manière autonome sur certains paramètres du modèle d’adaptation.

L'organisation des variantes d'un service respecte généralement la logique d'un arbre qui permet de bénéficier des mécanismes d'héritage. Plus précisément, à partir d'une première variante d'origine (la racine) on peut créer des variantes filles et sous filles qui héritent les unes des autres. Par exemple, on peut utiliser ce dispositif pour créer un contrat d'utilisation cadre (un contrat est un ensemble de paramètres qui définit ses différentes clauses) puis grâce à l'héritage le décliner en multiple variantes selon les besoins d'exposition vers les types de consommateurs (filiale, partenaire, canaux…) puis les consommateurs au niveau nominatif (une organisation).

Phase

Une phase est un sous-ensemble dans un modèle de processus organisationnel qui n'est pas exposé sous la forme d'une opération d'un service métier. Le concept de phase permet d'organiser le processus organisationnel en sous parties afin de mieux maîtriser la complexité.

En final, un processus organisationnel est donc découpé en une série d'opérations et de phases. Le concept d'opération reste facultatif car il n'est pas toujours nécessaire de spécifier des services métiers, ce qui n'empêche pas d'utiliser la démarche SOA plus tard lors de la découpe des phases sous la forme de services attachés aux catégorises. Voir définition des concepts de catégorie et d'opération.

Plan-type Cahier des charges SOA et Contrat d'utilisation

Il faut définir deux plans-types importants pour encadrer la spécification et la mise à disposition des services métiers. Il s'agit d'une part du cahier des charges SOA qui contient la spécification complète de chaque service métier et qui peut faire l'objet d'une communication partielle aux consommateurs. Et d'autre part du plan-type du contrat d'utilisation du service qui reprend certaines parties du cahier des charges (notamment les préconditions, postconditions et exceptions) et ajoute d'autres informations indispensables pour la description des modalités d'usage du service et des devoirs des consommateurs.

Préconditions - postconditions

Une précondition est une règle qui renvoie une valeur booléenne permettant de décider de la possibilité de déclenchement du service ou non. Cette règle utilise sur les paramètres d’entrée du service et d’autres données propres au service comme par exemple certaines informations de son modèle d’adaptation.

Une postcondition est une règle qui détermine comment le résultat doit être restitué en fonction de chaque précondition ou groupe de préconditions.

Ces règles peuvent être représentées via une syntaxe OCL mais dans la pratique une description informelle est plus adaptée pour la validation avec la maîtrise d’ouvrage.

Voir aussi le besoin de validation automatique des pré-conditions et post-conditions au niveau des contrats de service : http://www.orchestranetworks.com/fr/soa/breves.cfm#040825.

Processus

Le processus est la description des traitements au niveau du modèle organisationnel et modélisé soit sous la forme d’un MOT (Merise) soit un Diagramme d’activités UML.

Le processus assure une fonction d’orchestration. Il orchestre l’appel aux opérations des services métiers et aux phases. C'est à partir de la modélisation du processus que les services métiers et leurs opérations sont découverts et spécifiés.

Service

Un service est une unité de traitement qui respecte les propriétés de couplage faible, d’exposition d’un contrat de service et qui correspond à l’un des types suivants :

A la différence du concept de composant, le contour du service n'est pas celui d'une frontière de code exécutable. Son périmètre est logique. L'implémentation physique du service s'appuie sur le concept de composant. Voir définition du concept de composant.

Service métier - Spécificités de conception

Quand on spécifie les opérations d’un service métier à partir du modèle de processus, il faut veiller à prendre en compte les caractéristiques importantes suivantes :

Variantes de service

Une variante de service représente un comportement adapté du service par rapport à sa version d'origine. Il peut s'agir d'adaptation de nature très variée : présentation (marque blanche…), métier (offre commerciale…), technique (environnement d'exécution recette, exploitation…), qualité de services (plages de disponibilité, temps de réponse garanti…). La gestion des variantes s'appuie sur la mise en œuvre du modèle d'architecture de gestion par les contextes (pattern Context-Aware).

Versions - Gestion des versions

Les compteurs de versions portent sur les entités physiques de traitement c'est-à-dire les composants. Dans ce cadre, les composants qui réifient les concepts de services métiers, services externes et services internes font l'objet d'une gestion de version.

Le compteur de type GRC (Généralisation – Révision – Correction) évolue généralement selon ces règles :

Lorsque l'on crée des variantes de service avec le modèle d'architecture de gestion par les contextes (pattern de Context-Aware) on ne modifie pas les compteurs GRC car le code des composants n'est pas modifié (on agit seulement sur la valorisation des paramètres).

Quand on déploie les services métiers sous la forme de web services SOAP-WSDL, il faut en plus gérer les versions des schémas XML (description des types de données qui transitent dans les messages des opérations des web services) et les WSDL qui décrivent le web service. Les règles sont les suivantes :

Pour les schémas XML :

Pour les WSDL :