SOA, oder serviceorientierte Architektur, definiert eine Möglichkeit, Softwarekomponenten über Serviceschnittstellen wiederverwendbar und interoperabel zu machen. Services verwenden gemeinsame Schnittstellenstandards und ein Architekturmuster, sodass sie schnell in neue Anwendungen integriert werden können. Dadurch wird der Anwendungsentwickler von Aufgaben entlastet, die er zuvor neu entwickeln oder bestehende Funktionen duplizieren musste, oder er musste wissen, wie er eine Verbindung oder Interoperabilität mit bestehenden Funktionen herstellen kann.
Jeder Service in einer SOA enthält den Code und die Daten, die zur Ausführung einer vollständigen, diskreten Geschäftsfunktion erforderlich sind (z. B. Prüfung der Kreditwürdigkeit eines Kunden, Berechnung einer monatlichen Kreditrate oder Bearbeitung eines Hypothekenantrags). Die Serviceschnittstellen bieten eine lose Kopplung, d. h. sie können mit wenig oder gar keinem Wissen darüber aufgerufen werden, wie der Service darunter implementiert ist, wodurch die Abhängigkeiten zwischen den Anwendungen verringert werden.
Diese Benutzerschnittstelle ist ein Servicevertrag zwischen dem Serviceanbieter und dem Servicekonsument. Anwendungen hinter der Serviceschnittstelle können in Java, Microsoft, Net, Cobol oder anderen Programmiersprachen geschrieben werden und werden durch einen Anbieter (z. B. SAP), SaaS-Anwendungen (z. B. Salesforce CRM) als gepackte Softwareanwendungen bereitgestellt oder als Open-Source-Anwendungen bezogen. Serviceschnittstellen werden häufig mithilfe der Web-Service Definition Language (WSDL) definiert, einer Standard-Tag-Struktur auf der Grundlage von XML (Extensible Markup Language).
Die Services werden über Standard-Netzprotokolle wie SOAP (Simple Object Access Protocol)/HTTP oder Restful HTTP (JSON/HTTP) bereitgestellt, um Anfragen zum Lesen oder Ändern von Daten zu senden. Die Service-Governance steuert den Lebenszyklus der Entwicklung, und in der entsprechenden Phase werden die Services in einer Registry veröffentlicht, die es den Entwicklern ermöglicht, sie schnell zu finden und für die Zusammenstellung neuer Anwendungen oder Geschäftsprozesse erneut zu nutzen.
Diese Services können von Grund auf neu erstellt werden, werden jedoch häufig durch die Bereitstellung von Funktionen aus traditionellen Systemen des Datensatzes als Serviceschnittstellen erstellt.
Auf diese Weise stellt SOA einen wichtigen Schritt in der Evolution der Anwendungsentwicklung und -integration der letzten Jahrzehnte dar. Bevor SOA in den späten 1990er Jahren entstand, erforderte die Verbindung einer Anwendung mit Daten oder Funktionen, die in einem anderen System untergebracht waren, eine komplexe Punkt-zu-Punkt-Integration – eine Integration, die Entwickler bei jedem neuen Entwicklungsprojekt ganz oder teilweise neu erstellen mussten. Die Bereitstellung dieser Funktionen durch SOA-Services ermöglichte es dem Entwickler, einfach die vorhandenen Funktionen wiederzuverwenden und eine Verbindung über die SOA-ESB-Architekturherzustellen (siehe unten).
Obwohl SOA und die neuere Microservices-Architektur viele Begriffe gemeinsam haben (z. B. „Service“ und „Architektur“), sind sie nur lose miteinander verwandt und agieren in der Tat in unterschiedlichen Bereichen, wie später in diesem Artikel erläutert wird.