SOA with JBIDiese Session war unter anderem mit John Grupi von Sun, der schon einen recht guten Namen im Java EE Umfeld hat. Er begann mit der Motivation und sagte dabei, dass es in den Unternehmen eine "Accidential Architecture" gibt. Den Begriff finde ich recht passend. Er beschreibt den Fakt, dass in den Unternehmen die Systeme unkoordiniert miteinander reden und irgendwann dann ein echter Drahtverhau entsteht, in dem praktisch jeder mit jedem redet. Das ganze ist dann komplex und teuer.
Für das Einführen einer SOA muss es seiner Meinung nach einen Top Down Ansatz geben, bei der das Business entscheidet, wsa wie umgesetzt wird. Das ist ja auch logisch, denn die SOA muss sich an den Services orientieren und die werden eben durch die Fachlichkeiten definiert.
Dann ging es um JBI konkret technisch. Die Idee von JBI ist es, ein Meta Container für Services zu sein. Das bedeutet, dass er Platz für einzelne Container bietet, die jeweils Dienste implementieren können. Dort kann man zwei unterscheiden:
- Service Engines. Die sind dafür zuständig, eine Ablaufumgebung für Services zu bieten. Ein Beispiel kann ein EJB Container sein. Er ist im wesentlichen das Ziel eines Deployments. Der JBI Container bietet auch die Möglichkeit, neue Service Engines dynamisch zur Laufzeit einzubinden.
- Die Binding bieten Unterstützung für bestimmte Dienste. Dazu zählen SOAP, FTP, REST usw. Er muss die Daten vom Protokoll entgegen nehmen und in das normalisierte Format umwandeln.
Dieses normalisierte Format wird dann vom Message Router genommen und einem anderen Endpunkt weitergegeben.
Das ganze ist ein zusammengesetztes Event-basiertes System, d.h. die Komponenten kommunizieren Asynchron miteinander. Die einzelnen Elemente haben in WSDL definierte Schnittstellen und sind lose aneinander gekoppelt.
Konkret kann es also sein, dass über ein SOAP Binding eine Nachricht in das System kommt. Die wird dann an ein Service, also z.B. eine BPEL Engine, weitergeleitet. Die wiederum legt über ein FTP Binding ein File irgendwo hin. Die interne Kommunikation läuft dabei immer über die normalisierten Nachrichten und den Message Router. Das ganze läuft typischerweise in einer JVM.
SkalierungUm wirklich hohe Durchsätze zu erreichen, muss man JBI Implementierungen miteinander kombinieren können, um einen Cluster zu erreichen. Dazu kann man einzelne JBI Instanzen mit einem Enterprise Service Bus (ESB) zusammenschalten. Das ist konkret eine Message-Oriented Middleware (MOM) wie z.B. JMS. Die genau Implementierung ist jedoch proprietär.
AdministrationEin weiterer wichtiger Teil des Standards ist die standardisierte Installation. Dazu dienen Service Assemblies (SA), die in einem portablen Archivformat ausgeliefert werden. Sie bestehen aus mehreren Services.
Ein Service wird in einer Service Unit (SU) ausgeliefert. Das bedeutet also, dass in einem SA mehrer SUs für die Services sind.
Nicht standardisiert ist das Thema Monitoring, dass hier zum einen vor der Herausforderung steht, viele Container zu monitoren, bei denen auch dynamisch noch welche dazu kommen können. Außerdem muss man die Geschäftsprozesse monitoren.
ZusammenfassungDie abschließende Zusammenfassung hat nocheinmal deutlich gemacht, was JBI ausmacht: Standardisierung. Und zwar bei
pluggable Integration Components
Administration
Nachrichten Austausch zwischen den Komponenten
Das ganze kann einen neuen Markt schaffen, in dem solche Komponenten miteinander konkurrieren.
Mein FazitDas ganze erinnert mich stark an Biztalk, das im wesentlichen auch eine Schaltstelle für den Austausch von XML ist. Damit ist eigentlich die Frage, warum man sowas erst jetzt standardisiert und so in den Mittelpunkt stellt. Es löst mit Sicherheit einige Problem. Allerdings macht der Ansatz eher einen schwergewichtigen Eindruck: Es gibt nicht einen Container, sondern gleich ganz viele. Allerdings kann man die Probleme wohl auch nicht anders lösen. Mit dem Kauf von SeeBeyond stellt Sun klar, dass dieses Thema für sie sehr wichtig ist. Jetzt muss man nur noch mal einen Blick darauf werfen, wie sich das ganze praktisch anfühlt.