Kommunikation mit Zuversicht
Im dynamischen Umfeld des Bankwesens ist der Verlust bedeutender Nachrichten ein ernsthaftes Problem. Besonders in Systemen, die auf einer Event-Driven Architecture basieren, kann dieses Risiko schnell zur Realität werden. Kürzlich stand ich vor der Herausforderung, genau diese Problematik für einen unserer Kunden zu untersuchen. In diesem Artikel möchte ich nicht nur die Lösung meiner Analyse vorstellen, sondern auch praxisnahe Einblicke bieten, wie die Datenzuverlässigkeit effektiv gesteigert werden kann.
Die Herausforderungen der Event-Driven Architecture
Die Event-Driven Architecture bietet zahlreiche Vorteile. Das Entkoppeln von Microservices und die asynchrone Kommunikation durch einfache Nachrichten ermöglichen die effiziente Bewältigung von Stolpersteinen wie Skalierbarkeit, geringer Latenzzeit, Ausfallsicherheit und Wartbarkeit.
Allerdings birgt sie auch Herausforderungen, die sorgfältig berücksichtigt werden müssen. Nachrichten werden in der Regel nach dem «Fire-and-Forget»-Prinzip versendet. Die Gewährleistung, dass diese ihr Ziel erreichen und korrekt verarbeitet werden oder sogar den nächsten Message Broker erreichen, der die Nachrichten persistent speichert, wird nicht automatisch sichergestellt. Auf dem Weg können viele Dinge schiefgehen: Services können ausfallen, das Netzwerk kann versagen usw.
Im besten Fall werden Fehler irgendwo im Log erfasst, was jedoch mit aufwendigem Monitoring verbunden ist. Im schlimmsten Fall verschwinden die Nachrichten einfach spurlos.
Im Bankensektor können solche Fehler schnell schwerwiegende Konsequenzen haben, sei es bei der Abwicklung von Finanzprodukten, beim Ausführen von Zahlungen oder zur Erfüllung regulatorischer Anforderungen.
Die Lösung: Apache Camel
Apache Camel stellt ein leistungsfähiges Integrationsframework zur Verfügung, das viele Funktionen «out of the box» als einzelne Komponenten bereitstellt, die wie Legosteine flexibel kombiniert werden können. Routing, Transformation, Anreicherung von Nachrichten sowie die Verbindung zu einer Vielzahl von Services werden durch diese vorgefertigten Komponenten erleichtert.
Mit einer einfachen Konfiguration in Apache Camel kann man beispielsweise transaktional von Apache Kafka oder anderen Message Queues konsumieren. Hierbei bedeutet transaktional, dass im Falle eines Fehlers der Zustand zurückgesetzt wird und somit keine Nachrichten verloren gehen. Apache Camel schafft dies, indem es:
1. die Nachrichten liest (1) und sie zur REST-Schnittstelle weiterleitet (2), jedoch erst als abgeschlossen markiert, wenn die Bestätigung einer erfolgreichen Verarbeitung (3) vom Endpunkt zurück zu Kafka gelangt (4).





