Dagu vs Windmill

Dagu vs Windmill: 宣言的 YAML と、スクリプト/アプリ基盤。

どちらもセルフホストで動き、速いです。Windmill はスクリプトを workflow や webhook、low-code アプリに変え、PostgreSQL を使います。Dagu は既存コマンドを宣言的 YAML で動かす単一バイナリで、運用する DB はありません。

手持ちのコマンドを呼ぶワークフロー
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]

PostgreSQL 不要の単一バイナリ

Workflow は既存コマンドを呼ぶ宣言的 YAML

shell、Docker、HTTP、SSH、SQL、SubDAG、AI エージェント向け executor

ローカル、キュー、分散で実行

作業の定義方法は 2 通り

Windmill は code-first の基盤です。Python、TypeScript、Go、Bash、SQL でスクリプトを書くと、それぞれに webhook と生成された UI が付きます。Dagu は workflow を YAML に保ち、スクリプトやバイナリをステップとして扱います。

  • Windmill はスクリプトを基盤内に保存・実行し、入力フォームを自動生成します。
  • Dagu はバージョン管理された YAML でグラフを定義し、コマンドを呼びます。
  • どちらも依存関係、リトライ、スケジュール、実行履歴を提供します。

運用に必要なもの

Windmill は状態とジョブキューに PostgreSQL を必要とし、通常は server と worker のコンテナをその上で動かします。Dagu は状態をファイルに保つ単一バイナリなので、用意・バックアップ・アップグレードする DB がありません。

  • Dagu はローカルファイルに支えられた 1 プロセスから始まります。
  • Workflow モデルを変えずに、後からキューと worker を追加できます。
  • Windmill は十分にスケールしますが、PostgreSQL の存在と管理を前提とします。

Windmill を選ぶべきとき

Windmill はオーケストレーション以上のことをし、その広さこそが価値です。スクリプトを共有可能なエンドポイントとして置き、その周りに内部アプリや UI を組みたいなら、Windmill は Dagu が踏み込まない領域をカバーします。

  • ランナーだけでなく、low-code のアプリ/UI ビルダーが欲しい。
  • フォーム自動生成、approval step、豊富な組み込み連携が欲しい。
  • 外部コマンド呼び出しより、管理されたスクリプトでロジックを書きたい。

Windmill vs. Dagu の概要

観点
Dagu
一般的な代替手段
記述方法
コマンドを呼ぶ宣言的 YAML。
基盤内にホストされた Python、TypeScript、Go、Bash、SQL のスクリプト。
ランタイム
単一バイナリ、ファイルベースの状態、DB なし。
PostgreSQL キューに支えられた Rust のサービスと worker。
範囲
shell、Docker、HTTP、SSH、SQL、AI エージェントステップによるオーケストレーション。
Workflow に加え、approval flow を備えた low-code アプリ/UI ビルダー。

FAQ

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

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

完全にではありません。Dagu はオーケストレーション部分、つまりスケジュール、依存関係、リトライ、ログ、実行用 UI を置き換えます。Windmill の low-code アプリビルダーや生成 UI、広い連携カタログは提供しません。コマンドのスケジュールと監視だけが必要なら Dagu が軽い選択です。

Dagu に PostgreSQL は必要ですか?

いいえ。Dagu は状態をローカルファイルに保ち単一バイナリで動くため、導入・管理する DB はありません。Windmill は状態とジョブキューに PostgreSQL を使います。

Dagu で Python や TypeScript のスクリプトを動かせますか?

はい。ステップは任意のコマンドを実行できるので、Python、TypeScript、Bash、コンパイル済みバイナリも動きます。違いは、Windmill のようにスクリプトをホスト・管理するのではなく、ディスク上のスクリプトを呼ぶ点です。

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

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

Dagu をインストール