La SOA, o service-oriented architecture, ossia architettura orientata ai servizi, definisce un modo per rendere i componenti software riutilizzabili e interoperabili mediante delle interfacce di servizio. I servizi utilizzano standard di interfaccia comuni e un modello architettonico tali da poter essere rapidamente incorporati in nuove applicazioni. Questo solleva da alcuni compiti lo sviluppatore di applicazioni che in precedenza ha sviluppato o duplicato la funzionalità esistente o doveva sapere come connettersi o fornire interoperabilità con le funzioni esistenti.
Ogni servizio in una SOA incorpora il codice e le integrazioni dei dati necessari per eseguire una funzione aziendale completa e discreta (ad esempio, il controllo del credito del cliente, il calcolo di un pagamento di un prestito mensile o l'elaborazione di un'applicazione ipotecaria). Le interfacce di servizio forniscono un legame debole, il che significa che possono essere chiamate con poca o nessuna conoscenza di come il servizio è implementato, riducendo le dipendenze tra le applicazioni.
Questa interfaccia è un contratto di servizio tra il fornitore del servizio e il consumatore del servizio. Le applicazioni che sono dietro l'interfaccia di servizio possono essere scritte in Java, Microsoft.Net, Cobol o qualsiasi altro linguaggio di programmazione, fornite come applicazioni software confezionate da un fornitore (ad esempio, SAP), applicazioni SaaS (come, ad esempio, Salesforce CRM), oppure ottenute come applicazioni open source. Le interfacce di servizio sono spesso definite usando i Web Service Definition Language (WSDL), una struttura tag standard basata su xml (extensible markup language).
I servizi vengono erogati usando protocolli di rete, come SOAP (simple object access protocol), HTTP o Restful HTTP (JSON/HTTP), per inviare richieste di lettura o modifica dei dati. La governance dei servizi controlla il ciclo di vita per lo sviluppo e nella fase appropriata i servizi sono pubblicati in un registro che permette agli sviluppatori di trovarli rapidamente e di riutilizzarli per assemblare nuove applicazioni o processi aziendali.
Questi servizi possono essere sviluppati partendo da zero ma spesso vengono creati esponendo funzioni da sistemi legacy di record come interfacce di servizio.
In questo modo, SOA rappresenta una tappa importante nell'evoluzione dello sviluppo e dell'integrazione delle applicazioni negli ultimi decenni. Prima che la SOA emergesse alla fine degli anni 90, il collegamento di un'applicazione a dati o funzionalità ospitate in un altro sistema richiedeva una complessa integrazione point-to-point, integrazione che gli sviluppatori dovevano ricreare, in parte o completamente, per ogni nuovo progetto di sviluppo. L'esposizione di queste funzioni attraverso i servizi SOA ha permesso allo sviluppatore di riutilizzare semplicemente la funzionalità esistente e collegarsi tramite l'architettura SOA ESB (vedi sotto).
Sebbene la SOA e la più recente architettura a microservizi, condividono molte parole in comune (ossia "servizio" e "architettura"), sono solo vagamente collegate e, infatti, operano in ambiti diversi, come discusso più avanti in questo articolo.