Fuse ESB das bessere ServiceMix?

10 August, 2009 - 23:32

Einführung in Apache ServiceMix

Der von der Apache Software Foundation entwickelte Open-Source ESB ServiceMix ist der am weitesten verbreitete und standardbasierte Enterprise Service Bus (ESB). Damit unterliegt ServiceMix selbstverständlich der Apache Software License v2 und kann somit ohne größere Bedenken in bestehende Software-Projekte integriert werden.

Das Apache ServiceMix Projekt wirbt damit die Vorteile einer Service Orientierten Architektur (SOA) und einer Event Driven Architektur (EDA) zu vereinen und somit einen sehr flexiblen und agilen ESB bereitzustellen. Zudem setzt das Apache ServiceMix Projekt stark auf existierende Standards. So unterstützt ServiceMix in der Version 4.0 den Java Business Integration 2.0 (JBI) Standard (http://www.jcp.org/en/jsr/detail?id=208) und OSGI, was den Anwendern erlaubt flexible Komponenten im ESB auszutauschen. Wie auch viele andere Open-Source ESBs setzt ServiceMix zur Konfiguration auf Spring, was für all diejenigen, die sich bereits mit dem Spring-Framework auskennen, die Einarbeitung erleichtert.

 

JBI Components und Normalized Message Router

ServiceMix stellt nach dem JBI Standard einen Service Container dar. Der Service Container erlaubt es, JBI Komponenten in Form von Plugins in den Container einzuhängen, welche dann über einen Normalized Message Router (NMR) Nachrichten (Informationen) austauschen können. Die unterschiedlichen JBI Komponenten wissen so voneinander nichts und kommunizieren lediglich über den NMR. In ServiceMix werden zwei unterschiedliche Arten von JBI Komponenten unterschieden: Binding Components (BC) und Service Engines (SE).


Binding Component

Die Binding Component erfüllt im wesentlichen zwei Aufgaben:

  1. Eine Kommunikation über ein Remote-Protokoll herzustellen

  2. Eingehende/Ausgehende Nachrichten zu normalisieren und zu denormalisieren

Eine Binding Component ist somit die Verbindung des ESB (bzw. NMR) mit der Außenwelt.

Beispiele für BC's in ServixMix sind:

 

  • servicemix-file

  • servicemix-ftp

  • servicemix-http


Service Engine

Über eine Service Engine (SE) kann Logik im ESB bereitgestellt werden. Dabei kommuniziert die SE Komponente lediglich mit dem NMR. Soll eine Nachricht außerhalb des ESB versandt werden, muss die SE Komponente die Nachricht zuerst an eine BC Komponente schicken. Wie Abbildung 1. zeigt, führt dies zu einer sauberen Schnittstelle zwischen ESB und Integrationssystemen außerhalb des ESB's.

 

ServiceMix Architektur

Für das Nachrichten-Routing auf dem ESB bietet ServiceMix eine enge Integration mit dem Apache Camel Projekt und stellt somit eine Vielzahl von Enterprise Integration Patterns (EIPs) zur Verfügung.


Service unit und Sevice assembly

Der einfache ServixMix Benutzer schreibt gewöhnlich selbst keine JBI-Komponenten, sondern verwendet bzw. konfiguriert die von ServixMix bereitgestellten Komponenten. Eine solche Konfiguration wird in ServixMix als „service unit“ (SU) bezeichnet. Service units können zu einem „service assembly“ (SA) zusammengefasst und im ServiceMix ESB deployt werden. Dabei ähnelt das Konzept von JBI-SU und -SA stark dem WAR und EAR Archive-Konzept der JavaEE-Welt. Das ServiceMix Projekt stellt zur Erstellung von SU's und SA's unterschiedliche Maven-Archetype bereit, was das Arbeiten mit ServixMix ungemein vereinfacht.

 

Die FUSE Open Source Community

Die Fuse Open Source Community stellt eine Familie von Open-Source SOA Tools basierend auf verschiedenen Apache SOA Projekten bereit. Dabei handelt es sich um einfache Distributionen der bekannten Apache Projekte.

  • FUSE ESB
    Ein Open-Source ESB basierend auf Apache ServiceMix

  • FUSE Message Broker
    Ein Open-Source JMS Message Broker basierend auf Apache ActiveMQ

  • FUSE Mediation Router
    Ein Open-Source Enterprise Integration Pattern Tool basierend auf Apache Camel.

  • FUSE Services Framework
    Eine Open-Source Plattform für SOAP und REST basierte Web Services welche auf dem Abache CXF Framework aufsetzt.

  • FUSE Integration Designer
    Ein auf Eclipse basierendes Tool zum grafischen Erstellen von Enterprise Integration Pattern und Web Services.


Bei den FUSE Produkten handelt es sich ebenfalls um freie Open-Source Produkte. Zudem gehören viele der Commiter in den Apache Projekten auch dem FUSE Team an. Das FUSE Team testet die Apache Produkte auf ihre Stabilität und Qualität und entscheidet anhand dieser Kriterien welche Versionen der Apache Produkte als Basis für ihre Distributionen dienen. Dabei werden gefundene Fehler auch vom FUSE Team selbst behoben. Diese Fehlerbehebungen fließen dann später wieder in die jeweiligen Apache Projekte zurück.

 

Bei den FUSE Produkten wurde die Installation bedeutend vereinfacht sowie viel Wert auf Dokumentation und Beispiel-Anwendungen gelegt. Das FUSE Team führt in regelmäßigen Abständen kostenlose Web-Seminare durch und stellt mittlerweile ein sehr hilfreiches und nützliche Archiv an Web-Seminaren bereit. Die FUSE Open Source Community ist sehr aktiv und hilfreich, wenn es um Probleme und Fragen rundum die FUSE Produkte und die Themen SOA, ESB und Integration geht.

Der große Vorteil aber für Unternehmen liegt im Wesentlichen nicht nur in der bedeutend besseren Dokumentation, der Qualitätskontrolle und der guten Community, sondern im Enterprise-Support, welches das FUSE-Team bereitstellt. Denn hinter der FUSE Open Source Community verbirgt sich die Progress Software Corporation. Zu dem Enterprise Support gehört die Unterstützung von Pilot-Projekten, die Einführung und Integration der Produkte in ein Unternehmen, Consulting sowie Schulungen und Trainingsunterlagen.

Die FUSE Open-Source Community versucht somit die Vorteile von Open-Source Produkten mit denen von Enterprise-Diensleistungen zu verknüpften. Viele andere große Software-Unternehmen wie Google, IBM und SpringSource haben bereits dieses Geschäftsmodel für sich entdeckt.

Ich gehört jetzt selbst der FUSE Community an und werde in Zukunft weiter über die FUSE Open Souce Community berichten.