We Love IT > Magazine > Inhoud - 2009 uitgave 1 > Open Source en de ESB
Tags: ESB | Open Source | SOA | XML

Open Source en de Enterprise Service Bus (ESB)

Open Source in ESB

Open source is de laatse jaren steeds populairder geworden. In dit artikel geven we een overzicht van de huidige status van open source ESBs. Wat zijn de sterke punten, wat zijn de zwakke punten en waar moet je op letten als je voor een open source ESB kiest.

De laatse jaren heeft open source een heel sterke vlucht genomen en is al lang niet alleen meer het domein van operating systems en databases. Open source applicatie servers hebben tegenwoordig een groot marktaandeel en ook op veel andere gebieden is open source met een sterke opmars bezig. In de open source wereld kun je nu volwassen goed ondersteunde CMS, DMS en zelfs ERP systemen vinden. Een ander gebied waar open source zich sterk ontwikkeld heeft de laatse 3 á 4 jaar is op integratie gebied, en vooral op het gebied van de ESB.

Functionaliteit van een ESB

Voordat we gaan kijken naar welke ESBs er zijn, laten we eerst even kort samenvatten wat een ESB behoort te doen. In hoofdlijnen geeft de volgende tabel weer wat de belangrijkste eigenschappen van een ESB zijn.

Naam

Omschrijving

Locatie ontkoppeling

Een ESB zorgt voor ontkoppeling tussen de vragende en ontvangende partij, hierdoor is het aansluiten van nieuwe en wijzigen van bestaande services makkelijker.

Technische vertaling

De ESB zorgt ook voor technische vertaling. De ESB kan communiceren over veel verschillende kanalen zoals HTTP, FTP, JMS, SOAP, File en nog veel meer.

Berichten transformeren

De ESB moet ook berichten kunnen vertalen van het ene formaat naar het andere. Denk hierbij aan functionaliteit zoals XSLT of XQuery.

Berichten routeren

Het bepalen van de uiteindelijke bestemming van een bericht is een belangrijke functionaliteit van een ESB. Dit kan gebaseerd zijn op de inhoud van een bericht, volgens een vaste lijst of op nog veel andere manieren.

Beveiliging

Authenticatie, authorisatie en encryptie mogelijkheden zijn allemaal zaken die ook vanuit een ESB ondersteund moeten worden.

Beheer en monitoring

Als de ESB gebaseerde oplossing eenmaal draait moet deze natuurlijk ook beheersbaar zijn. Dit is ook een belangrijke eigenschap van een ESB.

Samenvattend is een ESB dus een integratie platform waarmee services, in de breedste zin van het woord, op een flexibele en onderhoudbare manier aan elkaar gekoppeld kunnen worden.

Veel opties in de open source wereld

Als je rond gaat kijken in wat open source te bieden heeft kom je veel verschillende oplossingen tegen. Van lichtgewicht integratie frameworks (Camel, Spring integration) tot zware complete ESB oplossingen (openESB, JBoss ESB) en heel veel daar tussen. Toch zijn er een aantal open source ESBs die er echt uitspringen qua volwassenheid en ondersteuning.
Als je kijkt naar Mule, Fuse, WSO2 en JBoss ESB dan zijn dat volwassen producten die alles bieden wat een ESB nodig heeft en daarnaast ook nog commerciëel support leveren. Ook de nieuwste versie van openESB heeft veel potentie.

Ook al zijn er veel verschillende ESBs, wat je in de open source ESBs wel ziet is dat ze zich bijna allemaal wel richten op dezelfde onderdelen:

  • Richten op standaarden en specificaties: het nut van een ESB, en de adoptie daarvan, valt of staat bij het ondersteunen van standaarden. Open source ESBs ondersteunen dit allemaal heel goed. Ze hebben erg uitbreide ondersteuning voor verschillende technische standaarden (SMTP, POP3, HTTP etc.) maar ook voor een aantal van de belangrijkste WS-* standaarden. Daarnaast is er ook vaak nog ondersteuning voor specifieke integratie standaarden zoals JBI en SCA.
  • Uitgaan van Enterprise Integration Patterns: de meeste integratie specialisten zullen wel bekend zijn met het “Enterprise Integration Patterns” boek van Hohpe en Woolf. Dit boek beschrijft een lijst van best practices hoe bepaalde integratie problemen aan te pakken. De open source ESBs bieden een uitgebreide ondersteuning voor veel van deze patronen. Hieronder staan een aantal voorbeelden van hoe Mule en de nieuwste versie van openESB hier mee omgaan.

Code listing 1: Mule “bridge” pattern

<service name="FileToJmsBridge">
     <inbound>
         <file:inbound-endpoint path="/data/in">
              <file:filename-wildcard-filter pattern="*.txt"/>
         </inbound-endpoint>
     </inbound>
    <outbound>
        <outbound-pass-through-router">
            <jms:outbound-endpoint topic="receivedFiles"/>
        </outbound-pass-through-router>
    </outbound>
</service>

In het vorige voorbeeld zie je hoe je met XML Mule configureerd. Deze configuratie controleert of er eenbestand in een bepaalde directory staat, en als dat het geval is, stuurt Mule het door naar een JMS topic. Zelfs zonder deze uitleg spreekt de configuratie voor zich.

Als we nu kijken naar de nieuwe versie van openESB dan wordt het nog makkelijker. Deze versie biedt een DSL (en een editor) aan waarmee je de stroom van berichten configureerd.

Code listing 2: OpenESB 'Fuji' content based router

 route do
   from "inbound"
   filter xpath "name"
   aggregate set (x=y)
   select drools "myRouteRule"  
 end

Ook Camel, een apache project, biedt de mogelijkheid om via een DSL je integratie stromen te configureren.

  • Keep it Simple!: De laatse en mischien wel belangrijkste overeenkomst is dat de open source ESBs het simpel proberen te houden. Je hoeft geen gigabytes aan software te downloaden en zware databases te installeren, je download een paar 100MB, pakt dit uit, en binnen een half uur heb je je eerste integratie stroom draaiende.

De kracht van de open source ESBs zit hem dus voornamelijk in de erg goede support voor standaarden, het volgend van best practices door middel van patterns en het feit dat ze het niet moeilijker maken dan nodig is. Daarnaast zijn het producten die erg makkelijk uit te breiden zijn, en zeer goed te integreren zijn met bestaande applicaties.

Waar gaat het naar toe

Op dit moment zijn de open source ESBs heel erg gericht op het oplossing van technische integratie. Als je op zoek bent naar een complete geïntegreerde SOA oplossing dan is die in de open source wereld nog moeilijk te vinden. Als je bijvoorbeeld kijkt naar workflow en BPM dan is dit een onderdeel waar de verschillende ESBs nog wel wat stappen in kunnen nemen. Er zijn wel stappen genomen om verschillende BPM engines te integreren, maar de integratie is nog niet volwassen genoeg. In de meeste gevallen zul je hierbij dus nog wel wat handwerk moeten verrichten om dit voor jouw scenario goed te laten werken.
Een ander onderdeel, wat trouwens ook nog vaak ontbreekt bij de commerciële varianten, is het stuk governance. Ook zaken zoals uitgebreide, grafische beheer en monitoring tools ontbreken vaak nog, of worden als losse commerciële opties aangeboden.
Wat we in de toekomst zullen zien is dat ook op dit vlak de open source ESBs een grote stap zullen maken. De bovenstaande aspecten zullen verbeteren, en langzaam zullen de ESBs niet alleen meer zorgen voor een stuk technische integratie maar een complete SOA oplossing kunnen bieden, inclusief complexe zaken als governance.

Verschillen met commerciële producten

Als je deze open source producten gaat vergelijken met de commerciële varianten dan zal er qua 'echte' ESB functionaliteit niet veel verschil zijn. Ik denk zelfs dat m.b.t. connectiviteit, routering en transformatie mogelijkheden en ondersteuning van standaarden de open source varianten verder zijn dan de commerciëel beschikbare producten.

De grootste verschillen zitten in de volgende zaken:

  • Support: Een aantal open source ESBs biedt wel commerciële ondersteuning (bijv. Mule, Fuse, en JBossESB), maar vaak niet zo uitgebreid als een IBM, Microsoft of Oracle kan bieden. De vraag is ook altijd hoeveel je nodig hebt. Wat wij tot nu toe uit de praktijk merken is dat de meeste issues die we in de producten tegen komen, we vaak zelf al op kunnen lossen. Voor de problemen die te complex waren, hadden we vaak binnen een paar dagen een oplossing van één van de ontwikkelaars.
  • Grafische tools: Een ander groot verschil is dat, zoals al eerder vermeld, de open source ESBs zich niet echt richten op het ontwikkelen van grafische tools. Als je applicaties aan het integreren bent, ben je dus veel met XML bezig, of met een eigen verzonnen DSL. Op dit vlak bieden de  commerciële partijen een veel rijkere set van tools om mee te werken, te debuggen en te beheren.

Het laatste punt van grafische tools is wel iets wat de ontwikkelaars van de open source producten zich aangetrokken hebben. Er lopen nu verschillende projecten om tools te ontwikkelen waarmee grafisch een integratie stroom getekend kan worden.
Eclipse host nu het “Enterpise Integration Designer” project. Hieronder staat hoe Eclipse zelf het project beschrijft:

The STP Enterprise Integration Designer is a graphical development environment for integration solutions based upon the popular Enterprise Integration Patterns developed by Gregor Hohpe and Bobby Woolf. The purpose of Integration Patterns is to provide a consistent vocabulary and visual notation framework to describe large-scale integration solutions across many technologies.
En als je kijkt naar de eerste resultaten kun je zien dat het een grafische omgeving biedt waarmee open source ESBs geconfigureerd kunnen worden.

figuur 1

figuur 2 De nieuwe versie van open ESB is zelfs bezig om een web gebaseerde editor te maken, waar de eerste preview releases pas van uitgekomen zijn.

Conclusies

Dit is nog maar een korte introductie in wat er allemaal speelt in de open source ESB wereld. Er zijn veel volwassen open source producten die ook goed in bedrijfs kritische omgevingen ingezet kunnen worden en die zeker niet onderdoen voor de commerciële varianten.

Elk product wat in dit artikel genoemd wordt heeft zo zijn eigen voor en nadelen en past in de ene situatie beter dan in de andere. Voordat je besluit om een bepaald product te kiezen, kijk heel goed wat de problemen zijn die je hiermee op wilt lossen.

Lees meer over Atos Origin
Ga terug naar We Love IT uitgave 1 - 2009