Funtap - stock.adobe.com
Workflow-Management mit dem Open Source Tool Apache Airflow
Mit Apache Airflow können Workflows erstellt und verwaltet werden. Das Python-Tool bietet hierfür eine spezielle Oberfläche. Wie Airflow bei der Arbeit funktioniert.
Apache Airflow ist ein Open Source Tool zum Erstellen, Verwalten und Überwachen von Workflows. Das Tool gehört zu den bekanntesten Programmen in diesem Bereich. Das Online-Portal Airbnb hat das Python-Tool ursprünglich entwickelt und stellt es seitdem als Open Source zur Verfügung.
Für die Erstellung und Verwaltung der Workflows steht eine grafische Oberfläche zur Verfügung. Neben der lokalen Installation ist Apache Airflow bei vielen Cloud-Anbietern erhältlich, darunter Microsoft Azure und Amazon Web Services (AWS).
Funktionsweise und Komponenten von Airflow
Airflow nutzt Directed Acyclic Graphs (DAG) um Workflows abzubilden. Die Steuerung der Workflows erfolgt wiederum mit dem Scheduler. Der Scheduler spielt bei den Zeitsteuerungen von Workflows eine wichtige Rolle, die später behandelt werden. Es ist möglich, mehrere Instanzen eines Schedulers zu definieren, mit dem sich die Latenzzeit von Workflows steuern lässt. In den Directed Acyclic Graphs sind die Aufgaben als Knoten dargestellt. Workflows bestehen aus einer Sequenz von Aufgaben, die in Airflow als Tasks definiert werden.
Workflows werden in der zugehörigen Python-Datei als DAG-Objekt angelegt. In diesem Objekt sind die Schritte und deren Reihenfolge definiert. Dabei sollte man darauf achten, dass die Aufgaben eines Workflows an der richtigen Stelle definiert sind, da diese normalerweise während der Ausführung anfallen.
Die DAG-Datei hat die Aufgabe, den Workflow zu definieren, nicht die Aufgaben zu steuern. Wenn die Datei zu groß wird, weil die Aufgaben nicht korrekt definiert sind, wird das System ausgebremst. Die Datei sollte also möglichst schlank gehalten werden. Im Rahmen der Zeitplanung sollte außerdem darauf geachtet werden, dass die Zeitangaben der Weboberfläche und der Workflows übereinstimmen. Standardmäßig ist UTC eingestellt, man kann aber in der Weboberfläche eine benutzerdefinierte Zeitzone festlegen.
Es ist außerdem möglich, Workflows zum gleichen Zeitpunkt starten zu lassen, auch wenn es sich dabei um überschneidende Workflows handelt, also Workflows, die sich gegenseitig beeinflussen können. Airflow bietet hier die Option, mit dem Parameter priority_weight eine Prioritätsreihenfolge zu definieren. Der Parameter kann für jede Aufgabe in einem Workflow definiert werden. Neben der Zeit können Worklows auf Ereignissen basieren.
Generell spielt die Zeit in Airflow eine wesentliche Rolle, da diese oft der wichtigste Ausgangspunkt für einen Workflow ist. Die Ausführungszeit wird in Airflow mit execution_time ausgedrückt. Das ist der Startzeitpunkt. Die Laufzeit entspricht dem Ende des Workflows, also wann der nächste Workflow starten kann.
Zur Bearbeitung von Workflows kommt der Worker von Airflow zum Einsatz. Der Zugriff erfolgt über den Webserver. Die Informationen der einzelnen Tasks speichert Airflow wiederum in der Meta-Datenbank. In den Protokolldateien sind alle Aufgaben und deren Abläufe zu sehen. Diese kommen vor allem zur Fehlerbehebung zum Einsatz.
Neben der weiten Verbreitung bietet das Tool den Vorteil, dass Python zur Definition von Workflows unterstützt wird. Wer sich mit Python auskennt und Worflows erstellen will, kommt mit Airflow schnell zum Ziel.
Zusätzlich steht eine grafische Oberfläche zur Verfügung. Hier ist es möglich, den Status der Workflows in Echtzeit zu verfolgen. Airflow kann eine Vielzahl von Diensten, Datenbanken und Cloud-Plattformen einbinden.
Tipps für die Arbeit mit Apache Airflow
Wenn Workflows aktuell nicht ausgeführt werden können, ist es sinnvoll, diese in Airflow zu pausieren. Kann das System bestimmte Workflows nicht ausführen, versucht es automatisch den Workflow neu zu starten, sobald das möglich ist. Das kann zu einer Überlastung der Server führen. Wenn die Nachholung von Workflows nicht gewünscht ist, kann in der Konfiguration der Workflows mit dem Parameter catchup=False gearbeitet werden. Soll nur der aktuelle Workflow ablaufen, ist das ebenfalls in der Konfiguration verfügbar.
Um Workflows und die mit ihnen verbundenen Python-Skripte aktuell zu halten, ist es sinnvoll, auf ein Git-Repository für die Skripte zu setzen. Das Tool nutzt das Verzeichnis dags, um Dateien zu laden. In diesem Verzeichnis sollte man Unterordner mit dem Git-Repository verknüpfen. Die Synchronisierung zwischen dem Verzeichnis und dem Repository kann wiederum über einen internen Workflow in Airflow abgewickelt werden. Auch andere Dateien, die notwendig sind, können dadurch synchronisiert werden.
Viele Daten in einem Workflow lassen sich mit Variablen anstatt mit festen Werten definieren. Das verbessert die Flexibilität, da ein Workflow schneller dupliziert oder neu angelegt werden kann. Die Variablen sind über die Kommandozeile (CLI), eine API und in der Weboberfläche verfügbar. Die Speicherung der Variablen erfolgt in der Meta-Datenbank. Dadurch stehen die Informationen schnell bereit, wenn der Workflow sie benötigt. Über JSON-Objekte ist es darüber hinaus möglich, Variablen zusammenzufassen.
Der Betrieb von Airflow kann auf verschiedenen Wegen erfolgen. Bei vielen Cloud-Anbietern steht das Tool als zusätzlicher Dienst zur Verfügung. Für den lokalen Betrieb kann eine herkömmliche Installation auf einem Server erfolgen oder der Betrieb als Docker-Container. Hier kann die Community Edition von Docker zum Einsatz kommen. Den Betrieb in Docker beschreiben die Entwickler in der Apache-Airflow-Dokumentation ebenso wie die lokale Installation.