JBI: Ein Standard für den ESB
Artikel erschienen in Swiss IT Magazine 2007/20
Im vorigen Artikel wurde über «Muster der Systemintegration» gesprochen. Als wesentliche Voraussetzung, um moderne und agile Enterprise-Anwendungen schreiben zu können, wird oft eine entsprechende Integrationsumgebung angesehen, die es erlaubt, die Vielzahl an Services und Systemen, die zur Verfügung stehen, in kontrollierter Weise zu grösseren Anwendungen zu integrieren.
Dabei geistert das Schlagwort «Enterprise Service Bus» (ESB) als Begriff seit einigen Jahren durch die IT-Landschaft. Dieser Begriff wird allerdings in verschiedenen Kontexten verwendet:
Ein wesentlicher Aspekt ist die Verbindung verschiedener IT-Komponenten, wobei dies über eine grosse Anzahl an verschiedenen Protokollen möglich sein sollte (beispielsweise JMS, FTP, Files, RMI, Corba). Die Kommunikation zwischen den angebundenen Systemen sollte dabei über einen standardisierten Bus erfolgen, weshalb meist XML-basierte Nachrichten verwendet werden. Der Bus selbst soll auch komplexes Routing der Nachrichten sowie Transformationen (Konversionen, Anreicherungen usw.) unterstützen.
Neue Anwendungen, Services und Komponenten können dabei im ESB-Kontext geschrieben werden, ohne dass sich der Entwickler mit der Vielzahl an Systemen und Protokollen direkt auseinandersetzen muss. Diese Komponenten werden typischerweise vom ESB verwaltet (Lifecycle Management).
Wie schon erwähnt, gibt es eine grosse Anzahl verschiedener ESB-Produkte. Dabei kocht(e) leider fast jeder Hersteller sein eigenes Süppchen, was zu Systemen führt, die nicht gut miteinander arbeiten. Konkret bedeutet dies beispielsweise mangelhafte Austauschbarkeit von Komponenten zwischen verschiedenen ESBs. Standards sind in diesem Umfeld aber sehr wichtig, wie man unter anderem an BPEL sehen kann.
Mittlerweile gibt es auch einen ersten Standard: Java Business Integration (JBI) von Sun Microsystems, der als Java Specification Request entstanden ist (JSR-208). JBI ist ein recht leicht zu verstehender Standard und ist auch ein guter Startpunkt, um wesentliche Kern-ESB-Funktionalität zu definieren.
JBI in der Version 1.0 ist mittlerweile etwa 2 Jahre alt, und es gibt bereits erste ESB-Implementierungen, beispielsweise die Open-Source-Lösung Apache Service Mix. Der Trend geht aber scheinbar sehr stark in diese Richtung, und andere ESBs ziehen nach. Auch existiert mittlerweile eine erhebliche Anzahl an JBI-kompatiblen Komponenten verschiedener Anbieter respektive von verschiedenen Open-Source-Projekten (siehe Kasten).
Die Abbildung auf der vorhergehenden Seite zeigt die Grund-Architektur eines JBI-konformen Enterprise Service Busses. Im «Zentrum» steht dabei der «Normalized Message Bus», im Fall von Apache Service Mix der «Service Mix ESB». Weiter beschreibt der JBI-Standard zwei Arten von Komponenten:
- Binding Components
Die Notwendigkeit, vereinheitlichte und standardisierte Integrationsumgebungen zu schaffen, wurde in den letzten Jahren offensichtlich. Eine Vielzahl von ESB-Produkten kam auf den Markt mit stark unterschiedlicher Funktionalität und Fokus. JBI ist einer der ersten Standards in diesem Umfeld und wird bereits vielfach umgesetzt. Einerseits gibt es mittlerweile eine nennenswerte Anzahl an (Open-Source-) JBI-Komponenten, andererseits beginnen langsam auch erste ESB-Implementierungen, die JBI-konform sind, zu reifen. Apache Service Mix ist eine solche Implementierung und mittlerweile noch ein Apache-Incubator-Projekt.
Dies bedeutet, dass es gerade modifiziert wird, um die von der Apache Software Foundation geforderten Bedingungen zu erfüllen, um dereinst zu einem «vollwertigen» Apache-Projekt zu werden.
Interessant ist in diesem Zusammenhang aber die Dynamik und die Struktur dieser neuen Projekte: Apache ActiveMQ ist ja ein älterer Bekannter im Apache-Umfeld, aber die neueren Projekte Service Mix, Camel sowie teilweise auch CXF waren frühere Codehaus-Projekte und werden teilweise von den gleichen Entwicklern betrieben. Dadurch ergibt sich eine Gruppe von Projekten, die je nach Bedarf kombiniert werden können, dann gut zusammenarbeiten und die Erstellung von Geschäftsanwendungen deutlich vereinfachen können.
· Bean: Integration einfacher «POJOs» als Service
· Apache ODE: BPEL Engine
· Camel: Integration von Apache Camel
· Drools: JBoss Regel-Engine
· Quartz: Scheduling und Zeit-basierte Trigger
· Verschiedenste Connectoren für Protokolle wie:
· JMS
· Jabber/XMPP
· File
· ftp
· http
· JCA
Alexander Schatten (alexander@schatten.info) ist Assistent am Institut für Softwaretechnik und interaktive Systeme der Technischen Universität Wien.