Serviceorientierte Architektur (SOA, englisch service-oriented architecture), auch dienstorientierte Architektur, ist ein Architekturmuster der Informationstechnik aus dem Bereich der verteilten Systeme, um Dienste von IT-Systemen zu strukturieren und zu nutzen. Eine besondere Rolle spielt dabei die Orientierung an Geschäftsprozessen, deren Abstraktionsebenen die Grundlage für konkrete Serviceimplementierungen sind. Durch Zusammensetzen (Orchestrierung) von Services niedriger Abstraktionsebenen können so recht flexibel und unter Ermöglichung größtmöglicher Wiederverwendbarkeit Services höherer Abstraktionsebenen geschaffen werden.
Allgemeines
Vereinfacht kann SOA als Methode bzw. Paradigma angesehen werden, die vorhandenen EDV-Komponenten wie Datenbanken, Server und Websites in Dienste zu kapseln und dann so zu koordinieren („Orchestrierung“), dass ihre Leistungen zu höheren Diensten zusammengefasst und anderen Organisationsabteilungen oder Kunden zur Verfügung gestellt werden können. Maßgeblich sind also nicht technische Einzelaufgaben wie Datenbankabfragen, Berechnungen und Datenaufbereitungen, sondern die Zusammenführung dieser IT-Leistungen zu „höheren Zwecken“ – wie Ausführen einer Bestellung oder Prüfen der Rentabilität einer Abteilung usw. –, die eine Organisationsabteilung anbietet.
Bei SOA handelt es sich somit um eine Struktur, welche die Unternehmensanwendungsintegration ermöglicht, indem die Komplexität der einzelnen Anwendungen („Applications“) hinter den standardisierten Schnittstellen verborgen wird.
Ziele sind hierbei die langfristige Senkung von Kosten in der Softwareentwicklung und eine höhere Flexibilität der Geschäftsprozesse durch Wiederverwendung bestehender Services. Die Kosten der Programmierung der x-ten mit SOA realisierten Anwendung sollen entfallen, da bereits alle nötigen Services vorhanden seien und diese nur noch orchestriert werden müssten. Es verblieben somit nur die Kosten für die Businessanalyse und Softwarekonfiguration.
SOA erfordert eine sehr starke Integration der einzelnen IT-Komponenten, damit deren Orchestrierung kostengünstig gelingen kann. SOA spielt somit bereits bei der Auswahl von IT-Komponenten eine Rolle.
Eine technische Form der Umsetzung von SOA ist das Anbieten dieser Dienste im Internet oder in der Cloud. Die Kommunikation zwischen solchen angebotenen Diensten kann über SOAP, REST, XML-RPC oder ähnliche Protokolle erfolgen. Der Nutzer dieser Dienste weiß nur, dass der Dienst angeboten wird, welche Eingaben er erfordert und welcher Art das Ergebnis ist. Details über die Art und Weise der Ergebnisermittlung müssen nicht bekannt sein.
Definition
„SOA ist ein Paradigma für die Strukturierung und Nutzung verteilter Funktionalität, die von unterschiedlichen Besitzern verantwortet wird.”
Zentrales Thema aller Definitionen sind die Dienste. Im Folgenden werden die idealtypischen Eigenschaften von Diensten in einer SOA aufgeführt. In der Praxis werden nicht alle dieser Anforderungen vollständig eingehalten.
- Ein Dienst ist eine IT-Anwendung
- Ein Dienst ist in einem Netzwerk verfügbar.
- Ein Dienst hat eine wohldefinierte veröffentlichte Schnittstelle.
- Ein Dienst ist plattformunabhängig, d. h. Anbieter und Nutzer eines Dienstes können in unterschiedlichen Programmiersprachen auf verschiedenen Plattformen realisiert sein.
- Ein Dienst ist in einem Verzeichnis registriert.
- Ein Dienst ist in sich abgeschlossen (autark) und kann eigenständig genutzt werden.
- Ein Dienst ist dynamisch gebunden, d. h. bei der Erstellung einer Anwendung, die einen Dienst nutzt, braucht der Dienst nicht vorhanden zu sein. Er wird erst bei der Ausführung lokalisiert und eingebunden.
- Ein Dienst sollte grobgranular sein, um die Abhängigkeit zwischen verteilten Systemen zu senken.
Abschließend ist anzumerken, dass es „die SOA“ nicht gibt; SOA ist vielmehr nur eine Sichtweise, die auf verschiedene Arten interpretiert werden kann.
Abgrenzung
SOA ist nicht ein Webservice! SOA beschreibt eigenständig von vorgegebenen Implementierungsmethoden und -techniken ein Architekturparadigma.
- SOA ist nicht neu – eine serviceorientierte Architektur konnte auch schon Jahre vor der Einführung des Begriffes mit den damals vorhandenen Methoden und Verfahren umgesetzt werden und fand unter anderem 1991 mit CORBA ihre Anwendung.
- SOA ist keine Lösung für fachliche Probleme – als Architekturparadigma gibt SOA keine Empfehlung zur Behandlung von fachlichen Problemen. Siehe hierzu auch den Abschnitt Kritik.
- SOA ist individuell – es gibt keine „Standard-SOA“. Ein Unternehmen muss eine SOA immer auf die eigenen Bedürfnisse zuschneiden.
Der Begriff “Serviceorientierte Architektur” ist in das folgende Umfeld einzuordnen:
- Prozessmanagement (auch Geschäftsprozessmanagement, GPM): Die Definition der Prozesse des Business, die durch die IT unterstützt werden.
- IT-Service-Management (ITSM): Methoden, die nötig sind, um die bestmögliche Unterstützung von Geschäftsprozessen (GP) durch die IT-Organisation zu erreichen. Der hier bekannte De-facto-Standard ist die IT Infrastructure Library (ITIL).
Aufwand und Probleme
- SOA unterliegt zurzeit dem Begriffsmissbrauch durch Marketingabteilungen, die ihren Kunden durch Einführung von SOA die Lösung aller bisherigen Probleme versprechen. Wie unter Abgrenzung aber beschrieben, ist SOA weder eine Lösung für fachliche Probleme in Unternehmen, noch gibt es eine „standardisierte“ SOA, die man einem Unternehmen als solches verkaufen könnte. Sind fachliche Probleme vorhanden, wird die Einführung von SOA aus genannten Gründen mit höchster Wahrscheinlichkeit scheitern.
- SOA generiert durch die Arbeit, die in die Entkopplung von Diensten gesteckt werden muss, einen höheren Aufwand als bisherige monolithische Programmstrukturen.
- SOA erzeugt im Code wesentlich komplexere Abläufe, was das Schreiben von Protokolldateien („logging“) und die Fehlersuche („debugging“) deutlich erschwert. Ebenso sind Tests zwangsläufig wesentlich komplexer.
- SOA setzt für die beteiligten Entwickler ein erhebliches Know-how voraus. Somit sind Entwickler auch nicht so einfach ersetzbar, und die Abhängigkeit der Unternehmen von einzelnen Entwicklern steigt deutlich.
- SOA wird zumeist mit Diensten realisiert, die in irgendeiner Form per XML miteinander kommunizieren, was vom hohen Standardisierungsgrad und der Plattformunabhängigkeit dieser Auszeichnungssprache herrührt. Da XML für die Analyse und Nutzung im Programmablauf beim aktuellen Stand der Technik aber deutlich mehr Rechenzeit und in der Übertragung ein höheres Datenvolumen in Anspruch nimmt als ein herkömmlicher Funktionsaufruf, entsteht hier ein zusätzlicher Aufwand („overhead“), der entsprechende Kosten verursacht.
Quellenhinweise: