Architecture Orientée Services (SOA)
Gouvernance SOA : Principes de l'Architecture Orientée Service
L'architecture orientée service est une organisation du système informatique fondée sur l'identification et l'agencement des services et des messages assurant leur communication. Le service est ainsi l'unité d'oeuvre de l'architecture du système, tant dans les phases de spécification que de développement et de déploiement.
L'approche SOA intègre nativement les principes de modularité, d'interfaçage, de contractualisation, et d'interopérabilité. Elle assure ainsi une adaptation rapide du système d'information au regard des évolutions des besoins de l'entreprise.
Parallèlement, elle permet de capitaliser la mise en place de bonnes pratiques par l'élaboration d’une architecture de référence. Cette architecture de référence pourra également être utilisée pour répondre à des problématiques de convergence de systèmes.
"Mieux vaut une conscience tranquille qu'une destinée prospère. J'aime mieux un bon sommeil qu'un bon lit."
Victor Hugo
Voir aussi :
http://urbanisation-si.wix.com/blog
http://urbanisme-si.wix.com/blog
http://urbanisation-si.wix.com/urbanisation-si
http://urbanisation-si.over-blog.com/
http://rhonamaxwel.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
Gouvernance SOA : métier ou informatique, à votre service !
En urbanisation SI, pour la vue fonctionnelle, les métiers expriment leurs besoins sous forme d'ensemble de comportements qu'ils attendent du système. Ils modélisent et décrivent les fonctionnalités qui doivent à terme être supportées par le futur système.
La MOE (par exemple la DSI) a, quant à elle, pour tâche de regrouper sous forme de services les messages délivrant les informations demandées.
En architecture SOA (Service Oriented Architecture), un service est une unité de traitements cohérents et indivisibles qui coordonne un ensemble de messages et d'événements, dans le but de réaliser une ou plusieurs fonctionnalités.
Les services peuvent être mis en correspondance avec les opérations réalisées à chaque étape des processus métiers de l'entreprise. Les services se présentent ainsi comme point d'articulation entre les métiers et l'informatique. Les métiers les voient par le biais des fonctionnalités rendues, les informaticiens les voient en tant qu'éléments d'architecture du système.
L'architecture orientée service est une organisation du système informatique fondée sur l'identification et l'agencement des services et des messages assurant leur communication. Le service est ainsi l'unité d'oeuvre de l'architecture du système, tant dans les phases de spécification que de développement et de déploiement.
L'approche SOA intègre nativement les principes de modularité, d'interfaçage, de contractualisation, et d'interopérabilité. Elle assure ainsi une adaptation rapide du système d'information au regard des évolutions des besoins de l'entreprise. Parallèlement, elle permet de capitaliser la mise en place de bonnes pratiques par l'élaboration d’une architecture de référence. Cette architecture de référence pourra également être utilisée pour répondre à des problématiques de convergence de systèmes.
"Toute la vie est une affaire de choix. Cela commence par : "la tétine ou le téton ?" Et cela s'achève par : "Le chêne ou le sapin ?"."
Pierre Desproges
Voir aussi :
http://urbanisation-si.wix.com/blog
http://urbanisme-si.wix.com/blog
http://urbanisation-si.wix.com/urbanisation-si
http://urbanisation-si.over-blog.com/
http://rhonamaxwel.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
Faites vos gammes : les design patterns de la gouvernance SOA
- Problème
- Comment le contrat d’un service peut il être systématiquement compris et interprété ?
- Un contrat peut exprimer des capacités de différentes manières conduisant à des inconsistances ou risque de mauvaise interprétation.
- Solution
- Les contrats de services sont standardisés en utilisant des conventions de nommages
- Application
- Les conventions de nommage sont appliqué aux contrats de services coté analyse formelle et conception de processus
- Impacts
- L’utilisation de conventions de nommage doit être systématique et renforcé dans les grandes structures.
Gouvernance SOA : lachez tout !
De la même façon, la logique d’un service est fortement liée aux technologies sur lesquelles son implémentation s’adosse (2).
D’autre part, dans le cadre de services composites, la logique d’un service est également dépendante des services qui le composent (3).
Enfin, le contrat de service ainsi que sa logique peuvent être couplés aux processus qui les utilisent (4).
Ces couplages sont inévitables.
Le contrat d’un service et sa logique peuvent être couplés de deux façons différentes :
Couplage du contrat de service vers la logique d’implémentation du service (B) :
- Un tel couplage résulte d’une approche contract last lors du design du service (le contrat dérive de l’implémentation). Cette approche, nous allons le voir, est à proscrire car elle induit un couplage du contrat avec l’environnement du service.
- Ce couplage dénote une approche contract first dans la conception du service (le contrat est écrit préalablement à l’implémentation du service). Cette approche est toujours préférable et le couplage du service vers son contrat est considéré comme un couplage positif.
Les consommateurs d’un service sont liés au contrat de ce dernier, et ne doivent être liés qu’à celui-ci (Pas au service lui-même).
C’est ce que l’on appelle le couplage lâche.
Or, si le contrat est couplé avec la logique du service (B), les consommateurs vont hériter par transitivité de l’ensemble des dépendances de la logique du service avec son environnement.
Nous nous retrouvons donc avec des consommateurs qui sont fortement couplés au service.
- Abstraction : Le contrat d’un service ne doit contenir que les informations essentielles à son invocation. Seules ces informations doivent être publiées.
- Réutilisabilité : Un service exprime une logique agnostique et peut ainsi être positionné comme une ressource réutilisable.
- Autonomie : Un service doit exercer un contrôle fort sur son environnement d’exécution sous-jacent. Plus ce contrôle est fort, plus l’exécution d’un service est prédictible.
- Stateless (sans état) : Un service doit minimiser la consommation de ressources en déléguant la gestion des informations d’état quand cela est nécessaire.
- Découvrabilité : Un service est complété par un ensemble de métas données de communication au travers desquelles il peut être découvert et interprété de façon effective.
- Composabilité : Un service doit être conçu de façon à participer à des compositions de services.
Le contrat standardisé (suite)
- Le contrat de service est donc une notion complexe qui ne se limite pas à la (simple) définition d’interfaces.
- Un contrat de service est constitué de nombreux éléments (techniques ou non) qui forment un fond documentaire pour lequel il est préférable (voire indispensable) de respecter un formalisme commun.
- L’utilisation de ce formalisme commun est le meilleur moyen de construire un modèle cohérent et donc facile à comprendre et à partager.
- La notion de contrat de service standardisé ramène à celle de contrat first qui est, comme nous l’évoquions dans notre billet sur l’interopérabilité des Web Services (sans, une fois de plus, limiter la notion de service à ceux-ci), la meilleure approche de conception de services (voire la seule valable ?).
- Dans cette approche, les contrats font l’objet de développements spécifiques en amont de l’implémentation de la logique du service.
- Le développement de ces contrats doit se faire suivant des règles de standardisation établies pour l’ensemble des services d’un même Système Technique.
- Centraliser pour encourager la réutilisation
- En plus de cadrer la définition des contrats (et donc de faciliter la communication), l’utilisation d’un formalisme commun et de règles de standardisations facilite la centralisation des éléments constituant les contrats. Cette centralisation encourage la réutilisation. Parmi les constituants des contrats de services, deux sont de particulièrement bons candidats à la réutilisation :
- Les règles d’utilisation (policies) :
- Les contraintes de sécurité, d’encodage, de versioning sont souvent communes à l’ensemble (ou à un sous-ensemble) des services d’un domaine. De la même façon, les règles métiers sont rarement applicables à un seul service.
- Les formats de données (XSDs) :
- Il est évident que les types et formats de données sont utilisés par plusieurs services. Ces derniers ont même vocation à être utilisés au-delà des services : les types et formats de données sont souvent les mêmes pour les invocations synchrones de service et pour les échanges asynchrones, par exemple au travers d’un bus.
- Pour rendre possible leur réutilisation, il est indispensable de séparer les différents éléments du contrat de service. Plusieurs WSDL pourront ainsi appliquer les mêmes règles (policies) et manipuler les mêmes types de données (XSDs).
-
L’isolation des différents constituants du contrat de service en vue de leur réalisation est une bonne pratique qui tient du bon sens.
-
Il n’est pourtant pas rare de voir des déclarations de type (XSDs) au sein d’une WSDL plutôt qu’un import.
-
Cette approche est aussi aberrante que la re-déclaration en inner class de l’ensemble des types de données manipulés par un Bean (Cette pratique doit être restreinte à des cas bien spécifiques et constituer une exception).
-
La standardisation des contrats de service est donc un élément fondamental de la mise en œuvre d’architectures orientées services (SOA). En effet, la mise en place des bonnes pratiques évoquées dans ce billet offre des gains importants sur deux axes clés :
- Faciliter la communication et le partage de la connaissance :
- La définition d’un ensemble de principes communs de conception des contrats (ex. : conventions de nommage claires pour les entités, les attributs et les relations) permet d’aboutir à un modèle plus cohérent et donc plus facile à comprendre, partager, (ré)utiliser.
- Encourager la réutilisation :
- L’isolation et la centralisation des différents constituants des contrats de services facilitent indéniablement leur réutilisation.
-
Il ne faut pas perdre de vue que la définition de certains de ces éléments dépasse le simple cadre des contrats de service.
-
Il est par exemple souhaitable que les types et formats de données manipulés par les services soient également utilisés au sein des flux d’intégration.
-
Cette pratique, même si la définition d’un Modèle de Données Canonique reste un exercice difficile, est un gage sur le long terme de maintenabilité, de stabilité et de pérennité.
"Si tu veux être heureux pendant une heure, fais une sieste. Si tu veux être heureux pendant une journée, va à la pêche. Si tu veux être heureux toute ta vie, aide ton prochain."
Voir aussi : http://urbanisation-si.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
http://urbanisation-si.eklablog.com/
Un bon contrat, n'est pas un contrat signé mais un contrat standardisé
- D’un contrat syntaxique qui propose une représentation technique du service :
- Il constitue le contrat d’utilisation du service (son interface). Il présente le nom du traitement, ses paramètres d’entrée et de sortie et les contraintes structurelles (format et contrainte sur les données) qui s’y appliquent.
- D’un contrat sémantique qui fournit une description informelle du traitement:
- Il précise les règles et contraintes d’utilisation du service : La valorisation des messages de réponse (0 représente-t-il le résultat d’un calcul, une erreur, une interruption de service ?) ; Les exceptions ; les pré et post conditions techniques (ex. : volume des données échangées) ou métiers (ex. : écriture comptable équilibrée).
- D’un contrat de niveau de service (QoS & SLA) qui précise les engagements du service :
- Il spécifie par exemple le temps de réponse maximum attendu, les plages horaires d’accessibilité, le temps de reprise après interruption, les procédures mises en œuvre en cas de panne, les procédures de prise en charge du support, …
- D’une WSDL qui décrit les modalités d’accès au(x) service(s)
- La WSDL fait partie du contrat syntaxique. Elle fournit l’interface du service.
- D’un ensemble de XSD qui définissent les types de données échangées par le service :
- Les XSD font partie du contrat syntaxique. Elles définissent les formats de données et les contraintes structurelles. Les XSD font également partie du contrat sémantique. En effet, la richesse des types et restrictions XSD permet d’auto-documenter les valeurs possibles et permet souvent d’éviter des quiproquos.
- d’un ensemble de policies qui définissent les règles d’utilisation du service :
- Les policies font parties du contrat sémantique. Les règles et contraintes qu’elles expriment adressent des domaines variés : Sécurité, encodage, langue, versioning, métiers, …
- De documentations complémentaires.
- Ces documentations complètent le contrat sémantique. C’est par exemple dans les spécifications que l’on décrira les pré et post condition d’utilisation du service (elles ne sont pas toutes implémentables sous forme de policy).
- Ces documentations constituent le contrat de niveau de service (QoS & SLA). Notons que l’on parle bien d’un contrat qui définit un ensemble d’indicateurs et de valeurs seuils. Il n’est pas question ici des moyens techniques à mettre en œuvre pour leur supervision (traces, alertes, …).
Voir aussi : http://urbanisation-si.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
http://urbanisation-si.eklablog.com/
Gouvernance SOA : la phase de Change Time
Cohabitation de versions
- Règle 1
- Le message XML contient un numéro de version afin de permettre le contrôle du flux XML en production
- Via le namespace (espace de nommage) si non compatible ascendant
- Via l’attribute version XML si compatible ascendant
- Règle 2
- Le fournisseur doit favoriser la compatibilité ascendante
- Une nouvelle version N n’impacte pas les Consommateurs de la version N-1 (pas toujours possible)
- Règle 3
- Distinguer le cas d’une release sur les opérations (WSDL) et le cas d’une release sur les données (schéma XML)
Les contrat de services
- Expose une définition abstraite
- Nom du traitement
- Paramètres du message d’entrée et du message de réponse
- Nom, format, facettes de contraintes
- Exceptions (erreurs)
- Pré-conditions et post-conditions
- Expose une (des) définition(s) concrète(s) liée(s) à la définition abstraite (bindings techniques)
- Format techniques des messages
- Protocole de transport des messages
- En exploitation il faut garantir que les clauses du contrat sont exécutées… et pas d’autres
- Il faut découpler la validation du service de son code
- On peut utiliser :
- Un moteur de règles comme IBM - ODM (Operational Decision Management) ou JBoss BRMS (Business rules Management System) ou Drools pour la version open source de JBoss BRMS.
- WS-Policy - Xpath
Voir aussi : http://urbanisation-si.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
http://urbanisation-si.eklablog.com/
Gouvernance SOA : la phase de Run Time
Gouvernance Run Time basée sur les politiques
- Comment peut-on être sûr que les différents composants d’un service (WSDL, SLA, XSD, SOAP, etc.) sont utilisés comme prévu ?
- Comment gérer le flux des messages échangés par les services ?
- Comment déceler les problèmes de performance, de fiabilité et de sécurité ?
- le monitoring des contrats,
- la gestion des processus métier,
- l’implémentation de la sécurité des messages
- la gestion de la qualité (QoS).
- Les politiques de sécurité qui règlent les aspects de confidentialité, intégrité et contrôle d’accès, aussi bien au niveau de la couche de transport que de la couche des messages.
- Les politiques de routage permettant de gérer le flux des requêtes entrant et sortant pour garantir ainsi que les demandes adressées à un service sont en conformité aux politiques d’utilisation.
- Les politiques sur les niveaux de services qui concernent tous les aspects de la qualité d’un service comme la performance, la fiabilité, la disponibilité et le temps de réponse.
Gouvernance SOA : la phase de Design Time (5)
Gouvernance Design Time des SLA
Voir aussi : http://urbanisation-si.over-blog.com/
http://urbanisation-des-si.blogspot.fr/
http://urbanisation-si.eklablog.com/
Gouvernance SOA : la phase de Design Time (4)
Processus de développement et management des SLAs
- la disponibilité,
- la qualité,
- la performance des services
- la qualité du support et de la stratégie de communication.