Umsetzung von multi-Tenant Data Pipelines für Amazon Redshift mit dbt und Airflow bei EOS
Zusammenfassung
EOS Technology Solutions (TS) ist der interne IT-Dienstleister der EOS Gruppe. Das Unternehmen der Otto Group ist im Bereich Forderungsmanagement tätig. Als zentrale Servicegesellschaft bietet EOS TS den Unternehmen der EOS Gruppe eine AWS basierte Datenplattform als Managed Service an. Diese Plattform umfasst neben einem Data Lake auch ein Amazon Redshift basiertes Data Warehouse. Um eine Skalierung des Service im Bereich der DWH-Transformationen besser stemmen zu können, sollte ein eigenentwickeltes SQL-Framework durch die weitverbreitete Lösung (dbt) ersetzt werden. Dabei gilt es eine Reihe an Anforderungen zu erfüllen, um einen Mehrwert bei der Entwicklung und dem Betrieb im Bereich der TS, aber auch für die Nutzung durch die internationalen EOS Unternehmen zu heben.
Die hier vorgestellte Lösung verbindet eine Reihe von AWS Managed Services wie ECS, Fargate, MWAA (AWS Managed Airflow) und S3 mit dem SQL-zentrierten Framework dbt, um eine elastische, gut betreibbare und multi-Tenant geeignete Lösung für die Ausführung von Transformationen in der AWS Redshift zu realisieren.
EOS Gruppe
Die EOS Gruppe ist ein führender technologiebasierter Investor in Forderungsportfolios und Experte bei der Bearbeitung ofener Forderungen. Mit über 45 Jahren Erfahrung und Standorten in 24 Ländern bietet EOS seinen rund 20.000 Kund:innen weltweit smarte Services rund ums Forderungsmanagement. Im Fokus stehen Banken sowie Unternehmen aus den Bereichen Immobilien, Telekommunikation, Energieversorgung und E-Commerce. EOS beschäftigt mehr als 6.000 Mitarbeiter:innen und gehört zur OTTO Group.
Problemstellung
Beim Aufbau der AWS-Datenplattform für die EOS Unternehmen wurde zunächst auf ein eigenentwickeltes Framework zur Ausführung von SQL-Transformationen in der Amazon Redshift gesetzt. Mit der Zeit wuchsen die Anforderungen an das Framework z.B. bezüglich Skalierbarkeit verbesserte und erweiterte Monitoring-, Dokumentations- sowieDatenqualitätsmanagement-Features, deren Umsetzung zu erheblichen Investitionen geführt hätte. Deshalb wurde mit dbt eine Alternative gefunden, welche die geforderten Features bereits mitbringt. Allerdings sollte aufgrund von Kosten und Datenschutzbedenken nicht die SaaS-Version, dbt-Cloud, genutzt werden, sondern eine eigene Ausführungsinfrastruktur für dbt in den vorhandenen AWS-Accounts aufgebaut werden.
Die Lösungsarchitektur erfüllt eine Reihe von Anforderungen:
- Die Lösung ist multiTenant-fähig.
- Das System ist elastisch genug, um potenziell Data Pipelines für alle Ländergesellschaften laufen lassen zu können und hat ein payper-use-Kostenmodell anstatt hoher Fixkosten.
- Die Lösung beinhaltet eine Scheduling/Orchestration-Komponente.
- Die Lösung ist gut in das AWSÖkosystem integriert.
- Die Lösung passt zu bereits etablierten Entwicklungsprozessen und sieht eine Nutzung von gitlab und CI/CD Pipeline vor.
- Die Lösung hat ein integriertes Data Quality Management.
- Die Nutzung von bereits vorhandenem SQLKnow-How und Code ist möglich.
- Die Mitarbeiter:innen in den Ländergesellschaften können eigene Transformationen erstellen, ohne erweiterte System/ Cloud-Kenntnisse erwerben zu müssen.
- Die Lösung integriert sich möglichst optimal in die bereits genutzten AWS Monitoring Services.
- Endanwender:innen werden über Lade und Datenqualitätsstatus informiert.
Lösungsansatz und -architektur
Die gesamte Lösungsarchitektur, inspiriert durch den AWS APN Blogeintrag, basiert auf der Nutzung von Elastic Container Services (ECS) mit Fargate, um eine elastische Ausführung von dbt-Prozessen zu ermöglichen. Mit dieser Lösung werden die Ressourcen nur während der Laufzeit von dbt-Prozessen allokiert. Jeder dbt-Prozess wird in einem separaten ECS Task ausgeführt. Der Ansatz ermöglicht eine nahezu unbegrenzte Skalierung für die parallele Ausführung von dbt Data Pipelines. Das ausgeführte Docker Image beinhaltet nur die benötigte dbt-Version zur Ausführung. Die eigentlichen Data-Pipeline-Definitionen, in Form von dbt-Projekten, werden zur Laufzeit aus einem S3-Bucket geladen. Die Ausführung der Data Pipelines wird durch Airflows DAGs gesteuert. Um einen reibungslosen Betrieb zu ermöglichen, wurde MWAA, der von AWS gemanagte Airflow Service ausgewählt.
Jede Ausführung eines ECS-Tasks schreibt die dazugehörigen Informationen in eine CloudWatch-Log-Gruppe weg. Diese Loginformationen sind in Textform gehalten und können gut vom Menschen gelesen werden. Durch die Integration von Airflow und CloudWatch, sind die Ergebnisse sowie die dazugehörigen Logs der dbt-Ausführungen in der Airflow-Nutzeroberfläche in dem dazugehörigen DAG-Run aufrufbar.
Zusätzlich erzeugen die dbt Data Pipelines auch Loginformationen in einem JSON-Format. Diese Logs werden zunächst lokal innerhalb des Docker Containers abgelegt und dann in S3 hochgeladen. Der Bucket ist im AWS Glue Data Catalog verfügbar und die Metadaten werden regelmäßig per Glue Crawler aktualisiert. Die Loginformation werden mittels Redshift Spectrum im DWH integriert und stehen für weitere Analysen und Reportings in Amazon Redshift zur Verfügung. Hierdurch können Statistiken zu den Laufzeiten der Data Pipelines generiert werden oder es können auch die Ergebnisse der dbt Data Quality Checks analysiert werden. Mit der an der Redshift angeschlossenen BI Lösung PowerBI wurden basierend auf den JSON-Logdateien Dashboards und Alarme realisiert, um den Endkunden über die Aktualität ihrer Daten im DWH zu informieren.
Auch die durch dbt erzeugbare Dokumentation der Data Pipelines kann durch einen eigenen Airflow-Prozess angestoßen werden und wird dann in einem S3 Bucket zur Verfügung gestellt.
Durch eine Parametrisierung der dbt-Projekte, Airflow DAGs und ECS-Task-Definitionen können zum einen die gleichen Pipelines in verschieden Accounts für Development, Testing und Produktion ausgeführt werden, als auch die Nutzung der gleichen Infrastruktur (ECS-Tasks, S3-Buckets, dbt Docker Image) für alle Tenants realisiert werden.
Die gewählte Architektur ermöglichte die Entkopplung der Entwicklung der Ausführungsinfrastruktur von der Entwicklung der Data Pipelines. Durch die Nutzung von gitlab und CI/CD Pipelines konnte das Deployment der Data Pipelines vollständig automatisiert werden, dadurch gibt es eine klare Trennung von Infrastruktur Deployments und Deployments der Data Pipelines. Somit ist die Basis für Self-Service-Ansätze geschaffen, um den Data Engineers der Ländergesellschaften die Entwicklung von Data Pipelines mit dbt zu ermöglichen. Die Data Engineers können sich so auf die Entwicklung der Transformationen konzentrieren und brauchen zusätzlich zu den SQL- und dbt-Skills kein AWS spezifisches Know-How aufbauen.
Ergebnis
Die dargestellte Architektur hat die genannten Anforderungen an Mandantenfähigkeit, Trennung von Infrastruktur und Data Pipelines, Elastizität und Skalierbarkeit voll erfüllt. Mehrere Data Pipelines können vollständig autark parallel laufen. Auch zeigt sich durch den Einsatz der Lösung eine Verbesserung bei den Laufzeiten, um bis zu 40%, da die in dbt mögliche Parallelisierung der Data Pipelines genutzt wird.
Das Scheduling und Monitoring wurde erheblich vereinfacht, und kann komplett im Managed Airflow erfolgen und stellt somit eine Verbesserung gegenüber dem bisherigen Framework dar.
Für die Endanwender:innen konnte eine bessere Transparenz der Datenqualität und der Data-Pipeline-Ausführung durch die automatisierte Dokumentation sowie durch die Bereitstellung der Log- und DQ-Informationen erreicht werden.
Die Architektur wird auch zukünftig weiterentwickelt werden, z.B. durch den Einsatz von dbt Packages, um eine Wiederverwendung von Code in mehreren Data Pipelines zu erreichen.
b.telligent – ein zuverlässiger Partner in der AWS Cloud
b.telligent ist eine technologieunabhängige Beratung mit Fokus auf die Optimierung digitaler und datengetriebener Geschäftsprozesse sowie Kunden und Lieferantenbeziehungen und AWS Advanced Consulting Partner. Mehr als 300 Mitarbeiter:innen arbeiten an zehn Standorten in Deutschland, Österreich, Rumänien und in der Schweiz.. b.telligent ist AWS Advanced Partner und wurde von EOS dazu beauftragt, die Lösung für die neue DWH Data Pipeline Architektur auf AWS zu entwerfen und zu implementieren. EOS TS wird von b.telligent auch in anderen Bereichen beim Aufbau und bei der Weiterentwicklung ihrer Datenplattform in der AWS-Cloud unterstützt.