Réussir votre SOA : Un guide pratique en 10 questions (3/3)
... la suite du billet précédent Un guide pratique en 10 questions (2/3) 6 ) Comment faciliter la réutilisation d’un service?
5 principales actions peuvent être envisagées pour faciliter et favoriser la réutilisation des services : 1) Prévoir un référentiel pour regrouper et décrire tous les contrats d'interface existants: Il n'y pas d'outil idéal. Selon le nombre de services et le budget dont on dispose, les solutions suivantes peuvent être envisagées :
- Un simple gestionnaire de contenu (de type wiki): généralement utilisé pour regrouper la description de tous les contrats de services et utilisé en phase de développement.
- Un UDDI (Universal Description Discovery and Integration) : même si la valeur ajoutée de ces solutions reste à prouver, ils peuvent être utilisées comme "repository" de services en phase de développement, ou comme "registry" en phase d'exécution (runtime).
Prévoir un dictionnaire de synonymes pour l'entreprise pour faciliter la réutilisation des services entre les différentes entités : Parfois, la description des champs des contrats d'interface n'est pas forcément compréhensible à toutes les entités de l'entreprise, ce qui peut avoir un impact sur la compréhension du contrat et par conséquent sur sa réutilisation.
Faciliter la testabilité du service : Fournir une plateforme de tests des services permet de rendre les services plus accessibles pour le client en lui permettant de bien valider son adéquation avec ses besoins en toute autonomie.
Prévoir plusieurs niveaux de traçabilité (Ex : DEBUG, INFO, etc.) activables et désactivables selon le besoin (en développement ou en exploitation) : Cela permet d'effectuer des analyses approfondies en cas de problèmes et d'augmenter le degré de confiance du ré-utilisateur du service.
Communiquer, communiquer et communiquer autour des services existants, et partager les expériences.
7 ) Comment gérer le cycle de vie d’un service L'article suivant traite cette problématique avec les principes d'architecture qui lui sont associés: Versioning des services : principes et éléments d’architecture…
8 ) Quel style architectural choisir ? (SOAP-RPC ou REST ?) Le tableau suivant synthétise, selon les cas d'utilisation, le style architectural adéquat:
(Pour plus de lisibilité, merci de cliquer sur le tableau)
9 ) Comment sécuriser les Web services ? Deux modes de sécurisation des web services existent: - Sécurisation applicative : en implémentant des mécanismes d'authentification des clients par le fournisseur de service ou en s'appuyant sur des standards, comme la stack WS-Security, WS-Trust, etc. - Sécurisation Hardware : par le déploiement de boîtiers réseaux (exemple WebSphere DataPower) qui permettent notamment de:
- Virtualiser les services : masquer les ressources d'arrière-plan afin de cacher les structures internes - Jouer le rôle d'un firewall en filtrant le contenu XML selon des règles pré-configurées - Implémenter XML encryption et digital signature - Contrôler l'accès aux services web - Valider les données par rapport à des schémas XML et protège les application des attaques DoS (Denial of Service)
10) ...et pour conclure? Au delà de ce guide pratique, il est important de prendre en considération les aspects organisationnels et de gouvernance des services, sujets sur lesquels on s'étalera dans d'autres articles. La conjugaison de tous ces facteurs fait qu'on réussisse ou pas la mise en œuvre d'une plateforme de services.