Suche

Apache Camel: Agile Enterprise-Integration

Camel Features

Nach diesem nicht unbedingt trivialen Beispiel soll noch einmal auf die am Anfang des Artikels vorgestellten Argumente eingegangen und aufgezeigt werden, wie sie auf das gezeigte Beispiel zugeordnet sind:

  • Agilität: Die meisten der bevorzugten Ansätze in Softwareentwicklungsprozessen basieren heutzutage auf dem Konzept „Agile Development“. Grundsätzlich fördert diese Idee Dinge wie die pragmatische Anforderungsanalyse, ständige Verbesserung durch Benutzerfeedback, automatisches Testen und dynamische Priorisierung von Featureimplementierungen. Im Hinblick darauf ermöglicht Camel, mit einer kleinen Applikation zu beginnen und sie stetig bis auf Produktionsstufe auszubauen. Ein weiteres Designprinzip von Camel ist die Testbarkeit. Camel bietet alle notwendigen Werkzeuge an, um den Testprozess zu automatisieren, und stellt viele Unit Tests und Mock-Objekte zur Verfügung.
  • Leichtigkeit: Unternehmenssoftware hat den Ruf, groß dimensionierte Runtime-Plattformen zu benötigen, die auch von großzügig dimensionierten Entwicklerplattformen die Ressourcen stark beansprucht. Das führt ziemlich schnell zu Frustrationen unter den Entwicklerteams, da dieser Ressourcenhunger drastisch die Produktivität der Teams reduzieren kann. Camel ist auch in Bezug auf die Softwareverteilung eine sehr vielseitige Middleware. Die vorgestellten Beispiele zeigen die einfachste der Optionen (Java-Standalone-Applikation). Aber eine Camel-Applikation kann auch in einem Framework, z. B. Spring, in einem Application-Container oder sogar als OSGi-Modul eingesetzt werden. Die benötigten Änderungen zum Starten der Applikation in unterschiedlichen Umgebungen sind minimal, sei das in einer Test- oder aber in einer Produktionsumgebung.
  • Adäquate Lernkurve: Unter Einbeziehung der Tatsache, dass Nachrichtensysteme sehr komplex sind, und obwohl die Grundlagen meist gut dokumentiert, aber nicht allen Entwicklern gut vertraut sind, sieht man, dass die Steigung der Lernkurve, bei Themen, z. B. asynchrone Aufrufe oder Patterns zum Austausch von Nachrichten, stark abnimmt und somit die Produktivität der Entwicklerteams senkt. Eine adäquate Ausbildung und Referenzdokumentation sind zwar ein Muss, aber sehr oft ziehen es Entwickler vor, anhand eines Beispiels ein Feature umzusetzen oder mit einem High Level API die Möglichkeiten einer Software auszuloten, um sie dann für einen Anwendungsfall der Applikation zu adaptieren. Camel bietet diese technischen Ressourcen an, und mittels vieler verfügbaren DSLs wird hinsichtlich des Enterprise Integration Patterns und anderen domänenspezifischen Abstraktionen ein High Level API zur Verfügung gestellt.
  • Wiederverwendbarkeit: Diese kommt auf unterschiedliche Art und Weise in Apache Camel vor. Nachfolgend sind die Relevantesten davon aufgeführt:
    • Wiederverwendung von Code: Da Apache Camel ein Open-Source-Projekt ist, wird nicht nur der produktive Quellcode zur Verfügung gestellt, sondern auch umfangreiche und einheitliche Tests, die die Funktion zusätzlich dokumentieren. Der Quellcode dient zudem auch als Fundgrube von Codebeispielen für die Entwickler der Applikationen. Wie Nachrichtensysteme funktionieren, ist nicht trivial, und so unterstützen diese vielfältigen Codebeispiele den Lernprozess auf eine einfache Weise. Camel erlaubt auch die Integration zahlreicher Open-Source-Projekte, mit Unterstützung von Datenformaten, Sprachensupport oder mittels spezieller Komponenten.
    • Wiederverwendung von Modulen: Das ist eine direkte Konsequenz des modularen Designs. Es erlaubt, die Camel-Funktionen in Module zu packen und sie in anderen, auf Camel basierenden Projekten wiederzuverwenden. Camel selbst ist modular. Das erlaubt Entwicklern, Packages selektiv für die Applikation auszuwählen (das geschieht durch die Dependencies-Definitionen in der POM-Datei).
    • Wiederverwendung von Fachkenntnissen: Camel ist ein Java-Projekt, das von Beginn an sehr gut mit dem Spring Framework integriert war. Java und Spring gehören zu den Schlüsseltechnologien innerhalb der Enterprise-IT-Welt und helfen enorm, ein dazu passendes Entwicklerteam zu finden.
    • Wiederverwendung von Know-how: Ein Hauptmerkmal von Apache Camel ist die Implementierung der Enterprise Integrations Patterns, die im gleichnamigen Buch von Gregor Hohpe und Boppy Woolf beschrieben werden. Durch die Anwendung dieser Architektur-Patterns profitiert ein Entwickler automatisch vom Know-how und der Erfahrung dieser Softwareingenieure. Dadurch wird ein kostspieliger Prozess vermieden, eine eigene Lösung durch Ausprobieren zu finden. Weiter wird die breite Anwendung dieses wertvollen Know-hows zusätzlich gefördert.
Fazit

Camel ist ein ausgewachsenes Projekt, mit dem einerseits leicht zu beginnen ist, andererseits auch sämtliche erforderlichen Features einer typischen Enterprise-Integration-Applikation, das heißt von der Transaktionsabwicklung bis zur Fehlerbehandlung, anbietet. Aber Camel ist entschieden kein Enterprise Service Bus (ESB). Das ist aus der Sicht vieler ein Vorteil, da dadurch die Projektgröße nicht zu umfangreich ist und sich Camel auf die Funktionen konzentriert, für die es entworfen worden ist. Um diesen Mangel an Funktionen auszugleichen, bietet Camel eine ausgezeichnete Integration zu Apache ServiceMix und anderen Produkten mit ESB-Möglichkeiten an.

Ich hoffe nun, dass dieser Artikel mindestens Ihr Interesse geweckt und Sie davon überzeugt hat, das nächste Mal, falls Sie Funktionen für die Integration von Services benötigen, Camel auszuprobieren oder wie Entwickler sagen: „to give Camel a ride“.

Alberto Mijares ist Softwareingeneur mit mehr als zehn Jahren Erfahrung in der IT-Welt. Er ist Scrum Master und Agile-Anwender und bietet großes Know-how zu Webtechnologien und Java Enterprise Applications. Auch nahm er in der Vergangenheit an W3C-Projekten in Verbindung mit der Semantic-Web-Initiative teil. Außerdem gibt Alberto Mijares regelmäßig Tipps und Tricks an Entwicklerteams weiter und ist Spezialist für Technologien wie das Google Web Toolkit, Apache Camel und Apache Solr. Seit 2008 arbeitet er für die Canoo Engineering AG in der Schweiz.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.