Look Ma, No Code!

Vorhang auf für KSQL: Stream Processing, ganz ohne Coding

Robin Moffatt, Michael Noll

@ Shutterstock / agsandrew

Würden Sie die Straße überqueren, wenn Ihre Verkehrsinformationen bereits eine Minute alt sind? Natürlich nicht, viel zu gefährlich! Ähnlich verhält es sich für Unternehmen in der heutigen Geschäftswelt, denn auch hier sind zu jedem Zeitpunkt hochaktuelle Daten gefordert – sei es aufgrund von Konkurrenzdruck oder aufgrund von Kunden, die immer höhere Anforderungen an das Nutzererlebnis in Zusammenhang mit Produkten oder Services stellen.

In einer Zeit, in der Verbraucher sich ohne Weiteres brandneue Filme mit einem einzigen Klick über ihr iPad ansehen können, gibt es keinen Grund, weshalb es mehrere Stunden dauern sollte, über die neuesten Aktivitäten auf seinem Bankkonto benachrichtigt zu werden.

Daten bilden das Herzstück des modernen Unternehmens. Doch diese Daten unterliegen einem konstanten Wandel und gewinnen unaufhaltsam an Umfang. Um aus dieser Sintflut an Daten in Echtzeit Nutzen zu ziehen, vertrauen Unternehmen auf Technologie für Stream Processing (“Datenstromverarbeitung”). Hier haben sich zahlreiche Branchengiganten wie etwa Netflix, Audi, PayPal, Airbnb, Uber oder die The New York Times auf der Suche nach einer geeigneten Streaming-Plattform für Apache Kafka entschieden.

Ganz egal, ob man eine Zeitung liest, im Internet shoppt, ein Hotel oder einen Flug bucht, ein Taxi nimmt, Videospiele spielt oder Geld überweist – bei vielen dieser alltäglichen Aktivitäten spielt Kafka hinter den Kulissen heute eine wichtige Rolle.

Bisher war es für Entwickler und Datenanalysten jedoch nicht einfach, die Welt des Stream Processing zu betreten. Auch diejenigen Lösungen, die heute zu den beliebtesten Stream-Processing-Technologien zählen – darunter auch das Kafka Streams API von Apache Kafka -, erfordern selbst für grundlegende Aufgaben nach wie vor Code in Programmiersprachen wie Java oder Scala. Diese Unabdingbarkeit von Programmierkenntnissen hat zahlreiche Unternehmen davon abgehalten, die Vorteile von Stream Processing vollständig auszuschöpfen. Allerdings gibt es heute eine einfachere Möglichkeit, um Kafka einem größeren Nutzerkreis zugänglich zu machen.

Vorhang auf für KSQL  

Die unter dem Namen KSQL bekannte Streaming-SQL-Engine für Apache Kafka erblickte 2017 das Licht der Welt. KSQL reduziert die Eintrittsbarrieren zur Welt des Stream Processing, da Nutzer nicht mehr über umfassende Programmierkenntnisse verfügen müssen, sondern ganz einfach durch Eingabe simpler SQL-Anweisungen loslegen können, wie etwa:

CREATE STREAM fraudulent_payments AS
    SELECT * FROM payments-kafka-stream 
    WHERE fraud_probability > 0.8

Die oben aufgeführte Streaming-Abfrage wird von KSQL fehlertolerant, elastisch, skalierbar, verteilt und Echtzeit-orientiert ausgeführt, um den Anforderungen moderner Unternehmen gerecht zu werden. Diese Vorteile sind darauf zurückzuführen, dass KSQL auf dem Streams API von Kafka basiert und dementsprechend die technischen Funktionen von Kafka für verteiltes Stream Processing nutzt.

Im Vergleich: Würde die KSQL-Abfrage oben direkt mithilfe des Kafka Streams API in Java oder Scala implementiert, entspräche der Code in etwa der untenstehenden Beispielapplikation. Für einen Vollzeitentwickler ist diese einfach umzusetzen, jedoch ist nicht jeder Vollzeitentwickler.

// Using Kafka’s Streams API
object FraudFilteringApplication extends App {

  val builder: StreamsBuilder = new StreamsBuilder()
  val fraudulentPayments: KStream[String, Payment] = builder
    .stream[String, Payment]("payments-kafka-topic")
    .filter((_ ,payment) => payment.fraudProbability > 0.8)
  fraudulentPayments.to("fraudulent-payments-topic")

  val config = new java.util.Properties 
  config.put(StreamsConfig.APPLICATION_ID_CONFIG, "fraud-filtering-app")
  config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-broker1:9092")

  val streams: KafkaStreams = new KafkaStreams(builder.build(), config)
  streams.start()
}

Während Java- und Scala-Programmierern mit dem Kafka Streams API eine leistungsstarke Bibliothek zur Integration von Stream-Processing-Funktionen in Anwendungen zur Verfügung steht, bietet KSQL einem größeren Spektrum an Entwicklern und technischen Mitarbeitern die Möglichkeit, Datenströme mithilfe von SQL-Anweisungen zu verarbeiten.

Natürlich kann KSQL für weitaus mehr genutzt werden als für den oben genannten, eher simplen Anwendungsfall. KSQL ist Open Source (Apache-2.0-lizenziert) auf Basis des Kafka Streams API. Die Engine unterstützt ein breites Spektrum an Stream-Processing-Funktionalitäten wie etwa Filtern, Transformationen, Aggregationen, Joins, Windowing und Sessionization. Auf diese Weise lassen sich:

  • Echtzeit-Berichte und -Dashboard erstellen und managen,
  • Infrastruktur und IoT-Geräte überwachen,
  • Anomalien und betrügerische Aktivitäten erkennen und melden,
  • sitzungsbasierte Analysen von Nutzeraktivitäten vornehmen,
  • ETL-Prozesse in Echtzeit durchführen
  • und vieles mehr.

KSQL ist auch als Teil von Confluent Platform in Produktion verfügbar, sodass Unternehmen Apache Kafka für die Umsetzung von Use Cases einsetzen können, welche Echtzeit-Datenverarbeitung erfordern. Vielleicht haben Sie KSQL als Apache-Kafka-Nutzer bereits ausprobiert und sich für die intuitive Syntax zur Erstellung und Anreicherung von Echtzeitdaten-Streams begeistert. Oder vielleicht betreiben Sie Confluent Enterprise und sind bereits mit der SQL-Benutzeroberfläche und der Stream-Monitoring-Funktionen innerhalb des Confluent Control Centers vertraut, um die Leistung von KSQL-Abfragen zu überwachen.

In jedem Fall davon kann ich sagen, dass es jetzt an der Zeit ist, KSQL auszuprobieren und damit neue Anwendungsfälle zu erschließen. Mit Hilfe von KSQL kann man tief in die Hauptkonzepte des Stream Processing mit Kafka eintauchen, wie etwa Streams und Tabellen, Datenaggregationen, Skalierbarkeit, und vieles mehr. Um Nutzern den Einstieg und die weitere Verwendung  einfacher zu gestalten, haben wir die Videoserie “Level Up Your KSQL” veröffentlicht.

Stream Processing leicht gemacht: Confluent Cloud & KSQL

Eine weitere Vereinfachung für Unternehmen, die Apache Kafka einsetzen wollen, bietet seit Anfang dieses Jahres Confluent Cloud. Dies ist ein vollständig verwalteter Daten-Streaming-Service auf Basis von Apache Kafka. Data Engineers können mit einem kompletten Kafka-Cluster und den dazugehörigen Diensten beginnen, die sie für die Erstellung von Streaming-Anwendungen benötigen. Es ist innerhalb von Minuten einsatzbereit und ideal für Anwendungen, die eine sehr geringe Latenz und hohe Skalierbarkeit erfordern.

Die wichtigsten Vorteile von Confluent Cloud sind:

  • Schnellere und einfachere Erstellung von Streaming-Anwendungen durch Entwickler
  • Maximale Reduzierung der operativen Belastung
  • Flexibilität zwischen mehreren Clouds und on-premise

Mit Confluent Cloud hat ein Unternehmen eine einzige “Source of Truth” über seine Streaming-Anwendungen hinweg. Geschäftskritische Anwendungen haben Zugriff auf alle Daten, die sie benötigen.

Natürlich ist es wichtig, Daten in Confluent Cloud zu übertragen und in andere Unternehmenssysteme weiterzugeben. Da dieser Daten-Streaming-Service auf der Open-Source-Lösung Apache Kafka basiert, ist Confluent Cloud mit dem ebenfalls zu Kafka gehörenden Kafka Connect Framework kompatibel, was Unternehmen alle Vorteile von Kafka Connect in Bezug auf Skalierbarkeit, Leistung und Fehlertoleranz bietet.

Auch innerhalb von Confluent Cloud kann KSQL verwendet werden, um Daten von verschiedenen Datenquellen aus nach Confluent Cloud oder, im umgekehrten Weg, Daten aus Confluent Cloud in andere Datenquellen zu streamen. Dazwischen kann die Verarbeitung von Streams pro Datensatz mit einer Latenz von Millisekunden durchgeführt werden.

KSQL-Anwendungen laufen, wie jede andere Kafka-Client-Applikation, nicht innerhalb eines Kafka-Clusters, sondern kommunizieren über das Netzwerk mit diesem. Ein großer Vorteil von KSQL ist, dass KSQL in nahezu jeder Umgebung betrieben werden kann: KSQL-Server laufen in eigenen Datenzentren, in der Cloud, auf dedizierter Hardware, in virtuellen Maschinen, in Containern wie Docker, usw.

KSQL ausprobieren

Wenn Sie sich näher mit dem Thema KSQL befassen möchten, empfiehlt es sich, folgende Schritte durchzuführen:

Verwandte Themen:

Geschrieben von
Robin Moffatt
Robin Moffatt
Robin is a Developer Advocate at Confluent, the company founded by the creators of Apache Kafka, as well as an Oracle ACE Director and Developer Champion. His career has always involved data, from the old worlds of COBOL and DB2, through the worlds of Oracle and Hadoop, and into the current world with Kafka. His particular interests are analytics, systems architecture, performance testing and optimization. He blogs at http://cnfl.io/rmoff and http://rmoff.net/ (and previously http://ritt.md/rmoff) and can be found tweeting grumpy geek thoughts as @rmoff. Outside of work, he enjoys drinking good beer and eating fried breakfasts, although generally not at the same time.
Michael Noll
Projekt Manager zum Thema KSQL und Kafka Streams bei Confluent Inc.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: