Acht Grundprinzipien von SOA: Service Discoverability und Servicekomposition

Im vierten Teil der sechsteiligen SOA-Artikelserie erörtert Thomas Erl die beiden SOA-Grundprinzipien Service Discoverability und Servicekomposition.

In diesem vierten Teil unserer Artikelserie zum Thema serviceorientierter Architektur (SOA) konzentrieren wir uns auf zwei Prinzipien, die weniger Aufmerksamkeit erhalten, als sie eigentlich verdienen. Wenn es um das Servicedesign geht, dann richtet sich die Aufmerksamkeit am häufigsten auf SOA-Marketing-Terminologien wie lose Kopplung und die Wiederverwendbarkeit. Das ist sicherlich wichtig, allerdings nicht entscheidend für die Erreichung langfristiger Ziele von SOA-Projekten. Doch es gibt dabei noch mehr zu berücksichtigen.

In Teil 2 und Teil 3 dieser Serie haben wir diskutiert, dass die Abstraktion und strategische Nutzung von Serviceverträgen zwei weitere Prinzipien repräsentieren, die zu einem großen Teil die Realisierung von wiederverwendbaren, lose gekoppelten Services unterstützen. Aber auch ein noch so oft wiederverwendbarer Service nutzt wenig, wenn er nicht von denen gefunden wird, die für die Generierung potenzieller Serviceanforderer verantwortlich sind. Darüber hinaus werden selbst die häufigsten lose gekoppelten Services nur ein sehr begrenztes Wiederverwendungspotenzial haben, wenn sie nicht effizient zusammengesetzt werden können. An diesem Punkt kommen die Prinzipien der Service Discoverability (Auffindbarkeit/Erkennbarkeit) und der Servicekomposition ins Spiel.

Auffindbarkeit von Services

Das SOA-Merkmal Discoverability hilft zu vermeiden, dass Services redundant generiert werden oder dass Services eine redundante Logik implementieren. Man will also ineffiziente Wiederholungen vermeiden und die Frage beantworten, ob die Funktionalität, die benötigt wird, bereits verhanden ist, oder neu erstellt werden muss.

Um dies beantworten zu können, muss man wissen, welche Ressourcen bereits zur Verfügung stehen. Die Antworten dafür bekommen wir über Metainformationen. Da jede Serviceoperation eine potentiell wiederverwendbare Automatisierungslogik darstellt, müssen die mit einem Service verbundenen Metadaten zum einen den allgemeinen Zweck des Services ausreichend beschreiben. Zum anderen sollten sie auch die Funktionalität beschreiben, die von seinen individuellen Operationen angeboten werden.

Discoverability bezieht sich auf die Fähigkeit der Technologiearchitektur, einen Discovery-Mechanismus bereitzustellen, beispielsweise ein Service-Registry oder Verzeichnis, das es erlaubt, entsprechende Services zu finden. Diese Erweiterungen werden Teil der gesamten Infrastruktur zur Unterstützung von SOA-Implementierungen.

Auf Service-Level bezieht sich das Discoverability-Prinzip auf das Design eines individuellen Service, so dass er so erkennbar wie möglich wird, unabhängig davon, ob ein Discoverability-Produkt oder eine Erweiterung tatsächlich in der Implementierungsumgebung existiert. Dazu gehört auch die Qualität der Metainformationen, die wir definieren. Wenn die Metainformationen von schlechter Qualität oder unzugänglich sind, besteht die Gefahr, dass ein Service missverstanden oder gar nicht gefunden wird.

Die Überlegung dahinter ist folgende: Selbst wenn es keine Notwendigkeit für ein Service-Registry gibt, da es einfach nicht genug Inhalt für ein Serviceinventar gibt, sollten Services nach wie vor als stets auffindbare Ressourcen entwickelt werden. Wenn ein Service-Portfolio immer mehr an Größe zunimmt, kann die Governance dieser Services besser verwaltet werden, da jeder Service mit ausreichenden Metadaten ausgestattet ist, um seinen Zweck und seine Fähigkeiten richtig zu kommunizieren.

Servicekomposition

Wenn ein Service-Portfolio in der Größe zunimmt, werden Servicekompositionen ein unvermeidlicher und immer wichtigerer Designaspekt für den Aufbau serviceorientierter Architekturen. Unter Servicekomposition versteht man die Zusammenfassung bereits bestehender Services zu neuen Services. Damit lässt sich sehr schnell auf Veränderungen in der Umgebung reagieren.

Damit ein Service zusammensetzbar ist, muss auf das Design der Serviceoperationen geachtet werden. Kompositionsfähigkeit ist eine andere Form der Wiederverwendbarkeit und deshalb müssen Operationen in standardisierter Form (und mit einer entsprechenden Granularität) designt werden, um die Kompostionsmöglichkeiten zu maximieren.

Eine allgemeine SOA-Erweiterung, die die Komponierbarkeit nutzt, ist die Orchestrierung. Mit Orchestrierung ist das Zusammenwirken mehrerer Services gemeint. Kompositionssprachen wie WS-BPEL (Business Process Execution Language) ermöglichen diese Neukombinierung von Services. Eine solche Sprache klassifiziert im Wesentlichen den Prozess selbst als Servicekomposition, der von einem übergeordneten Eltern-Prozess-Service repräsentiert wird. Der Bedarf nach hoch komponierbaren Services ist unabhängig davon, ob unmittelbare Kompositionsanforderungen existieren.

Komposition und Auffindbarkeit

Jedes der Prinzipien, die wir in dieser Serie vorstellen, hat Beziehungen zu den anderen Prinzipien. Und jedes Prinzip wird beeinflusst von den anderen Prinzipien. Die Zusammensetzbarkeit eines Service wird zum Beispiel beeinflusst durch das Ausmaß, in dem verschiedene andere Prinzipien gemeinsam angewendet werden.

Selbst die Auffindbarkeit ist verknüpft mit der Effizienz von Kompositionen. Eine Grundregel der Serviceabstraktion ist, dass ein Service jeden Bereich der Logik von allen Arten von unterstützten Quellen repräsentieren kann, einschließlich anderer Services. Wenn Services andere Services kapseln, haben wir eine Komposition.

Um eine effiziente Komposition zu erstellen, muss der Servicedesigner die Services so zusammenstellen, dass die am besten geeigneten Services die Elemente der Komposition bilden. Und ist die Komposition abgeschlossen und wird diese eingesetzt, werden die potentiellen Konsumenten des Services, der diese Komposition enthält, von seiner Existenz, seinem Zweck und seinen Fähigkeiten profitieren.

Was kommt als nächstes?

Viele der Prinzipien, die wir bislang behandelt haben, konzentrieren sich auf die Gestaltung und die Nutzung des Servicevertrags. In unserem nächsten Artikel wenden wir uns zwei Prinzipien zu, die eher versteckt sind: Service Statelessness und Serviceautonomie.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!

Fortsetzung des Inhalts unten

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de

Close