BlogWas macht ihr eigentlich?Was machst du eigentlich, David?

Was machst du eigentlich, David?

Unser Projekt hat als Zielsetzung, unterschiedlichste Datenquellen aufzubereiten und miteinander zu kombinieren. Auf diesem Weg können wir neue Erkenntnisse für die jeweiligen Fachbereiche generieren, die wiederum schneller agieren können. Dies ist besonders für kurzfristige und unmittelbare Businessentscheidungen wichtig, um frühzeitig auf Veränderungen in einer schnelllebigen Welt eingehen zu können.

Ein anschauliches Beispiel

Was abstrakt klingt, kann recht simpel mit einem einfachen Beispiel erklärt werden: Du möchtest verreisen und gehst in ein Reisezentrum deiner Wahl. Dort ziehst du einen Wartezettel, woraufhin ein Signal an ein Warteschlangenmanagementsystem geschickt wird, damit es weiß, dass du vor Ort bist. Wenn dann schließlich deine Nummer aufgerufen wird, du also an der Reihe bist, sendet das System eine weitere Nachricht, nämlich dass du jetzt aufgerufen wurdest.

Von hier aus kann es zu weiteren, unterschiedlichen Signalen kommen: Eventuell hast du es dir anders überlegt und bist nicht am Schalter erschienen, vielleicht weil dir die Wartezeit zu lang war, oder du eventuell schon am Fahrkartenautomaten ein Ticket gekauft hast. Oder du wolltest lediglich eine Information zu deiner bestehenden Reise, die du aber bereits über andere Wege bekommen hast. Basierend auf den vielfältigen Möglichkeiten werden dann weitere Signale an das „System“, dem Data Lake gesendet.

Wie man sehen kann, wird es hier schnell kompliziert, aber eben auch interessant, da die unterschiedlichen Signale ausgewertet werden (können): Wie vielen Menschen war die Wartezeit zu lang? Kann man erkennen, ab welcher Wartezeit Menschen gegangen sind und wenn ja, ab welcher Dauer haben die Leute aufgehört zu warten? Wenn diese Daten vorliegen, können daraus Handlungsstrategien entwickelt werden: Zum Beispiel könnte das System, sobald die durchschnittliche Wartezeit in einem Reisezentrum überschritten wurde, die Mitarbeitenden darüber informieren, sodass diese einen weiteren Schalter öffnen. So wird letzten Endes auch die Kundenzufriedenheit verbessert.

Der Technische Aspekt

Die eben angesprochenen Signale kommen bei uns im Data Lake an. Das Warteschlangenmanagementsystem sendet diese Signale in Echtzeit, mit Hilfe von Kafka, einer Software zur Verarbeitung von Datenströmen, an uns weiter. Wir sammeln diese Daten und persistieren sie in einem AWS S3-Bucket, einem digitalen Objektspeicher. Anschließend werden die Daten mit Apache Hop und Apache Spark (in AWS EMR-Clustern) bearbeitet und aufbereitet – je nachdem, welche Aufbereitungsart gewünscht wird bzw. für welchen Zweck die Daten aufbereitet werden sollen.

Die jeweiligen Daten werden den entsprechenden Fachbereichen über eine Amazon Aurora Datenbank zugänglich gemacht und von dort aus mit PowerBi visualisiert.

PowerBi

Abbildung 1: Beispiel einer Darstellung mit PowerBi (Quelle: https://learn.microsoft.com/de-de/power-bi/fundamentals/media/desktop-what-is-desktop/what-is-desktop-01.png)

Datenschutz hat bei allen Prozessen natürlich höchste Priorität, sodass es Standard ist, Kundendaten für die meisten Use-Cases zu anonymisieren, da diese keine Personendaten benötigen. In Absprache mit der Datenschutzbeauftragten des Unternehmens wird entschieden, welche Daten wir für einen bestimmten Use-Case benutzen dürfen. Alle anderen Angaben werden anonymisiert.

Dennoch gibt es auch Use-Cases, die mit Personendaten arbeiten müssen, wofür es entsprechende Ausnahmeregelungen gibt. Eine solche Ausnahme liegt zum Beispiel im Bereich der Betrugsprävention vor. Durch bestimmte Tricks und Kniffe versuchen Betrüger sich Leistungen zu erschleichen oder diese illegal erhaltenen Leistungen zu verkaufen. Um solche Betrugsfälle zu vermeiden, werden bestimmte Personendaten mit Hilfe eines Machine-Learning-Algorithmus miteinander verbunden, wodurch wir rechtzeitig sehen können bzw. vom System informiert werden, dass eine Transaktion verdächtig erscheint. Diese Nachricht können wir dann zeitnah und hoffentlich rechtzeitig dem zuständigen Fachbereich melden.

Alle Daten, die zu uns zugeschickt werden (oder die wir via verschiedenster APIs selbst sammeln), werden gespeichert und entlang der „Datenstrecken“, auch Pipelines genannt, so aufbereitet, wie es der jeweilige Use-Case verlangt. Dabei verdichten sich die Daten durch verschiedene Layer:

  • Im Raw-Layer werden die Daten so gespeichert, wie sie ankommen. Dies ermöglicht es uns, bei Berechnungsänderungen historische Daten erneut verarbeiten zu können.
  • Im Refined-Layer sind die Daten schon teilweise aufbereitet und werden im parquet-Format gespeichert. Hier ist es das Ziel, die spätere, komplizierte Berechnungslogik frei von datenquellenspezifischen Cleaning-Regeln zu halten.
  • Zum Schluss landen die Daten im Business-Layer. Hier sind sie für den jeweiligen Use-Case bereits fertig aufbereitet und können dementsprechend analysiert werden.

Was Abseits der Pipelines geschieht

Unsere Spark-Pipelines schreiben wir in Scala. Dieser Code wird in git-Projekten gespeichert, in denen verschiedene Qualitätskontrollen wie SonarQube– und Whitesource-Scans stattfinden können. Um die Qualität der Codes zu garantieren, triggert jeder Merge-Request eine gitlab-Pipeline, die den Code testet. Erst dann werden Neuentwicklungen zu den jeweiligen Projekten hinzugefügt (CI/CD).

Für den Fall, dass wir ad-hoc Analysen durchführen wollen, können wir auf Jupyter oder Zeppelin zurückgreifen. Dies sind Software-Tools, mit deren Hilfe Notebooks geschrieben werden können. Diese Notebooks können dann im Hintergrund auf Spark Cluster zurückgreifen und zeitnah spontane Analysen durchführen.

Das Monitoring

Bei einer solchen Menge an beweglichen Teilen ist ein gutes Monitoring unumgänglich. Für die grafische Darstellung der Daten nutzen wir Grafana. Mit Hilfe dieses Tools kann u.a. überwacht werden, wie viele Daten, zu welchen Themen und wann angekommen sind. Je nach Use-Case haben wir Alerting-Regeln angesetzt, die uns bei Unregelmäßigkeiten, wie z. B. wenn wir keine Daten erhalten, wo dies jedoch der Fall sein sollte, benachrichtigen.

Es handelt sich beim Data Lake um ein spannendes Arbeitsumfeld, in dem stets viel passiert und es neue Entwicklungen gibt. Ich bin gespannt und freue mich zu sehen, was wir in der Zukunft noch erreichen werden.