Apache Airflow
Apache Airflowとは?

データ分析の現場では、外部システムからデータを取得し、加工して、データウェアハウスへ格納し、レポートを生成するといった一連の処理を定期的に実行する必要がある。処理の数が増えると、実行順序の制御や失敗時の再実行管理が複雑になる。Airflowはこうしたパイプライン全体の定義・実行・監視を一元的に扱える仕組みを提供している。
Airflowの中心となる概念が「有向非循環グラフ」(DAG:Directed Acyclic Graph)である。個々のタスクを矢印でつなぎ、「このタスクが完了したら次を実行する」という依存関係をグラフ構造で表現する。循環しない一方向の構造を持つため、処理が無限ループに陥ることがない。DAGはPythonコードで記述し、タスク間の依存関係と実行スケジュールをあわせて定義する。
各タスクの実装には「Operator」と呼ばれる部品を使う。データベースへのクエリ実行、Pythonスクリプトの呼び出し、外部APIへのリクエスト、クラウドサービスの操作など、用途別のOperatorが標準で用意されており、独自のOperatorを作成することもできる。dbtやApache Sparkといった別のデータ処理ツールと組み合わせて運用されることも多い。
Webブラウザで操作できるWebユーザーインターフェースが付属しており、DAGの実行状況をグラフや一覧でリアルタイムに確認できる。失敗したタスクのみを再実行する操作も画面上から行え、ログ閲覧機能で原因調査もしやすい。スケジューリングはcron形式で記述し、毎日・毎時といった定期実行のほか、別のDAGの完了を契機に次の処理を起動する連携も設定できる。
KubernetesやCeleryと組み合わせることで処理を複数サーバに分散でき、大規模なデータ処理にも対応できる。大手クラウドサービスでは「Google Cloud Composer」や「Amazon Managed Workflows for Apache Airflow」(MWAA)といったマネージドサービスも提供されており、インフラ管理の負担を抑えた形で導入することができる。