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 の概要
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 に移して、実際の実行履歴を見て判断できます。