Skip to content

DAGオーケストレーション

この記事は英語版から翻訳されました。最新版は英語版をご覧ください。

DAGオーケストレーションは、抽出、変換、モデル学習、メトリクス公開、検索インデックス更新、分析backfillのような依存関係を持つ処理を調整します。DAGシステムは依存構造を実行可能タスクに変換し、data interval、retry、backfill、部分完了を追跡します。

DAGモデル

DAGはacyclicであるべきです。繰り返しはcycleではなく、別のrun/intervalとして表現します。

用語

用語意味
DAG definitionタスクと依存関係のバージョン付きグラフ
DAG run1回の実行。多くはdata intervalを持つ
Taskグラフのノード
Task attemptタスクの1回の試行
Sensor外部状態を待つタスク
Backfill過去intervalの実行

Scheduler責務

text
task is runnable when:
  all upstream tasks succeeded
  task run_after <= now
  task concurrency limits allow it
  DAG run is not canceled
  required external conditions are met

依存関係のready判定はworkerではなくschedulerが所有します。

Data Interval

Run labelData intervalよくあるバグ
2026-06-15 daily run2026-06-15T00:00Z to 2026-06-16T00:00Zrun dateとexecution dateの混同
10:00 hourly run09:00 to 10:00遅延データを読めない
May backfill複数daily intervalslive warehouse capacityを圧迫

interval境界をtask inputとoutput pathに明示します。

冪等な出力

text
s3://warehouse/orders_daily/dt=2026-06-15/_tmp/run_id=abc
s3://warehouse/orders_daily/dt=2026-06-15/part-000.parquet

一時領域に書き、検証後にatomic publishします。失敗後の半端なpartitionを避けます。

Backfill

Backfillは本番負荷です。

  • backfill専用queue
  • DAG/dataset別concurrency cap
  • warehouse budget limit
  • dry runで依存展開を確認
  • pause/resume
  • overwrite policy

Dynamic DAG

パターンリスク制御
customerごとtask数百万taskshard単位にbatch
fileごとtaskscheduler metadata爆発manifest task + worker batching
runtime graph expansionretry推論が難しいrunごとに展開後graphを永続化

障害セマンティクス

障害望ましい動作
upstream失敗downstreamはblockedまたはskipped
task timeout冪等ならretry、そうでなければfail fast
data quality失敗publish pathを止めてalert
worker deathlease expiration後にretry
scheduler deathmetadataからrunnable tasks再構築

観測性

  • critical path duration
  • task duration by attempt
  • queue wait vs execution time
  • failed dependency count
  • late data count
  • backfill progress by interval
  • dataset freshness
  • output row counts and quality checks

関連パターン

MITライセンスの下で公開。Babushkaiコミュニティが構築。