Interview mit Paul Brebner auf der ApacheCon Europe 2019

Stream Processing: „Die Frage lautet nicht Kafka oder Flink?“

Katharina Degenmann

Im Zeitalter von Big Data gehört die Analyse und Nutzung von Daten für Entwickler zum Alltagsgeschäft. Und hier kommt Stream Processing ins Spiel. Zu den üblichen Verdächtigen zählen hierbei Apache Kafka und Apache Cassandra. Im Interview auf der ApacheCon Europe 2019 sprachen wir mit Paul Brebner (Open Source Technology Evangelist, Instaclustr.com) über die Apache-Projekte Kafka, Cassandra und Flink.

JAXenter: Apache Kafka wurde entwickelt, um die Verarbeitung von Datenströmen zu unterstützen. Kannst du zuerst die Idee hinter Stream Processing erklären?

Paul Brebner: Kafka wurde ursprünglich für die Unternehmensintegration entwickelt – es ist ein hoch skalierbares und schnelles, ereignisbasiertes Publish-Subscribe-System. Daher ist es besonders für die Integration heterogener Datenquellen geeignet. Es vereinfacht ein komplexes „Spaghetti“-Integrationsproblem und unterstützt dabei, von „viele-auf-viele“ hinzu „viele-auf-1“ oder „1-auf-viele“ umzustellen, wobei Kafka die „1“ ist.

Außerdem ist es für die Stream Processing geeignet. Beispielsweise, um eine Reihe verschiedener Ereignisquellen zu nutzen oder eine Art Verarbeitung durchzuführen – egal, ob auf einfachere Weise (z.B. zustandslose Transformationen) oder auf komplexere (zustandsabhängig, vielleicht über ein Zeitfenster) – und, wenn man ein oder mehr Ausgabe-Streams erzeugen möchte, möglicherweise zur Weiterverarbeitung oder zum Senden an andere Systeme, etc.

JAXenter: Welche Vorteile hat Apache Kafka im Vergleich zu anderen Technologien wie Apache Spark oder Apache Flink?

Paul Brebner: Kafka wurde so konzipiert, dass es hochgradig skalierbar (nur durch Hinzufügen zusätzlicher Kafka-Knoten) und schnell bzw. in Echtzeit (Reaktionszeiten in Sekundenschnelle) arbeitet.

Ich denke, dass das Ökosystem um Cassandra und Kafka weiter ausgebaut wird, ebenso wie die Fähigkeiten der Kerntechnologien selbst.

Spark ist ebenfalls auf Skalierbarkeit ausgelegt, aber in erster Linie Chargen-orientiert, so dass es bei Echtzeitproblemen nicht so effizient ist. Da Kafka für Skalierbarkeit/Geschwindigkeit entwickelt wurde, hat es einige Vereinfachungen, die andere Pub-Subsysteme (z.B. JMS) nicht haben. Es basiert auf Themen und Partitionen für das Nachrichten-Routing und unterstützt keine Streams, die die Verarbeitung oder inhaltsbasierte Bereitstellungsvorgänge im Kafka-Cluster selbst verarbeiten. Diese werden alle in unabhängigen Anwendungen ausgeführt.

Flink (speziell für das Stream Processing) wird eigentlich oft in Verbindung mit Kafka verwendet und lässt uns die Wahl, Kafka Streams zu verwenden oder nicht. Man kann auch einfach eine eigene Kafka-Anwendungen für eine komplexere Verarbeitung schreiben. In meiner IoT-Anwendung „Kongo“ beispielsweise, über die ich auf der ApacheCon Berlin spreche, ist meine Anwendung zur Echtzeit-Regelprüfung nur reines Java. Kafka eignet sich auch gut zur Entkopplung von Event-Produzenten und -Konsumenten und wirkt als „Puffer“, um zu verhindern, dass nachgelagerte Systeme bei einem kurzen Lastanstieg überlastet werden.

JAXenter: Kannst Du uns ein Beispiel für einen typischen Anwendungsfall nennen?

Paul Brebner: Ich habe in den letzten Jahren einige Demonstrationsanwendungen für Kafka entwickelt. Darunter eine IoT-Anwendung („Kongo“), die einen groß angelegten und komplexen Logistikbereich simuliert, in dem viele Waren mit LKWs zwischen den Lagern bewegt werden – inklusive Regeln zur Überprüfung der Umweltbedingungen und zur Kollokation von Warentypen. Es demonstriert Kafka-Konnektoren, um Ereignisse zur Speicherung und späteren Abfrage an Cassandra zu senden (z.B. sobald Waren geliefert werden, um zu überprüfen, ob es während des Liefer- und Lagerlebenszyklus von Waren Regelverstöße gab), und ein Kafka Streams-Beispiel, um zu überprüfen, ob LKWs überladen sind.

Die zweite Anwendung ist eine Echtzeit-Anomalie-Erkennungsanwendung (Anomalia Machina). Dies könnte in verschiedenen Bereichen eingesetzt werden, die Echtzeit (Subsekunde) und skalierbare Anomalie-Erkennung benötigen. Die Anwendung kann leicht skaliert werden, um mit allem fertig zu werden, was von 1.000 bis zu Milliarden Checks pro Tag reicht. Zudem verarbeitet sie Milliarden von verschiedener Keys (z.B. Benutzerkonten, URLs, IoT-Geräte, etc.). Unter anderem FinTech Betrugserkennung, Clickstream-Analyse, Anwendungs- und Maschinenüberwachung etc. Viele Unternehmen (und einige unserer Kunden) nutzen Kafka für Fälle wie Online-Spiele, IoT, Unternehmensintegration. Auch einige bekannte Unternehmen wie Netflix, Instagram und Uber setzen es ein.

JAXenter: In deiner Sitzung sprichst du auch über Apache Cassandra. Was ist der Vorteil von Cassandra? Was braucht man, um Cassandra erfolgreich zu nutzen?

Blockchain Whitepaper 2019

Free: Blockchain Technology Whitepaper

If building a blockchain from scratch is beyond your current scope, the blockchain technology whitepaper is worth a look. Experts from the field share their know-how, tips and tricks, development advice, and strategy for becoming a blockchain master.

Paul Brebner: Cassandra ist eine ausgereifte, hochskalierbare, hochverfügbare NoSQL-Datenbank. Sie ist sehr schnell, insbesondere beim Schreiben. Auf diese Weise kann man kontinuierlich viele Daten schreiben und dann in Ruhe abfragen. Es ist besonders gut für Daten von Zeit-Serien, wie sie in Überwachungs- und IoT-Bereichen üblich sind. Cassandra ist gut für die Speicherung und Wiederherstellung unternehmenskritischer Daten, da man aufgrund seiner hochgradig replizierten Architektur sicher sein kann, dass seine Daten sicher und konsistent (Casandra hat eine einstellbare Konsistenz) sowie jederzeit verfügbar sind, wenn man sie braucht. Man muss wissen, wie man seine Daten und Abfragen modelliert, damit Cassandra am besten funktioniert. Außerdem ist es hilfreich, einen vertrauenswürdigen Managed Service Provider zu haben, da der Betrieb großer Cassandra-Cluster nicht trivial ist. Die proaktive Überwachung der kritischen Cassandra-Metriken ist ebenfalls unerlässlich, um SLA-Verletzungen zu vermeiden.

JAXenter: Deiner Meinung nach, wie sehr verändern große Daten- und Stream-Processing-Technologien die Softwareentwicklung? 

Paul Brebner: Sie ermöglichen es jedem – von Start-ups über bestehende Unternehmen bis hin zu Regierungsstellen – Probleme anzugehen, die bisher aufgrund von Skalierbarkeit und Leistungseinschränkungen mit älteren Technologien schwierig und teuer waren.

Cassandra und Kafka erleichtern es Entwicklern, sich auf ihre spezifischen Geschäfts- anwendungen zu konzentrieren.

Cassandra und Kafka erleichtern es Entwicklern, sich auf ihre spezifischen Geschäftsanwendungen zu konzentrieren, während diese Big- und Fast-Data-Technologien in Kombination mit Managed-Open-Source-Service-Providern und Cloud-Plattformen die Leistung, Verfügbarkeit und Skalierbarkeit ermöglichen. Man kann auch mit kleinen Clustern beginnen und schnell mehr zur Verfügung stellen, wenn unerwartete Nachfrage (und Erfolg!) auftauchen. Mit dem rasanten Aufschwung dieser Technologien gibt es auch viele Beispiele und auch andere Entwickler, die helfen zu verstehen, wie man mit ihnen am besten skalierbare Anwendungen erstellt. Die ApacheCon ist eine tolle Konferenz für dieses Projekt, da man sowohl von großen als auch von neueren Anwendern und Anbietern hört, die die Technologien nutzen und kann so das nötige Vertrauen gewinnen, um sie selbst auszuprobieren.

JAXenter: Wie sieht die Zukunft von Apache Cassandra oder Kafka und damit die Stream Processing aus? Wie wird sich diese Technologie entwickeln, welches Potenzial und welche Alternativen gibt es?

Paul Brebner: Ich denke, dass das Ökosystem um Cassandra und Kafka weiter ausgebaut wird, ebenso wie die Fähigkeiten der Kerntechnologien selbst. Zum Beispiel bieten wir bei Instaclustr gemanagte Cassandra, Kafka, Spark, Lucene und bald Elasticsearch an, und verwenden und haben einige Kubernetes-basierte Open-Source-Tools zur Verfügung gestellt. Auf der ApacheCon Las Vegas war ich auch beeindruckt von der Vielfalt der Apache-Projekte und wie gut einige bereits zusammenarbeiten. Aber ich denke nicht, dass die Frage „Kafka oder Flink?“ lautet, sondern es eher darum gehen wird, wie man sie zusammen für einige Anwendungsfälle verwendet. Ich habe kürzlich einen Blogeintrag über ApacheCon Las Vegas geschrieben, der Kern- und Ergänzungstechnologien umfasst, die einem einige Ideen für zukünftige Entwicklungen geben können.

JAXenter: Vielen Dank für das Interview!

Since learning to program on a VAX 11/780, Paul has extensive R&D and consulting experience in distributed systems, technology innovation, software architecture and engineering, software performance and scalability, grid and cloud computing, and data analytics and machine learning.
Paul is the Technology Evangelist at Instaclustr. He’s been learning new scalable technologies, solving realistic problems and building applications, and blogging about Apache Cassandra, Spark, Zeppelin, and Kafka.
Paul has worked at UNSW, several tech start-ups, CSIRO, UCL (UK), & NICTA. Paul has helped pre-empt and solve significant software architecture and performance problems for clients including Defence and NBN Co. Paul has an MSc in Machine Learning and a BSc (Computer Science and Philosophy).
Geschrieben von
Katharina Degenmann
Katharina Degenmann
Katharina ist hauptberuflich hilfsbereite Online- und Print-Redakteurin sowie Bücher- und Filme-Junkie. Nebenbei ist sie Möchtegern-Schriftstellerin, die heimlich hofft, eines Tages ihr Geld als Kaffee-Testerin zu verdienen. Seit Februar 2018 arbeitet sie als Redakteurin bei der Software & Support Media GmbH, davor hat sie Politikwissenschaft und Philosophie studiert.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: