Published by

Il y a 12 ans -

Temps de lecture 3 minutes

SOA : Du composant au service : L’abstraction

composant-service
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 :

  • Contrat standardisé : L’ensemble des services d’un même Système Technique sont exposés au travers de contrats respectant les mêmes règles de standardisation.
  • Couplage lâche : Le contrat d’un service doit imposer un couplage lâche de ses clients.
  • 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.

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’abstraction.

Le principe d’abstraction consiste à fournir les services du SI sur un modèle boîte noire.
Dans ce modèle, les seules informations accessibles aux consommateurs d’un service sont celles contenues dans son contrat. Ainsi, les concepteurs et développeurs d’un consommateur de service ne sont pas au courant de la façon dont est implémenté le service.
C’est pourquoi, nous l’avons vu, il est important d’assurer un couplage lâche des consommateurs aux services. Dans ce modèle, il est également très important d’assurer la prédictibilité d’un service : le comportement d’un service et la réponse qu’il donne à une requête ne doit pas varier. Cette prédictibilité du service est induite par le respect de son contrat.

Le principe d’abstraction promeut donc l’offuscation délibérée d’un ensemble de données relatives aux services exposés afin qu’un minimum d’information soit accessible aux consommateurs potentiels.

Ainsi, il est (par exemple) préférable de ne pas diffuser les détails de conception et d’implémentation d’un service et de proposer ici un accès contrôlé. Même, si les développeurs ayant le réflexe de se plonger dans le code source des plateformes qu’ils utilisent sont malheureusement trop rares, cette mesure encourage le positionnement des services en tant que ressources agnostiques et réutilisables. Elle contribue également à forger une relation de confiance entre producteurs et consommateurs de services ou tout du moins leur « impose » de dialoguer, ce qui ne peut pas être mauvais.

Published by

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.