Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)

Transcription

Oracle SOA Suite 11g Mediator vs. Oracle Service Bus (OSB)
Oracle SOA Suite 11g Mediator vs. Oracle Service
Bus (OSB)
Guido Schmutz
Trivadis
Bern, Schweiz
Schlüsselworte:
Oracle SOA Suite 11g, Mediator, BPEL, ESB
Einleitung
Mit der SOA Suite 11g wurde der frühere Oracle ESB in die SCA Mediator Komponente
umgewandelt. Damit existiert nur noch ein "richtiger" Service Bus, der Oracle Service Bus
(OSB), welcher nach der BEA Übernahme aus dem Aqualogic Service Bus entstanden ist.
Der Mediator und der OSB besitzen zum Teil sich überlappende Funktionalitäten wie
Transformation, Filterung und Routing. Es stellt sich damit zwangsläufig die Frage, wann,
welche Komponente eingesetzt werden soll. Dieser Vortrag zeigt, wann der Einsatz welcher
Komponente Sinn macht und wie diese in einer SOA kombiniert werden können.
Geschichte der Oracle SOA Plattform
Die erste Version der Oracle SOA Plattform wurde Mitte 2006 mit der Oracle SOA Suite 10g
veröffentlicht. Diese Version war ein Zusammenstellung (Bundling) von verschiedenen
Komponenten, die Oracle zum Teil selbst entwickelt hat, aber insbesondere auch durch
Hinzukäufe erworben hat, wie dies in Abb. 1 dargestellt ist.
Abb. 1: Geschichte der Oracle SOA Plattform (Quelle Oracle)
Im Wesentlichen bestand und besteht die Oracle SOA Suite 10g aus den Produkten
•
BPEL – für die Orchestrierung von Services
•
ESB – für die Integration und Virtualisierung von Services
•
Web Services Manager – für Security und System Monitoring
•
BAM – für das Business Activity Monitoring (Monitoring für den Fachbereich)
Ein wesentlicher Nachteil der Oracle SOA Suite in der Version 10g ist, dass jedes dieser
einzelnen Produkte für den Entwickler ein bisschen anders zu verwenden ist, was sich sowohl
in der Entwicklung aber auch beim Deployment manifestierte.
Mitte 2008 hat Oracle offiziell BEA übernommen und damit aus Sicht SOA einige
interessante Produkte geerbt, wie z.B. der WebLogic Application Server (WLS), der
Aqualogic Service Bus (ALSB) oder aber das Enterprise Repository.
Bemerkenswert war auch, dass mit dem ALSB und dem Oracle ESB, Oracle plötzlich zwei
Service Bus im Angebot hatte. Die Frage, die sich dabei zwangsläufig stellte, war, wann soll
welcher Service Bus eingesetzt werden?
Bereits vor der Veröffentlichung der neuen Version 11g hat Oracle die einzelnen Produkte
neu benannt und insbesondere auch neu positioniert:
•
•
•
BPEL Process Manager – ist und bleibt die primäre Service Komposition,
Orchestrierung und Process Engine
Oracle Enterprise Service Bus (OESB) – alter „ESB“ – Der OESB war der primäre
ESB vor dem BEA Zukauf. Nach dem Kauf von BEA wurde er zurückgestuft und
seine Aufgabe bleibt einzig das Verfügung stellen von Mediator-Services zwischen
verschiedenen SOA Suite Komponenten. In 11g wird der OESB dabei auch zur
Mediator Komponente umbenannt und stellt eine mögliche Komponente innerhalb
eines SCA Composite dar.
Oracle Service Bus (OSB) – war früher bekannt unter BEA Aqualogic Service Bus
(ALSB). Ist neu Oracle’s primärer Service Bus und die bevorzugte Plattform für die
Virtualisierung von Services und Interaktionen mit Services, die extern zur SOA Suite
sind. Zurzeit ist der Oracle Service Bus nur unter BEA Weblogic verfügbar, in
Zukunft sollen aber auch andere Plattformen unterstützt werden. Der OSB ist Oracle’s
Basis für die Weiterentwicklung der Service Bus Funktionalität und kann auch
losgelöst, ohne SOA Suite Umgebung eingesetzt werden.
Oracle SOA Suite 11g
Abb. 2 zeigt den Übergang von der SOA Suite in der Version 10g zur Version 11g, die seit
Juli 2009 produktiv verfügbar ist.
Abb. 2: Von der Oracle SOA Suite 10gR3 zur Oracle SOA Suite 11g (Quelle Oracle)
Eine wesentliche Neuerung von SOA Suite 11g ist die Einführung einer gemeinsamen
Service-Infrastruktur, die über Service Component Architecture (SCA) Standard verwaltet
wird. Dadurch werden die einzelnen Produkte von 10g zu so genannten Service-Engines
innerhalb von SCA. Dies äussert sich in einer wesentlich besseren Integration, was sich vor
insbesondere für den Entwickler bezahlt macht, da nun alles aus einer Umgebung entwickelt
und deployed werden kann.
Der Oracle Service Bus (ex BEA) ist zurzeit noch nicht in der Version 11g verfügbar, die
Version 3.1 lässt sich aber problemlos mit der SOA Suite 11g kombinieren.
Damit ist aber noch nicht beantwortet, wann welche Komponente eingesetzt werden soll und
wie eine sinnvolle Kombination von Oracle SOA Suite 11g und Oracle Service Bus aussehen
könnte.
Welche Komponente soll wann eingesetzt werden?
Um besser beurteilen zu können, welche Komponente für welche Aufgabenstellung eingesetzt
werden sollte, habe ich versucht, die einzelnen Funktionalitäten den Produkten zu zuordnen,
was in Abb. 3 dargestellt ist. Dabei habe ich mich auf die Komponenten BPEL und Mediator
aus der SOA Suite 11g und den Oracle Service Bus (OSB) 10.3 beschränkt.
Abb. 3: Feature Mapping auf BPEL, Mediator und OSB
Es lässt sich leicht feststellen, dass es einige überlappende Funktionalitäten gibt, die bei allen
drei oder aber bei jeweils zwei Komponenten implementiert sind. Ausserdem gibt es viele
Funktionalitäten, die nur genau einer Komponente zugeordnet werden können, d.h. dies sind
die Kernfunktionalitäten bzw. die Exklusivfunktionalitäten.
Die aufgezeigten Funktionalitäten sind nicht alle auf der gleichen Stufe und auch die
Implementierung durch die Komponenten kann unterschiedlich sein, von der einfachen
deklarativen Einstellung bis zur Umsetzung in Programmcode.
BPEL bietet einige typische Funktionalitäten an, wie Process State/Long Running, Process
Orchestration, Human Workflow, Compensation und Parallel Processing. Es kann zudem
festegestellt werden, dass BPEL auch einige typische ESB-Funktionalitäten wie Message
Filter, Message Validation, Message Transformation, Message Routing und Asynchronous
Messaging abdecken kann. Diese Überlappung von BPEL mit dem Service Bus (Mediator
und OSB) sind historisch entstanden und es stellt sich die Frage, ob und wann diese überhaupt
eingesetzt werden sollen oder ob es nicht besser ist, die Aufgaben zwischen BPEL und
Mediator/OSB strikt zu trennen.
Wenn man die Funktionalitäten zwischen dem Mediator und dem OSB vergleicht, dann fällt
auf, dass der OSB viele Features exklusiv besitzt. Dabei handelt es sich genau um die
Unterscheidung zwischen simpler Mediator-Funktionalität und erweiterter Service Bus
Funktionalität. Der Mediator ist quasi der „little service bus“, während der Oracle Service Bus
(OSB) den mächtigen, „high end“ Service Bus darstellt. Funktionalitäten wie Message
Throttling, Service Pooling, Split-Join Pattern, Reliable Mesaging usw. können in grösseren
SOA-Lösungen sehr hilfreich sein, insbesondere wenn es darum geht, externe Services
einzubinden. Daher werden diese exklusiv nur vom Oracle Service Bus (OSB) implementiert.
Der Mediator hat zurzeit zwei Funktionalitäten, die er exklusiv anbietet. Die Cross Reference
Tables und das Value Mapping. Diese sind notwendig, wenn man mit kanonischen
Datenmodellen bzw. –formaten arbeitet und dabei immer wieder Werte vom einen ins andere
Format umwandeln muss. Die Cross Reference Tables können dabei Mappings auf Primary
Keys für Stammdaten unterstützen, während die Value Maps statische Wertumwandlung wie
Währungscode oder Ländercode unterstützt. Diese beiden wichtigen Funktionalitäten sollen
in einer zukünftigen Version auch auf dem OSB verfügbar gemacht werden.
Abb. 4 zeigt grob die wesentlichen Unterschiede zwischen dem Mediator und dem Oracle
Service Bus (OSB) auf.
Abb. 4: Mediator vs. Oracle Service Bus (OSB)
Wann konkret macht nun aber die Verwendung des Mediator und wann die Verwendung des
Oracle Service Bus Sinn?
Verwendung der Oracle SOA-Plattform in komplexerer Architektur
In einer komplexeren Architektur können Mediator und Oracle Service Bus (OSB) sehr gut
kombiniert eingesetzt werden, wie dies Abb. 5 zeigt.
Abb. 5: Verwendung der Oracle SOA-Plattform in einer komplexeren Architektur
Der Oracle Service Bus (OSB) wird dabei auf Unternehmensebene eingesetzt und sorgt für
die Verbindung der unterschiedlichen Systeme im Grossen über den ESB und bindet externen
Services über den „Exposed ESB“ ein. Dies sind nur logische getrennte Service Busse, sie
können physisch durchaus auf der gleichen Service Bus Instanz betrieben werden.
In einer grossen SOA-Lösung ist es sinnvoll, verschiedene SOA Domänen zu bilden, wie in
Abb. 5 als SOA Domäne 1 und Domäne 2 eingezeichnet. Die Domäne 2 ist hier zum Beispiel
mit der Oracle SOA Suite 11g umgesetzt, während die SOA Domäne 1 über eine andere
Technologie implementiert wird.
Innerhalb der SOA Domäne 2 werden die Features der SOA Suite 11g eingesetzt, d.h. zum
Beispiel BPEL und Mediator. Externe Services werden dabei vom unternehmensweiten OSB
konsumiert. Damit wird eine SOA auf Basis von mehreren, entkoppelten und ebenfalls
service-orientierten Domänen erreicht.
Die Service Bus Instanzen eignen sich primär für die Übertragung von einzelnen Meldungen
in geringer Anzahl und auf keinen Fall um ganze Batches von Datensätzen zu übertragen, wie
man dies in klassischen Integrationen oft vorfindet. Sind Batch-Integrationen weiterhin
notwendig, dann lohnt es sich die Service-Orientierte Architektur durch einen Bulk ESB zu
ergänzen. Im Falle von Oracle kann dazu der Oracle Data Integrator (ODI) eingesetzt werden.
Der Einsatz von verschiedenen Service Bus auf unterschiedlichen Ebenen wird auch
Federated Bus Pattern genannt.
Federated Bus Pattern
Dieses Pattern kombiniert verschiedene logische Busse zu einer so genannten Federated Bus
Infrastruktur, wie dies in Abb. 6 dargestellt ist. Das Pattern sieht vier verschiedene Ebenen
vor, jede dieser besitzt seinen eigenen logischen Bus:
Application Level – ein Service Bus je Applikation, mehrere innerhalb einer Domäne
Domain Level – ein Service Bus pro Domäne
Enterprise Level – ein Service Bus für das gesamte Unternehmen
External Level – ein Gateway für das ganze Unternehmen zu den externen Service
Abb. 6: Federated Bus Infrastruktur
Der Mediator eignet sich dabei primär für den Einsatz als Application Service Bus oder aber
als Domain Service Bus. Der Oracle Service Bus (OSB) kann für den Corporate Service Bus
oder den External Service Bus eingesetzt werden, lässt sich aber natürlich auch für die beiden
anderen Ebenen verwenden.
SOA Domänen über unternehmensweiten ESB verbinden
Die SOA Domänen sind natürlich nicht komplett unabhängig voneinander. Um diese aber
möglichst lose miteinander bzw. untereinander zu koppeln, können sie über Publish/Subscribe
Verfahren verbunden werden. D.h. eine SOA Domäne wird wichtige Ereignisse lediglich an
den übergeordneten Service Bus signalisieren und andere SOA Domänen, die sich für das
Ereignis registriert haben, werden daraufhin asynchron benachrichtig (siehe Abb. 7). Es gibt
damit keine 1:1 Koppelung zwischen den beiden Domänen.
Abb. 7: Mehrere SOA Domänen über unternehmensweiten ESB verbinden
Diese Entkoppelung über Pushlish/Subscribe lässt sich mit dem Mediator sehr gut unter
Nutzung des Event Delivery Networks (EDN) realisieren.
Zusammenfassend kann gesagt werden, dass sowohl der Mediator wie auch der Oracle
Service Bus ESB-Funktionalitäten gut implementieren. Der Entscheid welcher Bus
schlussendlich eingesetzt wird, kann einerseits über die geforderten und unterstützten
Features gefällt werden, oder andererseits ob die SOA Suite 11g mit den weiteren
Komponenten BPEL, Rules Engine, Human Workflow, usw. ebenfalls benötigt wird, oder ob
lediglich ein eigenständiger ESB notwendig ist. In der ersten Situation wird sicher auch der
Mediator eingesetzt werden, währendem man in der zweiten Situation eher auf den Oracle
Service Bus setzen wird.
In einer grösseren und komplexeren SOA ist es jedoch sinnvoll, diese über das Federated Bus
Pattern zu kombinieren und sowohl den Mediator wie auch den Oracle Service Bus
einzusetzen.
Kontaktadresse:
Guido Schmutz
Trivadis
Papiermühlestrasse 73
CH-3014 Bern
Telefon:
Fax:
E-Mail
Internet:
+41(0)79-4120539
+41(0)31-9280964
guido.schmutz@trivadis.com
http://www.trivadis.comi