dbtで変換ロジックを書き、Sodaやdbt testsで品質を担保した。残るのは「これを毎日確実に動かし続ける」という運用です。最初のうちはcronで足ります。けれども、依存関係のあるジョブが増え、失敗時のリトライ、再実行、通知、過去日付の再処理、と要件が積もると、cronでは破綻します。

そこで出てくるのが、データオーケストレーションツールです。Airflow・Dagster・Prefectは代表的な3つで、それぞれ生まれた背景と思想が違います。3者の位置づけと、自社に合う選び方を整理します。

なぜオーケストレーションが必要か

cronで足りなくなる典型的な兆候は、こんなところに出ます。

  • ジョブAが終わってからジョブBを動かしたいが、cronだとAの終了時刻が読めない
  • 失敗したジョブだけを再実行したいが、cronには再実行の概念がない
  • 「先週金曜のデータを今から再処理して」と言われても、対象日付を指定して動かす仕組みがない
  • 失敗の通知をSlackに飛ばしたいが、cron単体ではログを拾えない
  • ジョブが100個を超えてくると、依存関係が頭で追えない

オーケストレーションツールは、これらを「ワークフロー(DAG)」という単位で記述・実行・監視する仕組みを提供します。複雑なデータパイプラインを安定して動かす土台になります。

3つのツールの位置づけ

AirflowDagsterPrefect
登場2014(Airbnb発)2018(Elementl発)2018
世界観タスクのDAGアセット(データ)のグラフPythonコードに近い柔軟性
記述スタイルPythonでDAGとOperatorを定義asset/jobを宣言的にPythonでPythonのデコレータ中心
OSS/SaaSOSS+商用(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名程度のデータ組織なら、本質的な作業に時間を使うためにマネージドを選ぶケースが増えています。