Un service est un composant logiciel distribué, exposant les fonctionnalités d’un domaine métier. Cette définition, la plus synthétique possible d’un service, peux être accompagnée de ces 8 caractéristiques proposées par Thomas Erl dans son livre « SOA Principles of Service Design » :
- Contrat standardisé
- Couplage lâche
- Abstraction
- Réutilisabilité
- Autonomie
- Sans état
- Découvrabilité
- Composabilité
Le but de ce style d’architecture apparu dans les années 2000 est de fournir au système d’information un cadre d’écriture de composant logiciel :
- Réutilisable
- Évolutif
- Urbanisé autour de domaines fonctionnels
- Modulaire
Pour mettre en œuvre cette architecture SOA, les entreprises ont rapidement adoptés le format Webservices au travers du protocole SOAP et du langage de description WSDL. Celui-ci permet la description des services et SOAP définit le protocole d’échange entre un client et un fournisseur de service, le plus souvent au-dessus du protocole HTTP.
Présentation de SOAP
SOAP (Simple Object Access Protocol) est un protocole définit à l’origine par Microsoft, puis standardisé par le W3C, utilisant la notation XML et permettant de définir les mécanismes d’échanges d’information entre des clients et des fournisseurs de services web.
Présentation de WSDL
Le standard WSDL (Web Service Description Language) est un langage reposant sur la notation XML permettant de décrire les services web. WSDL permet ainsi de décrire l’emplacement du service web ainsi que les opérations (méthodes, paramètres et valeurs de retour) que le service propose.
Les principaux avantages de ce protocole sont :
- L’indépendance vis à vis du langage de programmation.
- L’indépendance vis à vis de la plateforme où ils sont déployés.
- Son extensibilité.
- L’utilisation du standard XML pour l’échange des messages.
- Contrat personnalisé entre le fournisseur et le consommateur du service.
- SOAP est indépendant de la couche de transport puisqu’il l’a redéfini. HTTP est le protocole de transport le plus largement utilisé par SOAP.
Cette façon de mettre en œuvre une SOA s’est souvent faite en utilisant un composant central de médiation entre clients et services : l’ESB, Entreprise Service Bus. Le rôle de ce composant est de :
- Découpler consommateurs et fournisseurs de services : abstraction des protocoles de communications, des langages.
- Tracer les échanges.
- Agréger les services.
- Mutualiser les accès : gestion des droits, transformation des données.
Cette façon d’implémenter une SOA est majoritaire en entreprise mais la complexité de la mise en œuvre de SOAP et la verbosité du protocole, entre autre, ont favorisé l’apparition d’une autre façon d’implémenter une SOA, basée sur les travaux de Roy Fielding.
Sa thèse « Architectural Styles and the Design of Network-based Software Architectures. » publié en 2000 et notamment son travail sur REST ont favorisé l’émergence d’une nouvelle manière de mettre en œuvre une architecture de service que je vous présente dans cet article :