Serviceorientierte Architektur

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Serviceorientierung)
Zur Navigation springen Zur Suche springen

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: „Vergib einen Kredit“ ist beispielsweise auf einer hohen Ebene angesiedelt, dahinter verbirgt sich bei einem Bankunternehmen ein Geschäftsprozess mit mehreren beteiligten Personen und informationstechnischen Systemen („Eröffnen der Geschäftsbeziehung“, „Eröffnen eines oder mehrerer Konten“, „Kreditvertrag...“ und so weiter), während „Trage den Kunden ins Kundenverzeichnis ein“ ein Dienst auf einer niedrigeren Ebene ist. 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.

Vereinfacht kann SOA als Methode bzw. Paradigma angesehen werden, die vorhandenen IT-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 n-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.

Welche Dienste nutzbar sind und wie sie angesteuert werden, kann durch einen Verzeichnisdienst wie UDDI in Erfahrung gebracht werden.

Struktur und Elemente von SOA

Der Begriff „serviceorientierte Architektur“ wurde 1996 von dem Marktforschungsunternehmen Gartner erstmals genutzt.[1] Gartner gilt daher als Erfinder des Begriffs SOA. Es gibt keine allgemein akzeptierte Definition von SOA. Dennoch wird häufig die Definition der OASIS aus dem Jahr 2006 zitiert:

„a paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains“[2]

„SOA ist ein Paradigma für die Strukturierung und Nutzung verteilter Funktionalität, die von unterschiedlichen Besitzern verantwortet wird.“[3]

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.[4]

  • Ein Dienst ist eine IT-Repräsentation von fachlicher Funktionalität.[5]
  • Ein Dienst ist in sich abgeschlossen (autark) und kann eigenständig genutzt werden.
  • Ein Dienst ist in einem Netzwerk verfügbar.
  • Ein Dienst hat eine wohldefinierte, veröffentlichte Schnittstelle (Vertrag). Für die Nutzung reicht es, die Schnittstelle zu kennen. Kenntnisse über die Details der Implementierung sind hingegen nicht erforderlich.
  • 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 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.

  • SOA ist nicht Webservices – SOA beschreibt losgelöst von konkreten 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.

Als Beispiel für einen Geschäftsprozess dient die Bestellung eines Kunden bei einem Versandhändler. Bei diesem gibt es folgende Prozessschritte:

Erfassung – Verfügbarkeitsprüfung – Bonitätsprüfung – Bestellung – Kommissionierung – Versand – Rechnungsstellung – Zahlungseingang

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.

Implementierung einer SOA

[Bearbeiten | Quelltext bearbeiten]

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, da diese lediglich als Transportvehikel für die eigentliche Nachricht der Anwendung dienen. Verbreitet sind Protokolle wie IIOP, DCOM, DCE oder SNA, CORBA, SAP RFC (Remote Function Call) und auch das Web-Übertragungsprotokoll HTTP, das trotz einiger Nachteile im Bereich Sicherheit und Zuverlässigkeit durch das Internet besondere Popularität erlangte. Auch wenn Webservice kein normierter Begriff ist, wird im gängigen Sprachgebrauch damit die Übertragung von Nachrichten zwischen Anwendungen unter Verwendung des HTTP-Transportprotokolls bezeichnet. Alternativ zu HTTP werden auch hin und wieder die asynchronen Protokolle SMTP und FTP eingesetzt.

Da HTTP ein Transportprotokoll zur Sicherstellung der vollständigen und fehlerfreien Übertragung von beliebigen Nachrichten ist, sagt es über Struktur und Inhalt der übertragenen Nachricht nichts aus. Die eigentliche Nachricht wird deshalb nochmals in ein Webservice-Protokoll eingepackt. Denkbar sind dabei REST-, JSON- oder JMS-basierte Übertragung oder SOAP-basierte Nachrichten, die über die WSDL beschrieben werden und beide per XML formuliert werden. AMQP ist hierzu eine Alternative, da es als ein binäres offenes Format für eine Message Oriented Middleware (MOM) nicht über HTTP, sondern direkt über TCP Daten austauscht.

Die Integration einzelner Dienste kann in einer SOA über Punkt-zu-Punkt-Verbindungen realisiert werden. Bei Punkt-zu-Punkt-Verbindungen wird eine Verbindung zwischen Dienstgeber und -nutzern individuell entworfen, entwickelt und administriert. Bei einer großen Anzahl von Kommunikationswegen empfiehlt es sich allerdings die Nachrichten grundsätzlich über einen zwischengeschalteten Vermittler, einer Middleware oder auch Message-Broker genannt, zu senden. Diese Middleware übernimmt wiederkehrende Arbeiten wie die Wandlung von Protokollen, Filtern und Umleiten (Routing) von Nachrichten und garantiert deren sichere Zustellung und Ereignisbearbeitung. Wenn diese Middleware beliebig erweiterbar und protokollunabhängig aufgebaut ist, spricht man von einem Enterprise Service Bus (ESB). Von Ausnahmen abgesehen, reduziert eine Message Oriented Middleware die Gesamtkomplexität einer Rechnerlandschaft bereits bei sehr wenigen miteinander kommunizierenden Rechnern.

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.[4]

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.

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.

Modellierung einer SOA

[Bearbeiten | Quelltext bearbeiten]

Es gibt diverse Möglichkeiten, SOA mit einer Modellierungssprache zu beschreiben. Von der OMG gibt es die Open-Source-Spezifikation SoaML, mit der man SOA-Dienste mittels eines erweiterten UML-Profils durch Verwendung eigener Stereotype darstellen kann.

Technische Realisierung zur Laufzeit

[Bearbeiten | Quelltext bearbeiten]

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.[6]

Publish or register
Der Diensteanbieter veröffentlicht oder registriert seinen Dienst in einem Verzeichnis.
Find
Die Softwarekomponente, die einen Dienst benutzen möchte, sucht ihn in einem Verzeichnis. Wird ein passender Dienst gefunden, kann zum nächsten Schritt übergegangen werden.
Bind
Die benutzende Komponente erhält vom Verzeichnis eine Referenz (Adresse), unter der sie auf den Dienst zugreifen kann. Der Funktionsaufruf wird an diese Adresse gebunden.
Execute
Der Dienst wird aufgerufen. Eingabeparameter werden an den Dienst übermittelt und Ausgabeparameter als Antwort auf den Aufruf zurückgeliefert.

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 ITIL.

Risiken der SOA-Einführung

[Bearbeiten | Quelltext bearbeiten]

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 Unternehmens 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 in der Regel zum Scheitern verurteilt und auch sinnlos, solange nicht die Anforderungen anderer potenzieller Anwendungsbereiche geklärt sind. Außerdem erfordern Design, Implementation und Wartung einer SOA ein hohes Maß an Methodenunterstützung.

Daher hat sich die Möglichkeit einer Wiederverwendung oder gemeinsamen Nutzung von Services oder Servicemodulen durch andere Prozesse, Abteilungen usw. nicht im erhofften Umfang realisieren lassen; ihre Wahrscheinlichkeit wird selbst von Gartner Research – den Urhebern des Konzepts – auf nur 20 Prozent geschätzt.[7] Zudem konfligiert das Ziel der Wiederverwendbarkeit mit dem der Flexibilität. Daher sind viele SOA-Projekte gescheitert. Während laut AMR Research im Jahr 2007 22 Milliarden, nach IDC 6 Milliarden US-Dollar für SOA-Projekte ausgegeben wurden, ist der Hype (und damit auch der Umfang der neu veröffentlichten Literatur zum Thema SOA) seit der Finanzkrise 2008 deutlich zurückgegangen. Relevant bleiben werden nach Experteneinschätzungen jedoch andere serviceorientierte Architekturansätze wie Software as a Service (SaaS) und Cloud Computing.[8]

  • 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.
  • Stephan Aier, Marten Schönherr (Hrsg.): Enterprise Application Integration. Serviceorientierung und nachhaltige Architekturen. (= Enterprise Architecture. Band 2). 2. Auflage. Gito, Berlin 2006, ISBN 3-936771-74-X.
  • Norbert Bieberstein, Robert G. Laird, Keith Jones, Tilak Mitra: Executing SOA - a practical guide for the service-oriented architect Pearson, Upper Saddle River 2008, ISBN 978-0-13-235374-8.
  • Norbert Bieberstein, Sanjay Bose, Marc Fiammante, Keith Jones, Rawn Shah: Service-Oriented Architecture Compass. Business Value, Planning and Enterprise Roadmap. Pearson, Upper Saddle River 2006, ISBN 0-13-187002-5.
  • Daniel Liebhart: SOA goes real. Hanser Verlag, 2007, ISBN 978-3-446-41088-6.
  • Christoph Mathas: SOA intern. Hanser Verlag, 2008, ISBN 978-3-446-41189-0.
  • Knut Hildebrand: IT-Integration & Migration. Dpunkt Verlag, Heidelberg 2007, ISBN 978-3-89864-455-6.
  • Kai J. Oey, Holger Wagner, Simon Rehbach, Andrea Bachmann: Mehr als alter Wein in neuen Schläuchen. Eine einführende Darstellung des Konzepts der serviceorientierten Architekturen. In: Stephan Aier, Marten Schönherr (Hrsg.): Unternehmensarchitekturen und Systemintegration. (= Enterprise Architecture. Band 3). 2. Auflage. Gito, Berlin 2006, ISBN 3-936771-75-8, S. 197ff.
  • Martin van den Berg, Norbert Bieberstein, Erik van Ommeren: SOA for Profit, A Manager's Guide to Success with Service Oriented Architecture. 2007, ISBN 978-90-75414-14-1.
  • Thomas Erl: Service-Oriented Architecture. Concepts, Technology, and Design. Prentice Hall PTR, Upper Saddle River 2004, ISBN 0-13-185858-0.
  • Ingo Melzer u. a.: Service-orientierte Architekturen mit Web Services. 3. Auflage. Spektrum Verlag, 2008, ISBN 978-3-8274-1993-4.
  • OSGi Service Platform, Release 3. IOS Press, 2003, ISBN 1-58603-311-5. (englisch)
  • David A. Chappell: Enterprise Service Bus. Theory in Practice. O’Reilly Media 2004; englisch, ISBN 978-0-596-00675-4.
  • Frank Leymann, Dimka Karastoyanova u. a. (Hrsg.): Service Oriented Architecture – Overview of Technologies and Standards. Schwerpunktthemenheft der Zeitschrift it - Information Technology. Vol. 50 (2008) Heft 2.
  • Jörn-Axel Meyer, Alexander Tirpitz: Service-orientierte Architekturen im Mittelstand – Zwischen technisch Machbarem und kaufmännisch Sinnvollem. Josef Eul Verlag, Lohmar 2009, ISBN 978-3-89936-765-2.
  • Hans-Peter Fröschle, Stefan Reinheimer: Serviceorientierte Architekturen. (= Praxis der Wirtschaftsinformatik. HMD 253). dpunkt verlag, 2007, ISBN 978-3-89864-434-1.
  • Dirk Krafzig, Karl Banke, Dirk Slama: Enterprise SOA - Service-Oriented Architecture Best Practices. Prentice Hall PRT, 2007, ISBN 978-0-13-146575-6.
  • Dieter Masak: SOA?, Serviceorientierung in Business und Software. Springer Verlag, 2007, ISBN 978-3-540-71871-0.
  • Louise E. Moser, P. M. Melliar-Smith: Service-Oriented Architecture and Web Services. In: Wiley Encyclopedia of Computer Science and Engineering. 2009, ISBN 978-0-471-38393-2. doi:10.1002/9780470050118.ecse510
  • Johannes Maximilian Ahrens: Gestaltung und Verbesserung von Services unter besonderer Beachtung von Cloud Computing und Serviceorientierten Architekturen. Dissertation. St. Gallen 2016. (mit 64 Seiten Literaturverzeichnis)

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Research Note SPA-401-068, 12. April 1996, "'Service Oriented' Architectures, Part 1" und SSA Research Note SPA-401-069, 12. April 1996, "'Service Oriented' Architectures, Part 2"
  2. Reference Architecture Foundation for Service Oriented Architecture Version 1.0, 04. December 2012 online
  3. Reference Model for Service Oriented Architecture 1.0,Committee Specification 1, 2. August 2006 oasis-open.org
  4. a b Bianco Phil, Kotermanski Rick, Merson Paulo: Evaluating a Service-Oriented Architecture. Software Engineering Institute der Carnegie Mellon University, September 2007 http://www.sei.cmu.edu/publications/documents/07.reports/07tr015.html
  5. SOA in der Praxis, Nicolai Josuttis, 2008
  6. Haibin Zhu: Challenges to Reusable Services, scc, 2005, IEEE International Conference on Services Computing (SCC'05) Vol-2, 2005, S. 243–244.
  7. Siehe schon im Jahr 2006 kritisch: David Chappell: SOA and the Reality of Reuse. August 2006. Online: davidchappell.com, abgerufen am 16. Mai 2015.
  8. Wolfgang Herrmann: Die Rezession hat SOA das Genick gebrochen. In: Computerwoche. 16. Oktober 2008. online: computerwoche.de.