L'architecture SOA définit un moyen de rendre les composants logiciels réutilisables et interopérables grâce à des interfaces de services. Les services utilisent des normes d'interface communes et un modèle architectural, de sorte qu'ils peuvent être rapidement incorporés dans de nouvelles applications. Cela libère le développeur d'applications qui, auparavant, redéveloppait ou dupliquait la fonctionnalité existante ou devait savoir comment se connecter ou assurer l'interopérabilité avec les fonctions existantes.
Chaque service d'une architecture SOA comprend le code et les données nécessaires à l'exécution d'une fonction métier complète et distincte (par exemple, la vérification de la solvabilité d'un client, le calcul d'une mensualité de prêt ou le traitement d'une demande de prêt immobilier). Les interfaces de service fournissent un couplage lâche, ce qui signifie qu'elles peuvent être appelées sans savoir comment le service est mis en œuvre en dessous, ce qui réduit les dépendances entre les applications.
Cette interface est un contrat de service entre le fournisseur de services et le consommateur de service. Les applications derrière l'interface de service peuvent être écrites en Java, Microsoft .Net, Cobol ou tout autre langage de programmation. Elles peuvent être fournies sous forme d'applications logicielles intégrées par un fournisseur (par exemple SAP), d'applications SaaS (par exemple Salesforce CRM) ou obtenues sous forme d'applications open source. Les interfaces de service sont souvent définies à l'aide du langage de définition de service Web (WSDL), qui est une structure de balises standard basée sur le langage XML (Extensible Markup Language).
Les services sont exposés à l'aide de protocoles réseau standard, tels que SOAP (protocole d'accès simple à un objet)/HTTP ou Restful HTTP (JSON/HTTP), pour envoyer des demandes de lecture ou de modification de données. La gouvernance des services contrôle le cycle de vie du développement et, au stade approprié, les services sont publiés dans un registre qui permet aux développeurs de les trouver rapidement et de les réutiliser pour assembler de nouvelles applications ou de nouveaux processus d'entreprise.
Ces services peuvent être créés complètement, mais ils sont souvent créés en exposant les fonctions des systèmes d'enregistrement existants sous forme d'interfaces de service.
Ainsi, la SOA représente une étape importante dans l'évolution du développement et de l'intégration des applications au cours des dernières décennies. Avant l'apparition de la SOA à la fin des années 1990, la connexion d'une application à des données ou à des fonctionnalités hébergées dans un autre système nécessitait une intégration point à point complexe ; une intégration que les développeurs devaient recréer, en partie ou en totalité, pour chaque nouveau projet de développement. L'exposition de ces fonctions par le biais des services SOA a permis au développeur de simplement réutiliser la capacité existante et de se connecter par le biais de l' architecture ESB SOA (voir ci-dessous).
Il convient de noter que bien que l'architecture SOA et l'architecture de microservices , plus récente, aient de nombreux mots en commun (par exemple, « service » et « architecture »), elles ne sont que vaguement liées et opèrent en réalité à des échelles différentes, comme nous le verrons plus loin dans cet article.