Dagu vs Dagster

Dagu と Dagster は別の課題を解く。

Dagster は software-defined assets と lineage を中心に据えた Python のデータオーケストレーターです。Dagu は、すでに持っているコマンドを呼ぶ YAML ワークフローを動かす単一バイナリです。このページはそれぞれの適所を説明します。

すでに動かしているコマンドを呼ぶワークフロー
name: nightly-ops
schedule: "0 2 * * *"

steps:
  - id: extract
    run: python scripts/extract.py

  - id: transform
    run: ./bin/transform
    retry_policy:
      limit: 3
    depends: [extract]

  - id: notify
    run: ./scripts/slack-success.sh
    depends: [transform]

単一バイナリで完結し、Postgres、daemon、webserver の運用が不要

ワークフローは Python フレームワークではなく宣言的な YAML

状態はファイル管理で、外部の database や message broker は不要

shell、Docker、HTTP、SSH、SubDAG、SQL、AI エージェントの executor を搭載

Dagu が提供するもの

Dagu はコマンドをスケジュールし、リトライし、観測します。ワークフローを YAML で書くと、Dagu はそれをファイルベースの 1 プロセスとして実行します。Web UI は追加サービスなしで実行、ログ、履歴を表示します。

  • スクリプト、バイナリ、コンテナ、HTTP、SSH、SQL、AI エージェントのステップを実行
  • 単一バイナリで始め、後からキューや分散実行へ拡張
  • database を立てずに Web UI で実行履歴とログを確認

Dagster との違い

Dagster は data asset を作業の単位として扱います。asset を Python で宣言すると、プラットフォームがその間の lineage、partition、materialization を追跡します。セルフホスト構成では Postgres を背後に webserver と daemon が動きます。

  • software-defined assets がパイプラインの生成するテーブルやファイルをモデル化
  • partition と backfill でデータの一部を処理・再処理できる
  • IO manager が読み書きを担い、asset のコードを簡潔に保つ

Dagster を選ぶべきとき

作業の本質が data asset とその lineage にあるなら、Dagster が優れた選択です。Dagu には software-defined assets も IO manager もなく、Python フレームワークでもないため、Dagster のようにデータ基盤をモデル化することはできません。

  • dbt のモデルやテーブルにまたがる lineage と asset 単位の可観測性が欲しい
  • partition 化したデータ、backfill、IO manager がパイプラインの中心にある
  • チームが Python でパイプラインを書き、asset 中心の開発モデルを求める

Dagu vs Dagster 一覧

観点
Dagu
一般的な代替手段
モデル
コマンドを呼ぶ宣言的 YAML ワークフロー。
Python で定義する software-defined assets と lineage。
セルフホスト
ファイル管理の状態を持つ単一バイナリ、DB 不要。
Postgres を背後に持つ webserver と daemon。
向いている用途
スクリプト、コンテナ、運用ジョブ、AI エージェントコマンド。
asset と lineage のモデル化が必要なデータ基盤。

FAQ

Dagu を導入する前によくある質問

Dagu は Dagster を置き換えますか?

data asset の用途では置き換えません。Dagster は software-defined assets、lineage、partition のために作られており、Dagu はそれらを扱いません。主にコマンドのスケジュールと観測が目的で、asset モデルが過剰だった場合にのみ Dagu が代わりになります。

Dagu でデータパイプラインを動かせますか?

はい。コマンド、コンテナ、HTTP、SSH、SQL、SubDAG で表現できる場合は動かせます。Dagu はステップをオーケストレーションしますが、その間の data asset や lineage は追跡しません。

Dagu の実行に database は必要ですか?

いいえ。Dagu は状態をファイルに保持し、単一バイナリで動きます。Postgres、daemon、別の webserver を運用する必要がなく、これがセルフホストの Dagster との主な構成上の違いです。

まず 1 つのワークフローから。

Dagu をインストールし、不安定なスクリプトやエージェントタスクを 1 つ YAML に移して、実際の実行履歴を見て判断できます。

Dagu をインストール