Kommentar von Volker Janz, InnoGames Big Data im Gaming – Echtzeit-Kundeninteraktion mit Kafka und Flink

Von Volker Janz 6 min Lesedauer

Anbieter zum Thema

Stellen Sie sich vor, Sie sind mit Ihrer Familie auf einem belebten Autobahnabschnitt unterwegs und nun schließen Sie Ihre Augen für einige Zeit. Würden Sie sich so in einer realen Situation verhalten? Als Fahrer sind Sie aufmerksam, überwachen die Instrumente und reagieren sofort auf sich ändernde Verkehrssituationen. Kurzum: Sie verarbeiten die Daten Ihrer Umgebung in Echtzeit. Diese ständige Aufmerksamkeit ist entscheidend für die Sicherheit Ihrer Familie.

Der Autor: Volker Janz ist Expert Data Engineer bei InnoGames(Bild:  Sabine Kayser / Fotostudio blendenspiel)
Der Autor: Volker Janz ist Expert Data Engineer bei InnoGames
(Bild: Sabine Kayser / Fotostudio blendenspiel)

Auf die Geschäftswelt übertragen, heißt das: Wenn Ihr Unternehmen das Fahrzeug darstellt und Ihre Kollegen die Mitfahrer sind, dann sind die Daten die Instrumente, die den Zustand und die Leistung des Unternehmens widerspiegeln. In dieser Analogie wird deutlich, wie wichtig die Verarbeitung von Daten in Echtzeit für Unternehmen ist.

Traditionell denken wir bei Daten an statische Informationen, doch viele Daten werden in Echtzeit generiert und verlieren mit der Zeit an Wert. Ein Beispiel hierfür ist eine Navigations-App, die dem Benutzer sofortige Informationen über Verkehrsstaus liefert. Diese Dynamik gilt auch für viele andere Branchen. Die Fähigkeit, in Echtzeit auf die Bedürfnisse der Kunden zu reagieren, kann das Benutzererlebnis verbessern und die Wertschöpfung maximieren.

Für InnoGames, einem der führenden deutschen Entwickler von Mobile- und Browser-Spielen, ist die Interaktion mit dem Spiel der Hauptdatenstrom, der in Echtzeit verarbeitet wird. Entsprechend hat InnoGames ein großes Interesse daran, das Spielerlebnis und die Monetarisierung durch Echtzeit-Kundeninteraktion zu verbessern. Im Folgenden beschreibe ich die auf Open Source basierende Technik, die dafür verwendet wird, sowie die damit verbundenen Anwendungsfälle, Erfolgsgeschichten und Herausforderungen.

Apache Kafka – ein zentraler Baustein für Datenströme im Gaming

InnoGames hat aktuell über 300 Millionen registrierte Spieler. Die aktiven Spieler unter ihnen erzeugen durch ihre Interaktion mit den Spielen einen kontinuierlichen Datenstrom von Ereignissen. Jedes Ereignis, sei es das Bauen eines Gebäudes oder der Verlust einer Kampfeinheit, wird erfasst und benötigt eine effiziente Speicherlösung. Hier kommt Apache Kafka zum Einsatz.

Kafka ist eine Open-Source-Streaming-Plattform, die für die Echtzeitverarbeitung von Datenströmen und die Integration von Daten in großem Umfang eingesetzt wird. Ursprünglich bei LinkedIn entwickelt, hat sich Kafka seit der Einführung im Jahr 2011 zu einer umfassenden Event-Streaming-Plattform entwickelt. Sie besteht aus einem verteilten System von Brokern, die Datenströme in logische Partitionen unterteilen. So kann jedes Spiel eine eigene Partition verwenden, um die Verarbeitung zu vereinfachen. Eine Partition besteht wiederum aus Segmenten, von denen jedes als Datei auf den Festplatten der Broker gespeichert wird. Über diverse Konfigurationsparameter kann die Menge und Größe dieser Segmente kontrolliert werden.

InnoGames nutzt Kafka, um täglich über 1,7 Milliarden Ereignisse zur weiteren Verarbeitung zu erfassen, was etwa 20.000 Datensätzen pro Sekunde entspricht. Obwohl es alternative Cloud-basierte Lösungen wie Amazon Kinesis oder Google Cloud Pub/Sub sowie andere Open-Source-Projekte wie RabbitMQ gibt, hat sich Kafka für InnoGames als ideale Lösung herauskristallisiert. Die Flexibilität in der Datenverarbeitung und der kosteneffiziente Datendurchsatz machen Kafka zur bevorzugten Plattform für die Speicherung von Datenströmen in Echtzeit.

Apache Flink – die Kraft der Echtzeit-Datenstrom-Verarbeitung

Apache Flink ist ein Open Source Framework und eine verteilte Plattform für die Verarbeitung von kontinuierlichen und begrenzten Datenströmen. Es wurde entwickelt, um Berechnungen mit hoher Geschwindigkeit, Flexibilität und in beliebiger Skalierung durchzuführen.

Ein kontinuierlicher Datenstrom hat einen definierten Anfang, aber kein Ende. Hierbei handelt es sich also um einen klassischen Datenstrom. Ein begrenzter Datenstrom hat dagegen einen definierten Anfang und ein definiertes Ende. Diese Art von Daten kann auch als Stapeldaten betrachtet werden. Somit erlaubt Flink das Verarbeiten von Daten in Form von Stream Processing und Batch Processing.

Eine Flink-Applikation besteht aus verschiedenen Komponenten wie Datenquellen, Transformationen und Datensenken. Die Verarbeitungslogik kann über verschiedene Schnittstellen definiert werden, darunter die SQL- oder Table-API für die Verarbeitung von Daten mittels SQL und die DataStream-API für die Zusammenstellung vordefinierter Bausteine mit Java, Python oder Scala. Darüber hinaus bieten Prozessfunktionen eine Schicht maximaler Flexibilität, da sie in Java oder Scala mit beliebiger Logik implementiert werden können.

Flink ermöglicht sowohl die zustandslose als auch die zustandsbehaftete Verarbeitung von Datenströmen. Zustandslose Verarbeitung betrachtet jedes Ereignis unabhängig, also ohne historische Informationen, während eine zustandsbehaftete Verarbeitung die Analyse von Ereignissen innerhalb definierter Fenster erlaubt. Minimale Latenz, hohe Durchsatzrate und die nahtlose Integration mit Systemen wie Kafka machen Flink zu einem leistungsstarken Werkzeug für die Verarbeitung von Datenströmen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Big Data, Analytics & AI

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Personalisierte Spielerlebnisse in Sekundenschnelle

Systemübersicht(Bild:  InnoGames)
Systemübersicht
(Bild: InnoGames)

Der folgende Abschnitt beschreibt das Real-Time-CRM-System bei InnoGames, das auf den oben genannten Technologien basiert. Konzeptionell lässt sich dieses System jedoch auch auf andere Anwendungsfälle wie die Interaktion mit Webseiten oder Apps im Allgemeinen übertragen.

Als Beispiel dient der Verlust einer Kampfeinheit im Spiel. Dieses Ereignis wird zuerst in einem Kafka-Topic im JSON-Format gespeichert, welches sich in den meisten Sprachen leicht verarbeiten lässt. Eine Flink-Anwendung liest dann dieses Ereignis und konvertiert es in ein Java-Objekt. Dazu wird eine Flink-Map-Funktion verwendet. Anschließend wird das Ereignis an eine Prozessfunktion weitergeleitet, die eine Liste definierter Regeln überprüft.

Jede Regel entspricht einer Kampagne, die festlegt, wie auf das Ereignis reagiert werden soll. In unserem Beispiel wird eine Kampagne angewendet, die vorsieht, dass bei Verlust einer bestimmten Einheit dem Spieler ein spezielles Angebot angezeigt wird. Die Information darüber, dass dieses Angebot angezeigt werden soll, wird dann über eine Datensenke durch Flink in einem weiteren Kafka-Topic gespeichert, das vom Spiel verarbeitet wird, um das Angebot im Spiel anzuzeigen. Auf diese Weise erhalten Spieler maßgeschneiderte Angebote genau im richtigen Moment, mit einer minimalen Latenz von nur wenigen Millisekunden.

Um Kampagnen zur Laufzeit definieren und ändern zu können, wird ein spezielles Entwurfsmuster aus dem Bereich Stream Processing verwendet: das sogenannte Broadcast State Pattern. Dabei wird ein zusätzliches Kafka-Topic eingesetzt, das mit geringer Frequenz aktualisiert wird, da es nur neue Kampagnen oder Änderungen an bestehenden Kampagnen erhält. Das ermöglicht die langfristige Speicherung, und die Flink-Anwendung wird bei jeder Aktualisierung benachrichtigt, sodass die Komponenten ihren Zustand mit den neuen Regeln aktualisieren können.

Anwendungsfälle, Herausforderungen und Zukunftsausblick

Ein Screenshot des Spiels „Elvenar“(Bild:  InnoGames)
Ein Screenshot des Spiels „Elvenar“
(Bild: InnoGames)

Die Reaktion auf bestimmte Interaktionen bietet Vorteile für die Monetarisierung und die Optimierung des Kunden-Erlebnisses. Ein Beispiel hierfür ist die Möglichkeit, dem Spieler in unserem Spiel Elvenar kostenlose Zauberspruchpakete anzubieten, wenn er bestimmte Funktionen nach dem Bau der magischen Akademie nicht innerhalb eines Zeitraums nutzt. Das motiviert den Spieler, diese Funktionen zu testen, und verbessert so sein Spielerlebnis.

Die Komplexität eines verteilten Systems, die große Menge an Daten und der Bedarf, Mitarbeitern den einfachen Zugang zu diesen Daten zu ermöglichen, stellen jedoch auch eine große Herausforderung dar. Ein iterativer Aufbau des Systems in kleinen Schritten, kurze Feedback-Zyklen und agile Kommunikation sind entscheidend für den Erfolg. Nur so können Anwendungsfälle und Systeme gleichermaßen skaliert werden.

Die Zukunft dieses Systems bietet Möglichkeiten zur weiteren Automatisierung des Kampagnenmanagements. Die Integration von Maschinellem Lernen und Künstlicher Intelligenz wird bereits untersucht und verspricht viel Potenzial. Dabei sind eine schrittweise Herangehensweise und sorgfältige Evaluation entscheidend für die Entwicklung eines kontrollierten Systems.

Die Verarbeitung von Datenströmen in Echtzeit ermöglicht es, Daten in ihrer natürlichen Form zu verarbeiten. Dieser Anwendungsfall zeigt, dass Echtzeit-Verarbeitung von Datenströmen nicht nur für die Überwachung und Berichterstattung relevant ist, sondern auch großes Potenzial für das aktive Reagieren in Echtzeit bietet. Daher sollten die Augen nicht nur während eines Familienausflugs offengehalten werden, sondern auch während des laufenden Betriebs im Unternehmen.

Eine Open-Source-Variante des beschriebenen Anwendungsfalls kann zu Lernzwecken unter folgenden Links gefunden werden:

https://github.com/innogames/flink-real-time-crm

https://github.com/innogames/flink-real-time-crm-ui

Artikelfiles und Artikellinks

(ID:49921813)