Serviceorientierte Architektur (SOA)

Die serviceorientierte Architektur (SOA) ist eine Möglichkeit zur Verwaltung von Software. Informationen zu SOA finden Sie in den folgenden Abschnitten:

Einführung in SOA

SOA beinhaltet die Implementierung von Services; diese stellen Logikeinheiten dar, die in einem Netz ausgeführt werden. Services weisen die folgenden Merkmale auf:
  • Sie verarbeiten Geschäftsprozesse, z. B. Berechnung eines Versicherungsangebots oder Verteilung von E-Mails, sie führen technische Tasks aus, z. B. Zugriff auf eine Datenbank, oder sie stellen Geschäftsdaten und technische Details zur Erstellung einer grafischen Schnittstelle bereit.
  • Ein Service kann auf einen anderen Service zugreifen. Mit der entsprechenden Laufzeittechnologie kann ein Service auf ein traditionelles Programm zugreifen und auf verschiedene Anforderer wie beispielsweise Webanwendungen reagieren.
  • Der Service ist von anderer Software relativ unabhängig. Änderungen an einem Anforderer erfordern nur wenige oder keine Änderungen am Service. Änderungen an der internen Logik eines Service erfordern nur wenige oder keine Änderungen am Anforderer. Die relative Unabhängigkeit des Service und anderer Software wird als lose Kopplung bezeichnet.

Ein Service kann Interaktionen innerhalb des Unternehmens und zwischen dem Unternehmer und seinen Lieferanten, Partnern und Kunden abwickeln.

SOA impliziert einen Entwicklungsstil, der sich auf das Geschäft als Ganzes sowie auf Modularität und Wiederverwendung konzentriert. SOA ist jedoch nicht nur für neuen Code vorgesehen. In den folgenden Fällen können vorhandene Anwendungen migriert werden:
  • Die Anwendungen sind monolithisch und kombinieren die Logik von Benutzerschnittstelle, Geschäftsprozessen und Datenzugriff, sodass das Unternehmen bei der Aktualisierung einer Art von Logik gezwungen ist, verschiedene Arten von Verhalten zu testen.
  • Die Anwendungen sind schwer durchschaubar, weil ihre Logik monolithisch ist und im Zuge sich ändernder Anforderungen nicht neu geschrieben, sondern immer wieder korrigiert wurde. Aktualisierungen nehmen zusätzlich Zeit in Anspruch, da der Entwickler versuchen muss, diese Logik zu entschlüsseln. Mit zunehmender Komplexität ziehen die Aktualisierungen außerdem zusätzliche Fehler nach sich.
  • Das Anwendungsinventar verfügt über doppelte Logik. Änderungsanfragen führen zu Unterbrechungen, da Änderungen an mehreren Stellen erforderlich sind.

Aus der Sicht des Entwicklers stellt eine Änderung an einer Serviceorientierung eine Schwerpunktverlagerung dar; viele Aspekte der Entwicklungstask sind davon nicht betroffen.

Serviceorientierte Anwendungen

Eine serviceorientierte Anwendung ist eine vorwiegend aus Services zusammengesetzte Anwendung, die häufig hierarchisch angeordnet sind.
Abbildung einer serviceorientierten Anwendung

Die oberste Ebene enthält einen oder mehrere Integrationsservices, die jeweils einen Aktivitätenfluss steuern (z. B. die Verarbeitung der Anfrage eines Antragstellers nach Versicherungsschutz). Jeder Integrationsservice ruft mindestens einen Geschäftsservice auf.

Die zweite Ebene setzt sich aus Services zusammen, die jeweils eine eher untergeordnete Geschäftstasks ausführen. Beispiel: Ein Integrationsservice könnte eine Reihe von Geschäftsservices aufrufen, um die Einzelangaben eines Vertreters von Versicherungspolicen zu prüfen. Wenn der Geschäftsservice Werte zurückgibt, die die Ausgabe einer Versicherungspolice rechtfertigen, ruft der Integrationsservice einen weiteren Geschäftsservice auf. Der zweite Geschäftsservice berechnet ein Angebot und gibt dieses Angebot an die Software (z. B. eine Webanwendung) zurück, die die serviceorientierte Anwendung aufgerufen hat.

Die dritte Ebene besteht aus Datenzugriffsservices, die jeweils eine relativ technische Task ausführen, d. h. das Lesen aus und Schreiben in Datenspeicherbereiche wie Datenbanken und Nachrichtenwarteschlangen. Ein Datenzugriffsservice wird meistens über die Geschäftsebene aufgerufen, aber bedingt durch den leichten Zugriff auf die Services ergeben sich weitere Verwendungsmöglichkeiten. Ein Anforderer wie eine Webanwendung könnte beispielsweise auf einen Datenzugriffsservice zugreifen, um Anfangswerte in einem Formular zuzuordnen.

Der zentrale Punkt ist die Flexibilität. Einige Integrationsservices stellen verschiedene Operationen für unterschiedliche Anforderer bereit, einige rufen andere Integrationsservices auf. Darüber hinaus kann ein Anforderer innerhalb einer serviceorientierten Anwendung auf unterschiedliche Service zugreifen. Der Anforderer könnte beispielsweise an einem bestimmten Punkt auf einen Integrationsservice und an einem anderen auf einen Geschäftsservice zugreifen.

Web-Services und Binary-Exchange-Services

Wie sieht das charakteristische Merkmal eines Web-Service aus? Für manche Benutzer lautet die Antwort, dass der Service Daten in einem textbasierten Format (SOAP) austauscht. Für andere Benutzer besteht das Hauptmerkmal eines Web-Service darin, dass der Service über die Datenübertragungssoftware HTTP (Hypertext Transfer Protocol) Daten im World Wide Web austauscht.

Um die unterschiedlichen Stile von Web-Services zu verstehen zu können, müssen die Struktur einer HTTP-Anforderungsnachricht, d. h. die von einem Browser an einen Web-Server übertragenen Daten, und die Struktur der zurückgegebenen HTTP-Antwortnachricht (sofern vorhanden) berücksichtigt werden.

Die HTTP-Anforderungsnachricht besteht aus drei Komponenten:
  • Die Nachricht beginnt mit einer HTTP-Methode, die den Verwendungszweck der Nachricht für den Empfänger angibt.
  • Mehrere nachfolgende Einträge sind Header mit Informationen, die nicht geschäftsdatenspezifisch sind. Dies können beispielsweise Informationen zum Benutzeragenten (d. h. der anfordernde Browser) sein. Jeder Header ist ein Name/Wert-Paar:
    User-Agent: Mozilla/4.0 ...
  • Die Anforderungsdaten stellen den Entitätshauptteil dar (sofern vorhanden). Bei der HTTP-Methode GET (Datenanforderung) ist der Entitätshauptteil in den meisten Fällen leer.
Die HTTP-Antwortnachricht besteht aus drei Komponenten:
  • Die Nachricht beginnt mit einem HTTP-Antwortcode, der angibt, ob die Anforderungsdaten verarbeitet wurden.
  • Mehrere nachfolgende Einträge sind Header, unter anderem der Header Content-Type, der das Format der Daten im Entitätshauptteil der Antwort angibt. Es handelt sich um ein spezifisches Format, z. B. das Format für Bilder des Typs JPEG. Bei Verwendung des Formats HTML (Hypertext Markup Language) ist die Antwort eine Webseite. Mindestens drei andere Inhaltstypen (Content-Types) stellen Geschäftsdaten für Webanwendungen oder andere Anforderer bereit: XML (Extensible Markup Language), SOAP (ein XML-Dialekt) und JSON (JavaScript Object Notation). JSON besteht aus Daten, die von JavaScript leicht verarbeitet werden können.
  • Der Entitätshauptteil (entity-body) stellt die Antwortdaten dar (sofern vorhanden).

Der Begriff Web-Service impliziert die Übertragung von Daten in einem textbasierten Format. Im Gegensatz dazu erfolgt der Datenaustausch bei einem Binary-Exchange-Service in einem Format, das einer bestimmten Maschinensprache oder einen bestimmten Hersteller zugeordnet ist.

Die Verwendung von Binary-Exchange-Services bietet die folgenden Vorteile:
  • Schnellere Laufzeitantworten als bei Web-Services
  • Keine Verwaltung von Konfigurationsdateien erforderlich
  • Keine Kenntnisse über die Technologien im Zusammenhang mit traditionellen Web-Services erforderlich

Der Nachteil von Binary-Exchange-Services ist die eingeschränkte Zugriffsmöglichkeit. Der direkte Zugriff auf einen Binary-Exchange-Service ist nur für Software möglich, die Daten in dem binären Format überträgt, das von dem Service erwartet wird.

Auswirkungen von SOA auf den Geschäftsbetrieb

SOA hat mehrere wichtige Auswirkungen auf den Geschäftsbetrieb. Wenn die einzelnen Komponenten relativ eigenständig sind, kann das Unternehmen schnell und kostengünstig auf geschäftliche oder technologische Änderungen reagieren.

Die Fähigkeit eines Unternehmens, schnell und effizient auf Änderungen zu reagieren, wird als Beweglichkeit (der Geschäftsabläufe) bezeichnet. Eine gut durchdachte SOA führt im Verlauf der Zeit zu einer höheren Beweglichkeit.

Ferner hat SOA Einfluss auf die Zusammenarbeit der Mitarbeiter. Abgesehen von den meisten technischen Services ist ein gut geschriebener Service ein allgemein definierter Service. Bei einem allgemein definierten Service ist der Problembereich breit genug, sodass Geschäftsleute den Sinn und Zweck des Service verstehen können, auch wenn sie wenig Kenntnisse von der Software haben. Wenn die Geschäftsabläufe in einem Unternehmen über eine Gruppe allgemein definierter Services abgewickelt werden, können Geschäftsanalysten und Softwarespezialisten sachkundige Informationen weitergeben, Benutzer in frühe Überlegungen bezüglich des Zwecks und Umfangs der einzelnen Services einbeziehen und verstehen, welche Auswirkungen die Änderung eines Geschäftsablaufs nach sich zieht. Die Vereinfachung der zwischenmenschlichen Kommunikation ist ein wichtiger Vorteil von SOA, der nahelegt, dass die serviceorientierte Architektur bei der Verarbeitung von Geschäftsprozessen zum wichtigsten Organisationsprinzip erhoben wird.

Bei gut konzipierten Services ist eine Wiederverwendbarkeit wahrscheinlicher. Unternehmen profitieren auf mindestens zweierlei Weise von der Wiederverwendbarkeit: Die Kosten der Entwicklung neuer Software können vermieden werden und die Zuverlässigkeit des Softwareinventars steigt im Laufe der Zeit. Im Vergleich zu den Tests, die bei der Implementierung komplett neu geschriebener Software erforderlich sind, ist der Testumfang deutlich geringer, wenn ein vorhandener Service in eine neue Anwendung integriert wird.

Mit SOA wird die Verfügbarkeit von Geschäftsprozessen und Daten erhöht. Nehmen wir beispielsweise an, in einem Versicherungsunternehmen rufen Agenten an ihren Arbeitsplätzen einen Mainframeprozess auf, um Versicherungstarife für bestimmte Kunden zu berechnen. Aufgrund des Wettbewerbsdrucks möchte das Unternehmen seinen Kunden die Möglichkeit bieten, Angebote im Web einzuholen, obwohl dort traditionsgemäß keine direkte Verbindung zu Mainframe-Computern besteht. Welche Anforderungen müssen erfüllt werden, bevor das Unternehmen personenbezogene Daten von einem Browser akzeptieren kann und die Daten von der Analysesoftware auf dem Mainframe-Computer verarbeitet werden können, um der Anfrage des Kunden zu entsprechen? Die Lösung besteht in der Entwicklung neuer Services, die eine Interaktion zwischen Browser und Analysesoftware ermöglichen. Der Nutzen des Unternehmens besteht im Einsatz eines moderneren Verfahrens, das die Erschließung neuer Märkte ermöglicht.

Bemerkung

Ein Teil des oben aufgeführten Materials stammt aus Enterprise Web 2.0 with EGL (MC Press, 2009; http://www.mc-store.com/5107.html).


Feedback