dbtで変換ロジックを書き、Sodaやdbt testsで品質を担保した。残るのは「これを毎日確実に動かし続ける」という運用です。最初のうちはcronで足ります。けれども、依存関係のあるジョブが増え、失敗時のリトライ、再実行、通知、過去日付の再処理、と要件が積もると、cronでは破綻します。
そこで出てくるのが、データオーケストレーションツールです。Airflow・Dagster・Prefectは代表的な3つで、それぞれ生まれた背景と思想が違います。3者の位置づけと、自社に合う選び方を整理します。
なぜオーケストレーションが必要か
cronで足りなくなる典型的な兆候は、こんなところに出ます。
- ジョブAが終わってからジョブBを動かしたいが、cronだとAの終了時刻が読めない
- 失敗したジョブだけを再実行したいが、cronには再実行の概念がない
- 「先週金曜のデータを今から再処理して」と言われても、対象日付を指定して動かす仕組みがない
- 失敗の通知をSlackに飛ばしたいが、cron単体ではログを拾えない
- ジョブが100個を超えてくると、依存関係が頭で追えない
オーケストレーションツールは、これらを「ワークフロー(DAG)」という単位で記述・実行・監視する仕組みを提供します。複雑なデータパイプラインを安定して動かす土台になります。
3つのツールの位置づけ
| Airflow | Dagster | Prefect | |
|---|---|---|---|
| 登場 | 2014(Airbnb発) | 2018(Elementl発) | 2018 |
| 世界観 | タスクのDAG | アセット(データ)のグラフ | Pythonコードに近い柔軟性 |
| 記述スタイル | PythonでDAGとOperatorを定義 | asset/jobを宣言的にPythonで | Pythonのデコレータ中心 |
| OSS/SaaS | OSS+商用(Astronomer等) | OSS(Open Source)+商用(Dagster+) | OSS(Prefect Core)+SaaS(Prefect Cloud) |
| 得意領域 | 幅広いタスク連携、巨大エコシステム | データ中心の運用、品質と直結 | 動的なワークフロー、シンプル運用 |
| 学習コスト | 中〜高(独自概念多め) | 中(asset思考に慣れる) | 低〜中(Python寄り) |
3者は対象とする世界観が違います。Airflowは「タスクを並べて動かす」、Dagsterは「データという成果物を作る」、Prefectは「Pythonコードを動的に動かす」、と覚えると整理しやすいです。
それぞれの強みと弱み
Airflow
2014年にAirbnbがオープンソース化した、データオーケストレーションの事実上の業界標準です。豊富なOperator(DB接続・クラウドAPI・dbt・Sparkなど)と巨大なコミュニティ、商用版(Astronomer、AWS MWAA、Google Cloud Composer)の整備が強みです。OSS導入実績が圧倒的で、求人や情報の流通量も多いです。
弱みは、独自概念(DAG、Task、XCom、SubDAG、TaskFlowなど)の学習コストと、動的なワークフローを書きにくいことです。詳細はAirflow とはで扱います。
Dagster
「データアセット中心」という新しい世界観を提示した、モダンなオーケストレーションツールです。タスクではなく「作られるデータ」を主役にし、メタデータ・系統(リネージ)・品質チェックがフレームワークに組み込まれています。dbtとの統合が深く、dbtのモデルが自然にDagsterのアセットとして扱えます。
強みは、データ品質運用との親和性、開発体験の良さ、リネージの自動構築です。弱みは、コミュニティと求人がAirflowほどではないこと、asset思考への概念転換が必要なことです。詳細はDagster とはで扱います。
Prefect
「Pythonでワークフローを書きたい」というニーズに、いちばん素直に応えるツールです。デコレータ(`@flow`、`@task`)で関数を装飾するだけでワークフローになり、動的な分岐や並列も書きやすいです。Prefect Cloudというマネージドサービスもあります。
強みは、Pythonコードに近い記述、動的ワークフローの書きやすさ、軽量な導入感です。弱みは、エコシステムがAirflow・Dagsterほど厚くないこと、データアセットの思想はDagsterほど明確でないことです。詳細はPrefect とはで扱います。
選定の判断軸
| 判断軸 | 選び方 |
|---|---|
| 既存実績・求人重視 | Airflow(業界標準・採用しやすい) |
| dbt中心の運用・データ品質と統合 | Dagster(asset思想と相性が良い) |
| Pythonコードで動的に書きたい | Prefect(記述が素直) |
| マネージドで使いたい | Astronomer(Airflow)/Dagster+/Prefect Cloud いずれも可 |
| 大規模・多数チームの基盤 | Airflow / Dagster(成熟度・運用機能で) |
新規でdbt中心のデータ基盤を作るならDagster、既存資産・求人・コミュニティで安全を取るならAirflow、シンプルにPythonで書きたい中小規模ならPrefect、というのが現場での印象です。
dbt・データ品質ツールとの組み合わせ
オーケストレーションは、単体では何もしません。dbt・データ品質ツールと組み合わせて「データパイプライン全体」を構成します。
| 段階 | 役割 | 担当ツール |
|---|---|---|
| 取り込み | ソースからRawへ | Fivetran/Airbyte等+オーケストレーター |
| 変換 | Raw→Silver→Goldへ | dbt(dbt実装ガイド) |
| 品質チェック | 各段階でのデータ検証 | dbt tests/Soda/Great Expectations(品質ツール選定) |
| オーケストレーション | 全体のスケジュール・実行・監視 | Airflow/Dagster/Prefect |
dbtを使っているなら、オーケストレーターからdbtを呼ぶ統合が必要です。3者とも公式またはコミュニティ製の連携があり、特にDagsterはdbtを「ファーストクラス市民」として扱う設計になっています。
どこから始めるか
- ステップ1:cronで運用しているなら、まずは今動かしているジョブと依存関係を棚卸し
- ステップ2:1つのジョブ群(dbtジョブ+品質チェックなど)をオーケストレーターに移植する
- ステップ3:失敗時の通知・リトライ・再実行を運用に組み込む
- ステップ4:他のジョブを段階的に移植。リネージや観測性を活用する
一気に全部移すと事故るので、1つずつ移植しながら運用感を確かめるのが基本です。マネージドサービス(Astronomer・Dagster+・Prefect Cloud)を使えば、インフラ管理の負担を減らして本質的な設計に集中できます。
まとめ
- cronで足りなくなったら、Airflow・Dagster・Prefectのいずれかを検討する。
- Airflow=業界標準・幅広いタスク連携、Dagster=データアセット中心・dbt統合、Prefect=Python素直に書ける、と覚える。
- 選定は、既存実績/dbt統合/記述スタイル/規模/マネージドの可否、で決まる。
- dbt・データ品質ツールと組み合わせて「データパイプライン全体」を構成する。
- 導入は1ジョブから始め、運用感を確かめながら広げる。
各ツールの詳細はAirflow とは・Dagster とは・Prefect とはにあります。データ基盤のオーケストレーション設計や移行の壁打ちは、DE-STKの初回相談(30分・無料)もご利用ください。
よくある質問(FAQ)
Q. cronで足りるかどうかの境目は?
A. ジョブ数が10〜20を超え、依存関係が複数段になってきたら、cronは限界です。「Aが終わってからB、Bが終わってからC」のような直列依存をcronで時刻指定で組むと、Aが遅れたときに全部ズレます。再実行・通知・履歴の運用要件が出てきた時点で、オーケストレーターへの移行を検討してください。
Q. dbt Cloudがあれば、オーケストレーターは不要では?
A. dbtだけで完結する組織なら、dbt Cloudのスケジューラで十分なことがあります。けれども、データ取り込み(Fivetran等)、品質チェック(Soda等)、後段の通知、外部システム連携、と「dbt以外の処理」を組み合わせる場面では、オーケストレーターが要ります。dbtを含めた全体ワークフローの責任者として、オーケストレーターを置くのが本筋です。
Q. Airflowが業界標準なら、迷わずAirflowでよいですか?
A. 安全な選択であることは間違いありません。求人で人が集まりやすく、情報も豊富です。dbt中心で品質運用と密に連携させたい・データアセットの世界観で組みたい場合は、Dagsterのほうが開発体験は良くなります。「業界標準で外さない安全」と「データ中心の最適化」のどちらを取るか、の判断です。
Q. マネージドサービスとセルフホストはどう選ぶ?
A. インフラ運用ができる人員と予算で決めます。マネージド(Astronomer・Dagster+・Prefect Cloud・MWAA・Composer)は月額費用がかかりますが、アップデート・スケール・モニタリングが組み込まれます。セルフホストはOSSで無料ですが、運用工数が発生します。3〜10名程度のデータ組織なら、本質的な作業に時間を使うためにマネージドを選ぶケースが増えています。