Une architecture orientée services (Services Oriented Architecture, SOA) est une architecture logicielle s'appuyant sur un ensemble de services (composants logiciels).
L'objectif d'une architecture orientée services est de décomposer une fonctionnalité en un ensemble de fonctions basiques, appelées services, fournies par des composants et de décrire finement le schéma d'interaction entre ces services.
L'idée sous-jacente est de cesser de construire la vie de l'entreprise autour d'applications pour faire en sorte de construire une architecture logicielle globale décomposées en services correspondant aux processus métiers de l'entreprise.
Lorsque l'architecture SOA s'appuie sur des web services, on parle alors de WSOA, pour Web Services Oriented Architecture).Les principaux avantages d'une architecture orientée services :
- Une modularité permettant de remplacer facilement un composant (service) par un autre- Une réutilisabilité possible des composants (par opposition à une système tout-en-un fait sur mesure pour une organisation).
- De meilleures possibilités d'évolution (il suffit de faire évoluer un service ou d'ajouter un nouveau service)
- Une plus grande tolérance aux pannes
- Une maintenance facilitée
L'architecture orientée services est une réponse très efficace 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 architectures SOA ou AOS ont été popularisées avec l'apparition de standards comme les Services Web dans l'e-commerce (commerce électronique) (B2B, inter-entreprise, ou B2C, d'entreprise à consommateur), basés sur des plates-formes comme J2EE 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 l'implémentation de la SOA avec des WebService est la WSOA (WebService Oriented Architecture).
Les architectures SOA reposent principalement sur l’utilisation d’interface d’invocation (SOAP, Simple Object Access Protocol) et de vocabulaire de description de données (WSDL, Web Services Description Language et XML, eXtensible Markup Language) qui doivent être communs à l’ensemble des agents (fournisseurs de services et utilisateurs de services).
Ce dispositif permet de réutiliser les applicatifs métiers, le but étant de permettre à l’entreprise de s’adapter rapidement à un nouveau contexte de marché.
En terme d'intéropérabilité, les architectures SOA reposent en partie sur les normes décrites à travers le WS-I.
Parmi les différentes couches de normes et protocoles qui permettent de bâtir de telles architectures, on relève :
- la gestion d'un annuaire de services (quels sont les services mis à disposition et par qui) avec : UDDIUniversal Description Discovery and Integration) normalisé par l'OASIS, (- la description des interfaces des services (quelles sont les données nécessaires à l'exécution du service, que fournit-il en retour, ...) avec : WSDL recommandé par le W3C,
- l'invocation (ou l'appel) du service (la requête transmise au service) avec : SOAP recommandé par le W3C,
- le format des données échangées avec : XML recommandé par le W3C,
- et enfin, le transport des données avec les protocoles internet : HTTP et TCP/IP qui sont des normes RFC.