L'architecture orientée services ou AOS (calque de l'anglais service-oriented architecture, SOA) est une forme d'architecture de médiation qui est un modèle d'interaction applicative qui met en œuvre des services (composants logiciels) : avec une forte cohérence interne (par l'utilisation d'un format d'échange pivot, le plus souvent XML ou JSON) ; des couplages externes « lâches » (par l'utilisation d'une couche d'interface interopérable, le plus souvent un service web WS-*).

Ce terme est apparu au cours de la période 2000-2001Thomi Pilioura, Aphrodite Tsalgatidou, E-Services: Current Technology and Open Issues, Lecture Notes in Computer Science, Springer Berlin / Heidelberg, 2001 et concernait à l'origine essentiellement les problématiques d'interopérabilité syntaxique en relation avec les technologies d'informatique utilisées en entreprise. Cette conception a évolué pour désigner maintenant le sous-ensemble particulier d'architecture de médiation en fonction de la technologie disponible.

Dans la vie de tous les jours, un fournisseur offre un service à un client le consommant dans une relation de confiance établie entre les deux parties. En général, le client s’intéresse uniquement au résultat produit du service sans avoir le besoin ni le souci de savoir comment ce dernier est obtenu. La SOA suit ce même principe. Le service est une action exécutée par un « fournisseur » (ou « producteur ») à l'intention d'un « client » (ou « consommateur »), cependant l'interaction entre consommateur et producteur est faite par le biais d'un médiateur (qui peut être un bus) responsable de la mise en relation des composants. Le service étant à grandes mailles, il englobe et propose les fonctionnalités des composants du système. Ces systèmes peuvent aussi être définis comme des couches applicatives. L'architecture orientée services est une réponse aux problématiques que rencontrent les entreprises en termes de réutilisabilité, d'interopérabilité et de réduction de couplage entre les différents systèmes qui implémentent leurs systèmes d'information. Les SOA ou AOS ont été popularisées avec l'apparition de standards comme les Services Web dans le commerce en ligne (B2B, inter-entreprise, ou B2C, d'entreprise à consommateur), fondés sur des plates-formes comme Java EE ou .NET. Elles mettent en application une partie des principes d'urbanisation. Au sein de l'architecture orientée services, on distingue les notions d'annuaire, de bus, de contrat et de service, ce dernier étant le noyau et le point central d'une architecture orientée services. La déclinaison ou plus précisément la mise en œuvre de la SOA qui repose entièrement sur Internet est appelée la WOA (Web-oriented architecture).

Historique Au cours de la décennie 1980-1990, la problématique de l'interopérabilité des systèmes d'information, particulièrement complexe lors de la fusion ou de l'acquisition d'entreprises, a donné naissance au domaine de recherche de l'interopérabilité des données ; c'est à cette époque que l'on distingua l'interopérabilité syntaxique de l'interopérabilité sémantique des données. Ces recherches aboutirent aux systèmes multibases, aux développements des bases de données réparties et à l'architecture fédérée. En raison de nombreux problèmes insolubles, l'architecture fédérée fut pratiquement abandonnéeParent, P., Spaccapietra, S.: Intégration de bases de données: Panorama des problèmes et des approches. Ingénierie des Systèmes d'Information, Vol.4, No.3, 1996..

Les deux principales exigences fonctionnelles qui se sont dégagées au cours de cette période sont : Les différents producteurs d'information doivent pouvoir continuer à utiliser leur système de façon transparente. Par exemple, un trust réalisant une acquisition ne doit pas handicaper son nouveau membre en imposant un changement brutal de système informatique ; L'organisation doit pouvoir obtenir une synthèse de l'information produite par ses différents membres. Il s'agit ici d'information en lecture seule, la synthèse s'effectuant toujours du bas vers le haut.

Ces exigences fonctionnelles se cristallisèrent avec l'invention par Gio Wiederhold de l'architecture de médiation en 1990-1992Wiederhold, G.: Mediators in the architecture of future information systems. IEEE Computer Magazine, Vol. 25, No. 3, 3849, mars 1992 : Les usagers finaux sont séparés des sources de données par une couche de médiation (couche de services) permettant une synthèse dynamique de l'information ; Les différents médiateurs (services) peuvent communiquer entre eux pour transformer et combiner l'information provenant de différentes sources ; Les différents médiateurs (services) communiquent en utilisant un langage offrant une grande capacité d'expression sémantique et de transformation.

La recherche sur la médiation de données porta alors sur la création d'architecture générique comme le ARPA I3 où apparurent les cinq grandes familles de services (Adaptation, Transformation, Extension, Management et Coordination), le développement de langages à haute expressivité sémantique comme KQML et les outils de transformation sémantique de l'information comme les ontologiesThomas R. Gruber, Towards Principles for the Design of Ontologies Used for Knowledge Sharing in Formal Ontology in Conceptual Analysis and Knowledge Representation, Kluwer Academic Publishers, 1993.

Parallèlement, le développement de la technologie Web rendit progressivement les autres technologies d'informatique distribuée de moins en moins attrayantes. L'arrivée en 1996 d'XML provoqua un engouement pour ce langage dans le milieu de la recherche et les langages ad-hoc ou plus complexes comme KQML furent pratiquement abandonnés, du moins pour ce type d'architecture. L'industrie développa de nombreux produits sous l'impulsion de la recherche fondamentale, par exemple, on compte plus de 150 Ph.D. en ligne directe de Wiederhold., la plupart ayant participé activement au développement de cette technologie chez IBM, Oracle, Sun, Microsoft, Cisco, Samsung, LG, Bell Laboratories, Silicon Graphics, Kodak, Google, Napster et autres ; comme James Duncan Davidson qui fut le créateur de Tomcat (Java Servlet et JavaServer Pages) ainsi que de Ant. À la fin de la décennie 1990-2000, on trouvait un nombre considérable de ce type de technologies dont l'interopérabilité était parfois extrêmement problématique, du moins sans recette logicielle pour la réaliserT. Pilioura et A. Tsalgatidou, e-Services: Current Technologies and Open Issues, In Proc. of VLDB-TES 2001.

Concepts vignette|droite|Concepts des SOA. Une architecture orientée service se conforme à divers principes de gestion des services influençant directement le comportement intrinsèque d’une solution logicielle et le style de sa conception : L’encapsulation des services. Le faible couplage des services avec la maintenance d’une relation réduisant les dépendances. Le contrat de service adhère à un accord de communication, collectivement défini avec un ou plusieurs documents de description. L’abstraction des services dissimulant la logique du service à l’extérieur. La réutilisation des services partageant la logique entre plusieurs services avec l’intention de promouvoir la réutilisation. La composition des services. L’autonomie des services. L’optimisation des services. La découverte des services depuis leur description extérieure.

L’architecture orientée service représente un moyen technique d’intégration des divers systèmes d’information de l’entreprise considérant chaque ressource informatique comme un service. Elle permet de construire les buildings blocks qui composeront l'urbanisme du système d'information document : Urbanisme et Architecture de Patrick Gantet.

La notion d’interface est importante dans l’approche orientée service. En effet, elle représente le point d’entrée unique vers les fonctionnalités de la solution logicielle et assure la communication via l’échange de messages. Chaque message est porteur de la sémantique particulière à la solution logicielle. De plus ce message est rédigé dans un langage compréhensible aux deux parties en présence. Les services proposés d’une architecture agile décrivent la structure des messages qu’ils attendent du client.

L’architecture orientée service est une solution logicielle distribuée. Elle propose un mécanisme d’échange de messages sécurisé entre les systèmes d’informations sous-jacents en employant des protocoles de communication standardisés. Cette approche offre à l’architecture une opportunité d’ouverture sur un large éventail de solutions logicielles existantes.

Service vignette|droite|La définition des WebServices. Le service est un composant clef de l'architecture orientée services. Il consiste en une fonction ou fonctionnalité bien définie. C'est aussi un composant autonome qui ne dépend d’aucun contexte ou service externe. Il est divisé en opérations qui constituent autant d'actions spécifiques que le service peut réaliser. On peut faire un parallèle entre opérations et services d'une part, et méthodes et classes dans le mode orienté objet d'autre part.

Une architecture orientée services consiste essentiellement en une collection de services qui interagissent et communiquent entre eux. Cette communication peut consister en un simple retour de données ou en une activité (coordination de plusieurs services).

Un service est une entité de traitement qui respecte les caractéristiques suivantes : Large granularité () : les opérations proposées par un service encapsulent plusieurs fonctions et opèrent sur un périmètre de données large au contraire de la notion de composant technique. Interface : un service peut implémenter plusieurs interfaces, et aussi plusieurs services peuvent implémenter une interface commune. Localisable : avant d’appeler () un service, il faudra le trouver (). Instance unique : à la différence des composants qui sont instanciés à la demande et peuvent avoir plusieurs instances en même temps, un service est unique. Il correspond au design pattern Singleton. Couplage faible () : les services sont connectés aux clients et aux autres services via des standards. Ces standards assurent le découplage, c'est-à-dire la réduction des dépendances. Ces standards sont des documents XML comme dans les web services. Synchrone ou asynchrone.

Une déclinaison du service est par exemple le service Web qui utilise WSDL (un métalangage XML) comme langage de description, un annuaire UDDI pour en permettre la localisation et un protocole de transport comme HTTP dans l'architecture REST et SOAP pour l'architecture SOA.

Il existe une hiérarchie des services correspondant aux différentes couches techniques de l'architecture d'une solution : Les services de présentations ou de référencement vers les informations affichées et les formulaires de saisies de données. Les processus métiers composés de tâches décrites et faisant appel éventuellement à d’autres services. Les services de gestion et d’accès aux bases de données. Les services d’intégration chargés de la messagerie ou de l'échange de données tant à l’intérieur que vers l’extérieur comme la gestion des courriers électroniques.

Annuaire de services L'annuaire de services référence l'ensemble des services (et des contrats associés) disponibles au sein du SI, il participe à la mise en œuvre d'une cartographie du SI. Dans un modèle de bus, l'annuaire peut être autoalimenté par le service (enregistrement). Les annuaires UDDI forment aujourd'hui le standard de référencement des services.

Implémentations basées sur SOA Bus de service L'implémentation la plus commune de SOA est celle basée sur un bus de services. Ce bus a un rôle de médiateur (middleware) entre le consommateur et le producteur du service, il permet ainsi de réaliser le couplage lâche. Le bus peut aussi fournir une gamme de services :