Eine serviceorientierte Architektur (SOA) ist ein Architekturkonzept, bei dem feste Abhängigkeiten zwischen Bestandteilen eines Softwaresystems dadurch verringert werden, dass Funktionen als eigenständige Dienste (Services) mit klar definierten Schnittstellen angeboten und je nach Bedarf zu neuen Anwendungen kombiniert werden.
Auch genannt: SOA, dienstorientierte Architektur, Service-oriented Architecture
Statt eine riesige Anwendung zu bauen, in der alles miteinander verwoben ist, zerlegt man die Fähigkeiten eines Unternehmens in Bausteine wie „Kunden prüfen“, „Rechnung erstellen“ oder „Lagerbestand abfragen“. Jeder Baustein ist ein Dienst, den andere Systeme nutzen können, ohne zu wissen, wie er innen aufgebaut ist. Wie mit Bauklötzen lassen sich daraus neue Abläufe zusammensetzen.
Jeder Dienst bietet bestimmte Fähigkeiten an und beschreibt in einem Vertrag, wie er genutzt werden kann: welche Eingaben er erwartet und welche Ergebnisse er liefert. Dienste sind lose gekoppelt, das heißt, sie kennen einander nur über diese Schnittstellen und können unabhängig weiterentwickelt oder ausgetauscht werden. Zur Verzeichnung und Verknüpfung dienen häufig eine Dienstebeschreibung und eine Integrationsschicht, über die Aufrufe vermittelt, Formate umgewandelt und Abläufe gesteuert werden. Die Kombination mehrerer Dienste zu einem größeren Ablauf nennt man Orchestrierung. SOA ist ein Architekturprinzip und nicht an eine bestimmte Technik gebunden.
Ein Versicherer stellt „Kundendaten abrufen“ als zentralen Dienst bereit. Die Vertragsverwaltung, das Kundenportal und die Schadenbearbeitung nutzen denselben Dienst, statt je eine eigene Kopie der Logik zu pflegen. Ändert sich die Datenhaltung, wird nur der Dienst angepasst – die Systeme, die ihn aufrufen, bleiben unverändert.
SOA wird eingesetzt, um Altsysteme und neue Anwendungen in Unternehmen zu verbinden, Funktionen wiederzuverwenden und Geschäftsprozesse flexibel an veränderte Anforderungen anzupassen. Besonders in großen Organisationen mit vielen gewachsenen Systemen dient sie als Ordnungsrahmen für die Integration. Das Prinzip bildet außerdem die gedankliche Grundlage vieler späterer Architekturansätze, in denen Software aus kleinen, verbundenen Diensten besteht.
SOA ist kein Produkt, das man kauft, sondern ein Konzept, das Planung und Disziplin verlangt, etwa bei der Schnittstellengestaltung und der Verantwortung für Dienste. Ohne klare Governance kann eine Vielzahl von Diensten unübersichtlich werden. Häufig wird SOA mit einer bestimmten Technik wie Web-Services gleichgesetzt, obwohl diese nur eine mögliche Umsetzung darstellen. Auch ist sie nicht automatisch schneller oder günstiger: Der Nutzen entsteht vor allem durch Wiederverwendbarkeit und Flexibilität, nicht durch Geschwindigkeit.
Nicht zu verwechseln mit einer Application Programming Interface, die eine einzelne konkrete Schnittstelle beschreibt, während SOA das übergeordnete Architekturprinzip ist. Ebenso zu unterscheiden von Business Process Management, das Geschäftsprozesse fachlich steuert und verbessert, und von Cloud Computing, das ein Betriebs- und Bereitstellungsmodell für IT-Ressourcen ist und keine Architekturform.