Think different – Event Streaming mit Apache Kafka.
Die 2020iger – eine Dekade eventgetriebener Business Prozesse.
Die digitale Welt wird realtime, nicht nur geschäftlich, auch im privaten Alltagsleben: Kommunikation läuft über WhatsApp Chats, Filme werden in Streams konsumiert, Aktienorder in Bruchteilen von Sekunden auf Trading Plattformen rund um den Globus ausgeführt, online Essensbestellungen landen direkt in den Küchen. Eine rasante Beschleunigung von Geschäftsprozessen macht das möglich. Sie basieren auf stetigen Datenflüssen, „data streams“ oder „streaming data“, die realtime, oder zumindest near realtime, verarbeitet werden. Befassten sich IT Systeme in der Vergangenheit hauptsächlich mit statischen Daten, „data at rest“, stehen nun „data in motion“ im Fokus. Das erfordert einen neuen Ansatz in der Datenverarbeitung: „Events“ rücken ins Zentrum der Betrachtung, Geschäftsprozesse werden Event getrieben. Es kann davon ausgegangen werden, dass sich bereits Zweidrittel aller Geschäftsprozesse in den nächsten Jahren, über alle Branchen hinweg, in diese Richtung entwickeln werden: Logistik, Sportwetten, Finanzsektor, Einzelhandel, Software, Reisebranche, Energieindustrie oder klassische Industriebetriebe. Bei Unternehmen wie Walmart, Expedia, Adobe, BNP PARIBAS, Betgenius oder PLEX ist es bereits Alltag.
„It’s not about things, it’s about events.“
In der klassischen IT stehen Dinge im Vordergrund. Ihr jeweiliger Zustand wird in einer Datenbank abgelegt. Unternehmen, die ihre Geschäftsprozesse auf Streaming Data aufbauen, ändern die Betrachtungsweise. Bei ihnen steht ein kontinuierlicher Fluss an Events im Vordergrund, Zustände markiert durch Zeitstempel. Events können beispielsweise die Änderung einer Zustelladresse in einem laufenden Versandprozess, eine prozentuelle Kursschwankung einer Aktie in einer definierten Zeitspanne, eine Vibration im Zuge eines Predictive Maintenance, eine „fraud detection“ im digitalen Zahlungsverkehr sein, oder wenn ein Prosumer mit seiner Photovoltaik Anlage ans Netz geht. Allen diesen Events ist gemein, dass sie im realen Leben stattgefunden haben und ihnen möglichst realtime eine Aktion folgen muss. Bewegt sich der Geschäftsprozess in den Bereich Big Data, dann ist das notwendige „realtime processing“ mit klassischen Ansätzen kaum noch lösbar.
Apache Kafka – einwenig klassische Seefahrt.
Event Streaming Data in klassischen Datenbanken abzubilden, ist aus vielen Gründen kein geeignetes Konzept. Die Lösung liefert die Open Source Plattform Apache Kafka und die erinnert an die Navigation in Zeiten vor GPS oder Sextanten und nautischen Almanachen. Um zu wissen, wo sich ein Schiff befand, wurde „gekoppelt“. In regelmäßigen Abständen oder bei Kursänderungen wurde mit einer Logge die Geschwindigkeit gemessen und diese mit Windrichtung, geschätzter Abtrift, Kompasskurs und Uhrzeit als Event in einer Karte eingetragen. Bei größeren Fahrten auch als verteilte Events über mehrere Seekarten.
Nichts anderes macht Apache Kafka. Es schreibt Events, Datensets, die einen Zustand beschreiben samt Zeitstempel, in einen Logfile, einer geordneten Reihe aus Events, die in Apache Kafka als „topic“ bezeichnet werden. Ein Topic könnte also „Navigation Amsterdam – London“ sein. In Bezug auf Datenökonomie oder Systemarchitektur macht Apache Kafka keinerlei Restriktionen. Topics bedürfen keiner gewissen Größe, dass ein Einsatz von Kafka Sinn machen würde. Sie können Sekunden abbilden oder unendlich sein. Die Systemarchitektur unterliegt keinen Größenbeschränkungen. Und auch das Thema Skalierbarkeit, das in klassischen Datenbanken oft kein leichtes ist, meistert Apache Kafka unter dem Begriff „elastic scalability“.
Kafka Streams API – managen von Kafka Topics.
Apache Kafka wurde dazu konzipiert, in unbeschränktem Umfang Logs zu managen. „Es ist das Schicksal und vielleicht auch die Größe dieses Werks, dass es alle Möglichkeiten darbietet und keine bestätigt.“ befand Albert Camus über das Werk Franz Kafkas. So verhält es sich auch mit Apache Kafka. Gemanagt werden Topics mit Kafka Streams. Die Idee hinter Streams sind viele kleine Apps, kein klassischer Programm Monolith, die mit Topics kommunizieren, Events gruppieren, aggregieren, filtern oder anreichern und in neue Topics schreiben. Code muss dafür keiner geschrieben werden, da Streams eine Java-Bibliothek ist. Antworten liefert Apache Kafka aber keine.
Kafka Connect API – nicht alles ist kafkaesk.
Die neue Datenwelt ist nicht „data in motion“ alleine. Event Streams ergänzen statische Daten zu einem größeren Ganzen, vorausgesetzt, die Daten finden sinnvoll zusammen. Das wird durch die Kafka Connect API bewerkstelligt, eine Bibliothek aus Konnektoren, teils Open Source, teils Enterprise Lösungen oder irgendwo dazwischen angesiedelt, die mit externen Daten kommunizieren. Der Weg führt in Apache Kafka hinein oder hinaus.
Auch „data at rest“, statische Daten, sind nicht immer in Stein gemeißelt. Aktualisiert ein Kunde in einem laufenden Logistikprozess beispielsweise eine Lieferadresse in einer SQL Datenbank, stellt dies ein Event dar, das über einen SQL Konnektor in ein Apache Topic geschrieben werden kann. Für den Business Prozess relevante Events können überall auftreten, was dazu führt, das einmal mit Apache Kafka begonnen, virale Entwicklungsprozesse beginnen. Events finden in statistischen Analysen im Bereich Market Research statt, in Zeitreihen für Prognosen und vielem mehr.
Kommunikation ist nichts Einseitiges. In einem Event Stream eines Kafka Topics können Events auftreten, die für externe Systeme Bedeutung haben. Services, die diese entdecken, beispielsweise als Dashboards, können diese in neue Kafka Topics schreiben, um sie wiederum über Kafka Connect externen System zur Verfügung zu stellen.
Kafka ist komplex – Hilfe in der Cloud.
So brillant einfach die Idee von Apache Kafka ist, so anspruchsvoll stellt sich die technische Implementierung in bestehende Systemarchitekturen dar. Die Konzeption als verteiltes System, das Skalierbarkeit und Performance im Big Data Bereich voraussetzt, passt nicht zu klassischen IT Infrastrukturen. Tendenziell wird zu gemanagten Lösungen gegriffen, die elastisch skalierbar sind, Datenbanksprachen, die an SQL angelehnt sind wie KSQL, anbieten, Konnektor Bibliotheken vorhalten und Performance Garantien abgeben. Player in diesem Segment sind beispielsweise IBM Event Streams, CONFLUENT, ein Unternehmen, das von den drei Schöpfern*) von Apache Kafka gegründet wurde, HAZELCAST oder axual. Letzteres setzt mit seiner Lösung einen Schwerpunkt im Bereich Energiewirtschaft.
Apache Kafka in der Energiewirtschaft – Webinar axual und HAKOM Time Series.
Offensichtlich wird Event Streaming in der Energiewende ein zentrales Thema werden. Microgrids, Prosumer, Batteriekraftwerke und mehr, werden Big Data Event Streams produzieren, die realtime Aktionen erfordern werden, um Netze stabil zu halten. Im 30 minütigen Webinar „Event Streaming in the Energy Industry“ werden Jeroen van Disseldorp, CEO & Co-founder axual, Stefan Komornyik, CEO & Co-founder HAKOM Time Series und Ricardo Wickert, Head of R&D HAKOM Time Series, Chancen und Herausforderungen für die Energiewirtschaft beleuchten. Ein zentrales Thema wird die Verbindung klassischer Zeitreihendaten der Energiewirtschaft mit Event Streams sein.
Das Webinar „Streaming Data in the Energy Industry.“ vom 16. September 2021 on demand ansehen.
*) Jay Kreps, Neha Narkhede, Jun Rao