| Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. |
Serviceorientierte Architektur (SOA), engl. service-oriented architecture, auch dienstorientierte Architektur, ist ein Ansatz der Informationstechnik aus dem Bereich der verteilten Systeme, um Dienste von Mitarbeitern und Organisationen zu strukturieren und zu nutzen. Eine besondere Rolle spielt dabei die Orientierung an Geschäftsprozessen, deren Abstraktionsebenen die Grundlage für konkrete Serviceimplementierungen sind: „Vergib einen Kredit“ ist beispielsweise auf einer hohen Ebene angesiedelt, dahinter verbirgt sich bei einem Bankunternehmen ein Geschäftsprozess mit einigen beteiligten Personen und informationstechnischen Systemen („Eröffnen der Geschäftsbeziehung“, „Eröffnen eines oder mehrerer Konten“, „Kreditvertrag...“ und so weiter), während „Trag den Kunden ins Kundenverzeichnis ein“ ein Dienst auf einer niedrigeren Ebene ist. Durch Zusammensetzen (Orchestrierung) von Services niedriger Abstraktionsebene können so recht flexibel und unter Ermöglichung größtmöglicher Wiederverwendbarkeit Services höherer Abstraktionsebenen geschaffen werden.
Vereinfacht könnte man SOA als Methode ansehen, die vorhandenen EDV-Komponenten wie Datenbanken, Server und Websites so in Dienste zu kapseln und dann 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.
Ziel ist hierbei das langfristige Senken von Kosten in der Softwareentwicklung (Die Kosten der n-ten mit SOA realisierten Anwendung gehen gegen null, da bereits alle nötigen Services vorhanden sind und diese nur noch orchestriert werden müssen) sowie das Erreichen einer höheren Flexibilität der Geschäftsprozesse durch Wiederverwendung bestehender Services, was für Unternehmen im heutigen Geschäftsumfeld von essentieller Natur ist.
SOA erfordert eine sehr starke Integration der einzelnen IT-Komponenten, damit deren Orchestrierung kostengünstig gelingt. SOA spielt somit bereits bei der Auswahl von IT-Komponenten eine Rolle.
Eine technische Umsetzung von SOA ist das Anbieten dieser Dienste im Internet. Die Kommunikation zwischen solchen im Internet angebotenen Diensten kann über SOAP, REST 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.
Welche Dienste nutzbar sind und wie sie angesteuert werden kann durch einen Verzeichnisdienst wie UDDI in Erfahrung gebracht werden.
Inhaltsverzeichnis |
Der Begriff „serviceorientierte Architektur“ wurde 1996 von dem Marktforschungsunternehmen Gartner erstmalig genutzt.[1] Gartner gilt daher als Erfinder der SOA. Es gibt keine allgemein akzeptierte Definition von SOA. Dennoch wird häufig die Definition von der OASIS aus dem Jahr 2006 zitiert:
„SOA ist ein Paradigma für die Strukturierung und Nutzung verteilter Funktionalität, die von unterschiedlichen Besitzern verantwortet wird.[2]“
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.[3]
Als Beispiel für einen Geschäftsprozess dient die Bestellung eines Kunden bei einem Versandhändler. Bei diesem gibt es folgende Prozessschritte:
Für jeden Geschäftsprozessschritt gibt es einen Dienst. Die Implementierung – Programmiersprache, Systemvoraussetzungen usw. – kann unterschiedlich sein. Auch können die Dienste auf unterschiedlichen Systemen, sogar in unterschiedlichen Unternehmen implementiert sein. So könnte die Zahlungsfähigkeit des Kunden von einem Finanzdienstleister ermittelt werden oder die diversen Logistikdienste werden von einem Logistikdienstleister erbracht. Schlüsselinformationen wie Kundennummer oder Artikelnummer werden den Diensten von der Infrastruktur zur Verfügung gestellt, so weit diese jeweils gebraucht werden.
Die Abfolge muss nicht so sequentiell erfolgen wie dargestellt. Im Gegenteil, die meisten Geschäftsprozessschritte können scheitern. Mangelnder Bestand, fehlende Bonität und ausbleibender Zahlungseingang führen zu Verzweigungen, die entsprechend abweichende Vorgehensweisen erfordern. Auch die gleichzeitige Verarbeitung mehrerer Geschäftsprozessschritte – beispielsweise Versand und Rechnungsstellung – ist möglich.
Wichtig ist jedoch, dass beispielsweise die Bonitätsprüfung immer dieselbe ist, auch wenn sie von unterschiedlichsten Prozessen oder sogar Firmen genutzt wird. Damit werden wichtige Ziele von SOA wie zum Beispiel leichtere Pflegbarkeit, bessere Durchgängigkeit und mehr Einheitlichkeit erreicht: Ein einmal implementierter Dienst kann auf Dauer erhalten bleiben, er muss nicht immer wieder angefasst werden, wenn sich Geschäftsprozesse ändern, wodurch Aufwand gespart und Fehler vermieden werden.
Entscheidet sich das Unternehmen, die Bonitätsprüfung in andere Hände zu legen, so muss die Infrastruktur diesen Dienst nur bei einem anderen Anbieter aufrufen. Sonst ändert sich nichts weiter.
Eine Implementierung einer SOA basiert wesentlich auf Entscheidungen über die Kommunikation und Integration zwischen Dienstgebern (auch: Dienstanbieter) und Dienstnehmern (auch: Dienstnutzer, Dienstkonsument) sowie der Abbildung von Geschäftsprozessen.
Für die Kommunikation zwischen Dienstnutzer und -anbieter können beliebige Netzwerkprotokolle genutzt werden. Häufig werden Webservices, REST oder Message Queueing eingesetzt. Auch die Verwendung älterer Protokolle wie IIOP, DCOM, DCE oder SNA ist möglich.
Die Integration einzelner Dienste kann in einer SOA über Punkt-zu-Punkt-Verbindungen oder einem Hub and Spoke-Ansatz erfolgen. Bei Punkt-zu-Punkt-Verbindungen wird eine Verbindung zwischen Dienstgeber und -nutzern individuell entworfen, entwickelt und administriert. Beim Hub-and-Spoke-Ansatz vermittelt eine neutrale Stelle zwischen Dienstanbietern und Dienstnehmern. Im SOA-Umfeld werden solche Vermittler als Enterprise Service Bus (ESB) bezeichnet.
Die Abbildung von Geschäftsprozessen kann speziell entwickelt werden oder einen Standard wie BPEL nutzen. In BPEL beschriebene Prozesse sind auf geeigneten Plattformen direkt ausführbar. Die BPEL eignet sich damit zur technischen Implementierung von Geschäftsprozessen bzw. zur Definition der Orchestrierung von Diensten. Im Jahr 2007 bildeten viele SOA-Implementierungen die Geschäftsprozesse durch speziell dafür entwickelte Anwendungen ab. Langfristig wird erwartet, dass sich BPEL für die Abbildung der Geschäftsprozesse durchsetzt[3].
Bei der Implementierung wird das SOA-Paradigma in der Regel ab einem bestimmten Punkt durchbrochen; die einzelnen Dienste der SOA werden dann durch reine Clients wie beispielsweise Webbrowser angesprochen, die an sich nicht mehr Teil der SOA sind.
Durch das Ausmaß an Beeinflussung bestehender Organisationsstrukturen und Geschäftsprozesse, hängt die Einführung einer serviceorientierten Architektur maßgeblich von der Unterstützung und Mitarbeit der Belegschaft und vor allem des Managements ab. Durch seine größere Komplexität gegenüber monolithischen Programmstrukturen, erfordert die Entwicklung einer SOA einen höheren Initialaufwand und spielt ihre Einsparungen erst dann aus, wenn grundlegende Services bereits existieren und in breiteren Anwendungsgebieten eines Unternehmes genutzt werden können. Die Einführung für ein einzelnes Projekt in der Hoffnung dieses zu verbessern, ist durch die höhere Komplexität von Natur aus zum Scheitern verurteilt.
Die Aktivitäten, Entscheidungen, Rollen und Verantwortlichkeiten zur Regulierung und Kontrolle einer serviceorientierten Architektur werden als SOA-Governance bezeichnet. Innerhalb der SOA-Governance werden die Regeln einer SOA erarbeitet und überwacht. Wichtig ist hier, dass SOA allenfalls den ersten Schritt hin zu einem neuen Businesssystem darstellt, für das Vorstellungen und Regeln unter Einbezug der SOA entworfen werden sollten.
Der Begriff serviceorientierte Architektur ist in das folgende Umfeld einzuordnen:
Die Interaktion zwischen Dienstanbieter und Dienstnehmer läuft nach dem Paradigma von (publish or register), find, bind, execute, zu deutsch: (veröffentlichen oder registrieren), finden, binden, ausführen, ab.[4]