Die Geschäftswelt spricht, lebt und reagiert in Form von Daten. Die neue Lebensessenz, die das Morgen mit dem Heute verbindet muss dabei gekonnt in Bewegung gehalten werden. Dabei hilft ein state-of-the-art Workflowmanagement. Digitale Prozesse werden ausgeführt, verschiedenste Systeme orchestriert und dabei die Datenverarbeitung automatisiert. Wir präsentieren Ihnen in diesem Artikel, wie das alles mit der open-source Workflowmanagement-Plattform Apache Airflow komfortabel möglich ist. Hier finden Sie wichtige Funktionalitäten, Komponenten und die wichtigsten Begriffe für einen problemlosen Einstieg erklärt.
Warum ein digitales Workflowmanagement einführen?
Das manuelle Ausführen von Workflows und das reine Starten mit Cron Jobs ist nicht länger zeitgemäß. Viele Unternehmen suchen deshalb nach einer Cron Alternative. Sobald digitale Aufgaben - oder ganze Prozesse - wiederkehrend und verlässlich ausgeführt werden sollen, muss eine automatisierte Lösung her. Neben der reinen Ausführung von Arbeitsschritten sind weitere Aspekte von Bedeutung:
- Problembehandlung
Die wahre Größe einer Workflowmanagement-Plattform zeigt sich wenn unvorhergesehene Fehler auftreten. Neben einer Benachrichtigung und der genauen Fehlerlokalisierung im Prozess, gehört eine automatische Dokumentation dazu. Im Idealfall wird ein Retry nach einem beliebigen Zeitfenster automatisch in Gang gesetzt, damit kurzfristige Erreichbarkeitsprobleme von Systemen von selbst gelöst werden. Dem Anwender sollten für eine schnelle Fehlerbehebung die aufgabenspezifischen System-Logs zur Verfügung stehen. - Flexibilität in der Gestaltung des Workflows
Die modernen Herausforderungen des Workflowmanagements gehen über hartcodierte Workflows hinaus. Damit sich Workflows dynamisch an z. B. das momentane Ausführungsintervall anpassen, sollte der Ausführungskontext über Variablen zum Ausführungszeitpunkt aufrufbar sein. Konzepte wie Bedingungen erfreuen sich ebenfalls einen steigendem Anwendernutzen in der Gestaltung von flexiblen Workflows. - Monitoring der Ausführungszeiten
Ein Workflowmanagement-System ist ein zentraler Punkt, welches neben den Status auch die Laufzeit der Workflows verfolgt. Die Ausführungszeiten sind mittels Service-Level-Agreements (SLA) maschinell überwachbar. Unerwartet lange Ausführungszeiten durch eine unüblich große Datenmenge werden so erkannt und können optional eine Benachrichtigung in Gang setzen.
Aufgrund der Herausforderungen wurde Airflow 2014 als interne Workflowmanagement-Plattform von AirBnB entwickelt, um die komplexen zahlreichen Workflows erfolgreich zu managen. Dabei war Apache Airflow von Beginn an open-source und steht inzwischen unter der Apache License, den Nutzern kostenlos zur Verfügung.
Funktionsumfang von Apache Airflow
Seit Airflow 2019 ein Top-Level-Projekt der Apache Software Foundation geworden ist, bekam die beitragende Community einen gigantischen Wachstumsschwung. Im Laufe der Zeit ist der Funktionsumfang deshalb stark gewachsen und erfüllt mit regelmäßigen Releases die aktuellen Herzenswünsche der Anwender.
Reichhaltige Web-Oberfläche
Im Vergleich zu anderen Workflowmanagement-Plattformen kann vor allem die reichhaltige Weboberfläche überzeugen. Der Status der Ausführungsprozesse, die resultierenden Laufzeiten und natürlich auch die Logfiles sind über das elegant gestaltete Web-Interface direkt zugänglich. Wichtige Funktionen für die Verwaltung von Workflows, wie das Starten, Pausieren und Löschen eines Workflows sind direkt aus dem Startmenü ohne Umwege realisierbar. Das sorgt für eine intuitive Bedienbarkeit, auch ohne Programmierkenntnisse. Der Zugriff geschieht am besten über einen Desktop, ist jedoch auch über mobile Endgeräte - allerdings mit Komforteinschränkungen - möglich.
Command-Line-Interface und API
Apache Airflow gibt es nicht nur zum Klicken. Für technische Anwender gibt es ein Command-Line-Interface (CLI) welches ebenfalls die Hauptfunktionen abdeckt. Durch die generalüberholte REST-API greifen sogar andere Systeme mit einer sicheren Authentifizierung über die Schnittstelle auf Airflow zu. Somit werden eine Reihe an neuen Anwendungsfällen und Systemintegrationen ermöglicht.
Realisierung komplexer Workflows mit internen und externen Abhängigkeiten
In Apache Airflow werden die Workflows durch Python Code definiert. Die Reihenfolge der Aufgaben lässt sich leicht anpassen. Dabei sind Vorgänger, Nachfolger und parallele Aufgaben definierbar. Neben diesen internen Abhängigkeiten sind auch externe Abhängigkeiten realisierbar. Beispielsweise kann mit der Fortsetzung des Workflows gewartet werden, bis eine Datei auf einem Cloud-Speicher auftaucht oder ein SQL-Statement ein valides Ergebnis liefert. Fortgeschrittene Funktionen, wie das Wiederverwenden von Workflowteilen (TaskGroups) und die bedingte Verzweigung (Branching) erfreuen auch anspruchsvolle Nutzer.
Skalierbarkeit und Containerisierung
Im Zuge der Einführung kann Apache Airflow zuerst auf einem einzigen Server laufen und dann mit wachsenden Aufgaben horizontal skaliert werden. Der Einsatz auf verteilten Systemen ist ausgereift und es werden verschiedene Architekturvarianten (Kubernetes, Celery, Dask) unterschtützt.
Anpassbarkeit mit Plug-Ins und Makros
Viele Integrationen zu Apache Hive, Hadoop Distributed File System (HDFS), Amazon S3 etc. stehen in der Standardinstallation bereit. Andere lassen sich durch benutzerdefinierte Aufgabenklassen hinzufügen. Durch den open-source Charakter ist selbst der Kern der Anwendung anpassbar und die Community stellt für die meisten Anforderungen gut dokumentierte Plug-Ins bereit.
Optimieren Sie Ihr Workflowmanagement
mit Apache Airflow
Komponenten in Apache Airflow
Die vielen Funktionen von Airflow werden durch das perfekte Zusammenspiel seiner Komponenten bestimmt. Die Architektur kann dabei je nach Anwendungsfall unterschiedlich ausfallen. So ist es möglich, flexibel von einer einzelnen Maschine auf ein ganzes Cluster zu skalieren. In der Grafik ist eine Multi-Node-Architektur mit mehreren Maschinen zu sehen.
Das Bild zeigt eine Multi-Node Architektur von Airflow. Im Vergleich zu einer Single Node Architektur sind die Worker in eigenen Nodes platziert
- Ein Scheduler sorgt gemeinsam mit dem angelagerten Executor für die Verfolgung und Triggerung der hinterlegten Workflows. Während der Scheduler verfolgt, welcher Task als Nächstes ausführbar ist, übernimmt der Executor die Auswahl des Workers und die folgende Kommunikation.
Seit Apache Airflow 2.0 ist es möglich, mehrere Scheduler zu verwenden. Bei besonders vielen Aufgaben wird so die Latenzzeit verringert. - Sobald ein Workflow gestartet wurde, übernimmt ein Worker die Ausführung der hinterlegten Befehle. Für spezielle Anforderungen bezüglich RAM und GPU etc. können Worker mit spezifizierter Umgebung ausgewählt werden.
- Der Webserver ermöglicht eine einfach User-Interaktion in einer grafischen Oberfläche. Diese Komponente läuft separat. Nach Bedarf kann auf das Starten des Webservers verzichtet werden, jedoch sind die Monitoringfunktionen im Betriebsalltag sehr gerne genutzt.
- In der Metadaten-Datenbank werden unter anderem die Statistiken über die Workflow-Läufe und Verbindungsdaten zu externen Datenbanken sicher gespeichert.
Mit diesem Aufbau gelingt es Airflow, Ihre Datenprozesse zuverlässig auszuführen. In Kombination mit der Programmiersprache Python lässt sich nun auf einfachem Weg bestimmen, was im Workflow wie ablaufen soll. Vor dem Anlegen der ersten Workflows sollten Sie bestimmte Begriffe gehört haben.
Wichtige Begriffe in Apache Airflow
In Verbindung mit Apache Airflow wird oft der Begriff DAG (Directed Acyclic Graph) verwendet. Dies ist die interne Speicherform eines Workflows als gerichtetes, nicht-zyklisches Diagramm. Der Begriff DAG wird synonym zu Workflow verwendet und ist der wohl zentralste Begriff in Airflow. Ein DAG-Run bezeichnet entsprechend einen Workflowlauf und im DAG-Bag sind die Workflowdateien abgelegt. In der folgenden Grafik ist ein solcher DAG dargestellt. Dieser beschreibt schematisch einen einfachen Extract-Transform-Load (ETL) Workflow.
Mit Python werden die zusammengehörigen Aufgaben (Tasks) zu einem DAG zusammengefasst. Dieser dient programmiertechnisch als Container, um die Aufgaben, deren Reihenfolge und Informationen zur Ausführung (Intervall, Startzeitpunkt, Wiederholungen bei Fehlern etc.) zusammenzuhalten. Mit der Definition der Beziehungen (Vorgänger, Nachgänger, Parallel) sind selbst komplexe Workflows abbildbar. Dabei kann es mehrere Start- und Endpunkte geben. Lediglich Zyklen sind nicht erlaubt. Mit dem Branching können selbst bedingte Verzweigungen innerhalb eines DAGs erfolgen.
Im code-technischen Organisationsgerüst DAG können die Tasks entweder als Operator oder als Sensor formuliert sein. Während Operator die eigentlichen Befehle ausführen, unterbricht ein Sensor die Ausführung bis zu einem bestimmten Ereignis. Beide Grundtypen werden in zahlreichen Entwicklungen der Community für bestimmte Anwendungen spezialisiert. Die Plug-and-Play Operatoren sind essentiell für die einfache Integration von Amazon Web Service, Google Cloud Plattform und Microsoft Azure und viele mehr. Die Spezialisierung geht vom einfachen BashOperator für die Ausführung von Bash Kommandos bis hin zum GoogleCloudStorageToBigQueryOperator. Die lange Liste der verfügbaren Operatoren ist im Github-Repository einzusehen.
In der Weboberfläche sind die DAGs grafisch dargestellt. In der Graphview (obere Grafik) sind die Tasks und deren Beziehungen gut sichtbar. Die Status-Farben der Ränder symbolisieren den Zustand der Task im ausgewählten Workflow-Lauf. In der Treeview (folgende Grafik) werden auch vergangene Läufe angezeigt. Das eingängige Farbschema zeigt auch hier mögliche Fehler direkt beim zugehörigen Task an. Mit nur zwei Klicks können die Log Files bequem ausgelesen werden. Das Monitoring und die Fehlersuche gehörten definitiv zu Airflows Stärken.
Ob Machine Learning Workflow oder ETL Prozess, ein Blick auf Airflow lohnt sich in jedem Fall. Nehmen Sie gerne Kontakt mit uns auf, falls Sie Unterstützung bei der passgenauen Konfiguration benötigen oder Ihre bestehende Installation aufrüsten wollen. Gerne geben wir unser Wissen auch in praxisnahen Workshops weiter.