Der Softwareentwickler erläutert: Kafka

Jeden Monat sprechen wir mit einem Sofico-Kollegen über eine Anwendung oder ein Tool, das Sofico täglich verwendet. Diesen Monat erläutern uns Petar Pilipovic (Lead Developer) und Wim Van Den Eynde (Technical Consultant) Apache Kafka. ​​​​​​​

Sie musste schnell sein – fast ohne Latenz – und in der Lage, hohe Datenmengen zu verarbeiten und einfach zu skalieren. Solch eine Anwendung fanden wir in Apache Kafka

Petar

Was ist Kafka? 

Apache Kafka ist eine distribuierte Streamingplattform. Sie hat drei wesentliche Fähigkeiten: 

  1. Mit ihr lassen sich Datensatzströme veröffentlichen und abonnieren. In dieser Hinsicht ähnelt Kafka einer Message Queue oder einem Enterprise Messaging System. 

  2. Sie können damit Datensatzströme auf fehlertolerante Weise speichern. 

  3. Sie können damit Datensatzströme verarbeiten, wenn sie anfallen. 

Kafka ist ein von LinkedIn entwickeltes Open-Source-Projekt, das seit 2012 der Apache Software Foundation gehört. Einer der Kafka-Gründer, Jay Kreps, benannte die Software nach dem Schriftsteller Franz Kafka, denn es handelt sich um ein „zum Schreiben optimiertes System“.

Warum verwenden wir Kafka bei Sofico? 

„Alles begann vor ein paar Jahren, als neue Anforderungen es erforderlich machten, Analysen und Berichte beinahe in Echtzeit zu erhalten. Mit dem Setup und der Architektur, die wir zu diesem Zeitpunkt hatten, konnte sich die Erfüllung solcher Anforderungen auf die Leistung unseres Kernsystems auswirken, also suchten wir nach einer Lösung. 

Sie musste schnell sein – fast ohne Latenz – und in der Lage, hohe Datenmengen zu verarbeiten und einfach zu skalieren. Solch eine Anwendung fanden wir in Apache Kafka.“ 

Strimzi liefert Containerbilder und Operatoren, damit Kafka auf Kubernetes laufen kann.

Wim

Wie verwenden wir Kafka bei Sofico? 

„Wir verwenden Kafka als Streamingplattform. Wir streamen Daten von unserem Miles-Kernsystem zu unserer Miles-Microservice-Plattform. Daten aus Miles Core werden zu Topics gestreamt, wo sie genutzt werden sollen. Die Daten werden dann in ein kanonisches Domain-Modell umgewandelt und in Domain-Topics veröffentlicht.“ 

Wir setzen Kafka als Teil unserer Miles-Microservice-Plattform auf Kubernetes ein. Wir verwenden Strimzi, um Kafka-Cluster auf Kubernetes in verschiedenen Implementierungskonfigurationen zu betreiben.

Petar


Gibt es Abhängigkeiten und besondere Arbeitsweisen? 

Ein typisches Kafka-Setup enthält mehrere Broker und Zookeeper-Instanzen, die als Diensterkennung fungieren. In Zukunft wird Zookeeper aus dem Kafka-Setup entfernt, aber die aktuellen Versionen benötigen ihn noch. 
 
Wir setzen Kafka als Teil unserer Miles-Microservice-Plattform auf Kubernetes ein. Wir verwenden Strimzi, um Kafka-Cluster auf Kubernetes in verschiedenen Implementierungskonfigurationen zu betreiben. 

Strimz liefert Containerbilder und Operatoren, damit Kafka auf Kubernetes laufen kann. Operatoren vereinfachen den Prozess der Implementierung und des Betriebs von Kafka-Clustern und -Komponenten. Darüber hinaus ermöglichen sie uns, den Zugriff auf Kafka zu konfigurieren, Kafka zu aktualisieren und Broker zu verwalten, wie z. B. die Erstellung und Verwaltung von Topics und Benutzern. 

Haben Sie Tipps und Tricks, die für andere nützlich sein könnten? 

„Kafka ist hochgradig konfigurierbar. So lässt sich ein höherer Datendurchsatz oder eine höhere Datenkonsistenz erzielen. Wir konfigurieren Kafka für einen hohen Datendurchsatz, wenn weniger wichtige Daten zu streamen sind (die am Ende aggregiert werden), aber wir brauchen die Daten als Echtzeit-Feed. 

Wir konfigurieren Kafka für hohe Datenkonsistenz, wenn wir sehr wichtige Daten streamen wollen (z. B. Kundentransaktionen) und wir keine Daten verlieren wollen.“


---

​​​​​​​Abbildung: Franz Kafka

Gibt es Alternativen zu Apache Kafka? 

„Ja, es gab zu diesem Zeitpunkt auch andere Alternativen wie IBM MQ oder Rabbit MQ, aber da Kafka große Datenmengen auf sehr performante Weise verarbeiten kann und auch einige andere für uns interessante Funktionen bietet, haben wir uns für Apache Kafka entschieden. 

Wir nutzen die Software oder Frameworks, die am besten zu unseren Bedürfnissen passen und uns Vorteile für unsere Projekte bringen. Das ist letztlich das Wichtigste für unsere Kunden.“ 

Schlagworte


Share this story  —   Facebook     Twitter     LinkedIn     Xing

Verfolgen Sie im Detail mit, was bei Sofico so alles passiert