NextLytics Blog

Orchestrierungsdienste: Apache Airflow oder Azure Data Factory?

Geschrieben von Markus Suhr | 23.03.2023 12:08:27

Datenintegration und Analyse sind die Grundpfeiler moderner, faktenbasierter Entscheidungen und Unternehmenssteuerung. Damit immer die aktuellen und korrekten Daten vorliegen, benötigt es eine zuverlässige Datenintegrationsplattform. Ein Orchestrierungsdienst ermöglicht und strukturiert Workflow-Management und Scheduling für alle automatisierten Datenverarbeitungsprozesse und wird damit zum zentralen Taktgeber der gesamten Dateninfrastruktur. Definitions- und Ausführungslogik für Workflows werden harmonisiert und zuverlässig anhand verschiedener zeitlicher oder inhaltlicher Vorbedingungen gesteuert und ausgeführt. Wenn eine Datenintegrationsplattform neu aufgebaut oder inkrementell in die Cloud migriert werden soll, stellt sich häufig die Frage, welches System die richtige Wahl als Orchestrierungsdienst sein kann.

Apache Airflow ist aus unserer Sicht weiterhin das Aushängeschild der Open Source Orchestrierungsdienste. Aber wie schlägt sich Airflow im Vergleich mit dem Konkurrenzprodukt aus der Microsoft Cloud, Azure Data Factory? Wir wollen einen Blick auf genau diese Frage werfen.

Die Kandidaten

Apache Airflow

Apache Airflow setzt zur Definition und Steuerung von Workflows und zugehörigen Aufgaben vollständig auf die Programmiersprache Python. Workflows werden als Python-Quellcode definiert, sodass das gesamte System mittels Versionskontroll- und DevOps-Plattformen wie Azure DevOps, GitHub oder GitLab auf der Basis von etablierten Software Engineering Best Practices entwickelt und betrieben werden kann.

Apache Airflow kann mittels Containervirtualisierung entweder im eigenen Rechenzentrum oder in der Cloud betrieben werden. Eine direkte Installation auf Linux Servern ist möglich, der Betrieb mittels Docker oder Kubernetes Cluster allerdings besser zu warten und zu automatisieren. Airflow kann über frei verfügbare Plugins mit praktisch allen gängigen Computer-, Storage- und Datenbanksystemen kommunizieren und diese in Workflows miteinander in Verbindung setzen. Da sämtliche Workflows und Tasks in Python Code definiert werden, gibt es keine Begrenzung auf die existierenden Schnittstellen. Das Airflow User Interface ermöglicht einfaches Monitoring aller Workflows, Zeitpläne und vergangener Abläufe sowie die verschlüsselte Speicherung von Verbindungsdaten und Laufzeitvariablen.

Airflow kann aufgrund der unterliegenden Micro-Services-Architektur auf verschiedene Arten betrieben und skaliert werden. Im Vergleich “on-premise” vs “cloud” Betrieb gelten die üblichen Vor- und Nachteile der jeweiligen Betriebsarten hinsichtlich technischer Vorbedingungen, Skalierbarkeit, Konnektivität und Personaleinsatz. Ein vollwertiges, cloud-basiertes Software-as-a-Service Angebot für Airflow gibt es von verschiedenen Anbietern, in Azure allerdings nur in eingeschränkter Form. Ausgeprägte Programmierkenntnisse und ein etablierter Software Engineering Prozess sind Voraussetzungen, um Airflow in der Praxis langfristig effizient zu nutzen. Ist dieses Fundament einmal gegossen, sind die Ausbaumöglichkeiten praktisch unbegrenzt. Vorsicht ist dennoch geboten: Wenn beispielsweise zugunsten kurzfristiger Zielerreichung die Qualität der Weiterentwicklung hintenan gestellt wird, können frei erweiterbare Infrastrukturen ihrer Komplexität auch über das gesunde Maß hinauswachsen.

Azure Data Factory

Data Factory ist der Cloud-basierte Datentransformations- und Orchestrierungsdienst aus dem Microsoft Azure Portfolio. Azure Data Factory (ADF) kann über verschiedene Konnektoren mit einer Vielzahl von Datenquellen und einer kleineren Auswahl von Datensenken kommunizieren. Insbesondere das Schreiben von Daten beschränkt sich dabei relativ stark auf Azure-Dienste wie Managed SQL Server, Azure Synapse und Azure Blob Storage. Die Datenverarbeitung wird in Apache Spark Clustern ausgeführt, die für den Anwender unsichtbar im Hintergrund dynamisch verwaltet werden. Data Pipelines werden primär in einem grafischen User Interface editiert und können anhand von Zeitplänen oder ereignisgesteuert für die Ausführung eingeplant werden. Sämtliche Konfigurationsänderungen können mit einem Azure DevOps Git Repository synchronisiert werden und Credentials verschlüsselt in einem Azure Key Vault hinterlegt und für verschiedene Anwendergruppen zugänglich gemacht werden.

Die starke Integration mit Microsoft-Technologien sowie die grafische Benutzeroberfläche für die Pipeline-Entwicklung nach low-code oder no-code Prinzipien sind je nach Standpunkt Vor- und Nachteil von Azure Data Factory. Gerade die Beschränkung auf Azure-Speicherdienste und Datenbanken als Empfänger von Daten aus ADF Pipelines begrenzt den Spielraum für die strategische Entwicklung der eigenen Infrastruktur. Die Entwicklung von ADF Pipelines mittels User Interface erfordert umfangreiche Einarbeitung in Funktionsweise und Vokabular.

Die Gemeinsamkeiten

Orchestrierungsdienste und insbesondere Azure Data Factory und Apache Airflow haben Features gemein, die den grundsätzlichen Funktionsumfang abdecken:

  • Workflow Steuerung: Sequenzielle und parallele Abläufe sowie konditionale Verzweigungen von Prozessflüssen können definiert werden
  • Chronologisches Scheduling: Workflows können auf Basis einer zeitlichen Vorgabe regelmäßig ausgelöst werden
  • Event Scheduling: Workflows können aufgrund einer eingetretenen Vorbedingung ausgelöst werden
  • User/Permission Management: Das System erlaubt die Arbeit mit personalisierten Benutzerkonten mit unterschiedlichen Zugriffsrechten
  • Credential Store: Die Anmeldeinformationen für den Zugriff auf Datenquellen und -senken können verschlüsselt im System gespeichert und über Referenzen zur Laufzeit geladen werden
  • Monitoring: Ablauf und Zustand von Prozessen kann eingesehen und überwacht werden
  • Logging: Log-Informationen zu Prozessen und Prozessschritten werden erfasst und können eingesehen werden
  • Alerting: Bei Eintritt bestimmter Umstände können Benachrichtigungen an ausgewählte Personen gesendet werden, z.B. per E-Mail bei erfolgreichem Abschluss eines Prozesses oder im Fehlerfall

Die Unterschiede

Apache Airflow und Azure Data Factory unterscheiden sich im Detail teils deutlich voneinander. Um die Unterschiede greifbar zu machen, betrachten wir im folgenden die jeweiligen Vorbedingungen für die Nutzung der Systeme, ihre Kernfunktionen, die Möglichkeiten zur Integration in bestehende Systemkontexte sowie Nachhaltigkeitsaspekte.

Optimieren Sie Ihr Workflowmanagement mit Apache Airflow!

Vorbedingungen: Welche technischen Rahmenbedingungen müssen erfüllt werden?

Apache Airflow kann auf beliebiger Hardware bzw. Infrastruktur betrieben werden. Zwischen reiner on-premises Installation im eigenen Rechenzentrum und komplett ausgelagerten Software-as-a-Service Produkt in der Cloud sind alle Möglichkeiten denkbar.

Azure Data Factory hingegen ist ein reiner Cloud Service. Wenn Datenbanken und Dienste im eigenen Rechenzentrum mit ADF integriert werden sollen, muss die Konnektivität zwischen den Cloud- und On-Premises-Komponenten auf Netzwerkebene sichergestellt werden. Da die ausführende Komponente (Microsoft Integration Runtime) nach dem Pull-Prinzip arbeitet und nicht von außen angesteuert werden muss, kann dies unter Umständen eine unidirektionale Verbindung aus dem eigenen Netzwerk hin zur Data Factory sein. Für viele Funktionen von ADF werden Daten allerdings in die Cloud übertragen und auf Spark Clustern in der Azure Cloud verarbeitet. Eine entsprechende datenschutzrechtliche Betrachtung der Prozesse kann nötig sein.

Soll zwischen den Diensten verschiedener Cloud-Anbieter vermittelt werden, gibt es für beide Systeme die entsprechenden Konnektoren. Wir sehen in dieser Hinsicht dennoch Airflow im Vorteil, da sich das Portfolio der frei verfügbaren Erweiterung des Projekts ständig erweitert, grundsätzlich unabhängig ist und keinerlei strategische Beschränkungen der Verwendungszwecke in die Komponenten eingebaut werden.

Kernfunktionen: In welcher Hinsicht unterscheiden sich die Dienste in ihrem Funktionsumfang bzw. in der Nutzungsweise?

Azure Data Factory ist in ihrem Funktionsumfang klar als Data Integration Plattform zu verorten und deckt die Anforderungen an einen dedizierten Orchestrierungsdienst somit eher nebenläufig ab. Die Funktionalität von Data Factory, direkt über die grafische Benutzeroberfläche Datenintegrationsstrecken zu konfigurieren, kann als deutliches Plus an Möglichkeiten gewertet werden. Insbesondere einfache Datentransfers ohne komplexe Transformationen sind schnell zusammengestellt und erfordern keinerlei Programmierkenntnisse.

Sämtliche in Data Factory hinterlegte Konfiguration kann in ein Azure DevOps Git Repository synchronisiert werden, wo diese in Form von JSON-Dateien gespeichert wird. Auf dieses Weise ist die Entwicklung von Datenintegrationsstrecken mit Data Factory an Prinzipien der Software Entwicklung im verteilt arbeitenden Entwicklungsteam angelehnt, bleibt aber weit hinter den Möglichkeiten einer vollen Git-Integration zurück.

Diese wiederum schöpft Airflow mit dem “Configuration as Code” Prinzip voll aus: sämtliche Konfiguration und Workflowdefinitionen in Airflow sind Python-Quellcode und können als solche über eine Versionskontrolle lückenlos verwaltet und im verteilten Team entwickelt werden.

Integration in Systemkontext: Wie lassen sich die Systeme in bestehende Infrastruktur integrieren?

Apache Airflow bietet dem Anwender ein relativ freies Framework zur Definition von Workflows. Entwickler haben alle Möglichkeiten, an den bestehenden Systemkontext anzuknüpfen und die Integration inkrementell voranzutreiben. Wie mit Drittsystemen interagiert wird, ist nicht streng vorgegeben, kann aber über eine Vielzahl von frei verfügbaren Konnektoren leicht harmonisiert werden. So können Daten entweder komplett in die Laufzeitumgebung eines Task geladen und in Python verarbeitet werden oder Verarbeitungsanweisungen an eine Datenbank geschickt werden. Die Entscheidung obliegt dem Entwicklerteam und kann an die jeweiligen Bedingungen oder Qualitätsanforderungen eines Anwendungsfall gekoppelt werden.

Die Integrationsmöglichkeiten einer Azure Data Factory sind stärker begrenzt. Es gibt eine große Zahl nativer Konnektoren für Drittsysteme, aber die Wahrscheinlichkeit, im eigenen Systemkontext mindestens ein nicht unterstütztes System an zentraler Stelle im Einsatz zu haben, ist erfahrungsgemäß groß. Letztlich erlaubt auch ADF die Entwicklung eigener Erweiterungen z.B. mittels Python, sodass mit einem gewissen Aufwand sicherlich alle Integrationsmöglichkeiten gegeben sind. Erweitert man ADF in dieser Weise allerdings stark, wird der vermeintliche Vorteil der leichteren Zugänglichkeit für Anwender ohne Programmierkenntnisse aufgegeben.

Nachhaltigkeit: Welche Entwicklungslinien bieten die Systeme hinsichtlich steigender Anforderungen (Performance, Skalierbarkeit) und Betriebsdauer?

Azure Data Factory ist als reine SaaS-Cloud-Applikation ein proprietäres Produkt von Microsoft. Dieser Status impliziert eine gewisse Langlebigkeit, garantiert aber keinen endlosen Support für das Produkt. Die vollständige Konfiguration kann in Git-Repositories gesichert werden, ist jedoch spezifisch für Data Factory und müsste für eine spätere Migration vollständig übersetzt werden. Je nach Tiefe der Integration der eigenen Workflows in die Data Factory Logik kann eine solche Migration mehr oder weniger aufwendig werden: Sofern Data Factory lediglich als Framework für die Entwicklung von Workflows auf Basis von Python Quellcode genutzt würde, ließen sich die Prozesslogiken beispielsweise gut nachnutzen und in andere Frameworks übertragen. Werden die nativen Data Factory Pipeline-Komponenten genutzt und konfiguriert, gibt es keine solche Möglichkeit.

Großer Pluspunkt einer Data Factory ist die für Anwender nahtlose Skalierbarkeit aufgrund der unterliegenden Cloud Computing Technologien. Auch Airflow kann dank seiner Micro-Services-Architektur vertikal und horizontal skaliert werden, bedarf je nach Betriebsmodus aber möglicherweise gezielter Steuerung. Setzt man das System auf einen Kubernetes Cluster auf, funktioniert es sogar vollautomatisch.

Wird Apache Airflow im eigenen Rechenzentrum betrieben, ist eine spätere Migration in die Cloud möglich und erfordert die Übertragung der Systemkonfiguration in die neue Umgebung. Da sämtliche Konfiguration als Quellcode in einem Versionskontrollsystem gehalten wird, kann ein solcher Wechsel der Umgebung mit begrenztem Aufwand durchgeführt werden. Einen Automatismus für eine Cloud-Migration gibt es nicht. Aufwandstreiber wären insbesondere die Erprobung sämtlicher angebundener Ressourcen (Speicher, Datenbanken) in der neuen Umgebung.

Als Open Source Software bietet Airflow den Vorteil, dass ein dauerhafter Betrieb unabhängig vom Produktlebenszyklus eines Anbieters möglich ist. Unter der Schirmherrschaft der Apache Software Foundation profitiert Airflow von einem professionellen organisatorischen Rahmen und langfristiger Projektstrategie mit einer breit aufgestellten Entwicklercommunity (knapp 30.000 “Stars” auf Github, über 11.000 Forks des Kernprojektes).

Und die Betriebskosten?

Bewusst haben wir eine Betrachtung von Betriebskosten aus unserem kurzen Vergleich ausgeklammert. Azure Data Factory wird nach reinem Pay-as-you-go Prinzip vertrieben und lockt mit günstigen Einstiegspreisen. In der Praxis benötigt man aber eine Reihe von weiteren Services aus dem Azure Portfolio, um die volle Bandbreite der Möglichkeiten von ADF auszuschöpfen. Das Kostenmodell kann daher individuell sehr unterschiedlich sein. Gegenüber den Kosten für die in Azure zu betreibenden Datenbanksysteme, an welche man ziemlich alternativlos gebunden ist, sind die ADF Betriebskosten zu vernachlässigen.

Apache Airflow kommt als Open Source Software grundsätzlich ohne Lizenzkosten, je nach gewählter Betriebsform aber mit entsprechenden Betriebskosten daher. Für beide Systeme steckt der Kostentreiber in der Komplexität der Materie und der Operationalisierung für den eigenen Anwendungsfall. Eine Datenintegrationsplattform lässt sich nicht ohne hochqualifiziertes Personal oder entsprechenden externen Support betreiben.

Apache Airflow oder Azure Data Factory - Unser Fazit

Azure Data Factory bringt eine Vielzahl von Funktionen mit, die über die grundlegenden Anforderungen an einen Orchestrierungsdienst hinausgehen. Die tiefgreifende Verknüpfung des Data Factory Workflow-Modells mit den zu verarbeitenden Daten beschränkt aber wiederum die Möglichkeiten der Integration mit bestehenden Diensten im eigenen Rechenzentrum.

Apache Airflow ist in seinen nativen Funktionalitäten ein dedizierter Orchestrierungsdienst und trennt in seiner Architektur Workflows von Datenflüssen. Aufgrund der vollständigen Einhaltung des Configuration-as-Code-Prinzips, Verwendung der weit verbreiteten Programmiersprache Python als Basis sowie der Open Source Lizenz, ist eine vollständige Integration in einen beliebigen Systemkontext möglich.

Schon diese nur oberflächliche Betrachtung der beiden Dienste zeigt, dass die Entscheidung zwischen Azure Data Factory und Apache Airflow als Orchestrierungsdienst stark von den Gegebenheiten eines Unternehmens und dem vorhandenen Systemkontext abhängt. Wir unterstützen unsere Kunden bei der Arbeit mit beiden Systemen und beraten Sie bei der Entscheidung. Vereinbaren Sie ein erstes Gespräch mit unserem NextLytics Data Science and Engineering Team.