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
ローカル、キュー、分散で実行
一目で比較
Windmill vs. Dagu の概要
コマンドを呼ぶ宣言的 YAML。
基盤内にホストされた Python、TypeScript、Go、Bash、SQL のスクリプト。
単一バイナリ、ファイルベースの状態、DB なし。
PostgreSQL キューに支えられた Rust のサービスと worker。
shell、Docker、HTTP、SSH、SQL、AI エージェントステップによるオーケストレーション。
Workflow に加え、approval flow を備えた low-code アプリ/UI ビルダー。
詳細
それぞれの強みと向き不向き
作業の定義方法は 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、豊富な組み込み連携が欲しい。
- 外部コマンド呼び出しより、管理されたスクリプトでロジックを書きたい。
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 に移して、実際の実行履歴を見て判断できます。