Dagu vs Kestra
Dagu vs Kestra: 同じ YAML の発想、まったく違うフットプリント。
Dagu も Kestra も YAML で宣言的にワークフローを書くため、本当の選択肢はランタイムと依存関係です。Dagu はすでに持っているコマンドを呼ぶ自己完結型の単一バイナリです。Kestra は JVM 上で動き、背後に database を持ち、その上に大きなプラグインカタログがあります。
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]JVM が不要な単一バイナリ
運用する外部 database やブローカーが不要
shell、Docker、HTTP、SSH、SQL、SubDAG、AI エージェント向けの executor
local、queue、分散の各モードで動作
一目で比較
Dagu vs Kestra 早見表
単一の Go バイナリ、JVM なし。
JVM 上で動く Java アプリケーション。
ローカルファイルのみ、外部 database やブローカーなし。
コアに database、スケールには Kafka と Elasticsearch。
組み込み executor でコマンドを直接呼ぶ。
1400 以上のプラグインを持つ大きなカタログ。
詳細
それぞれの強みと向き不向き
2 つのツールの共通点
Dagu も Kestra も宣言的です。YAML でワークフローを書き、git でバージョン管理し、自分のインフラで実行します。違いはそれぞれの下で何を動かす必要があるかに表れます。
- pull request でレビューできる宣言的 YAML ワークフロー
- 実行、ログ、履歴のための Web UI
- セルフホストなのでデータは自分の環境に残る
Dagu の運用が軽い理由
Dagu は Go で書かれた 1 つのバイナリとして配布され、状態をローカルファイルに保ちます。チューニングする JVM も、健全に保つ別のデータストアもありません。Kestra は Java 上で動き、コアに database を必要とし、高可用性構成では Kafka や Elasticsearch といったコンポーネントが加わります。
- ファイルに支えられた 1 バイナリ — JVM も外部 database も不要
- 各ステップはすでに使っているコマンド、コンテナ、スクリプトを実行
- 1 台のホストで始め、後から queue や分散 worker へ移行
Kestra を選ぶべきとき
Kestra は、幅広いプラグインカタログと UI 中心の編集体験を大規模に求める場合に適しています。プラグインのエコシステムと背後の企業は Dagu より大きく、それを重視するチームもあります。
- コマンドを直接呼ぶより、既製プラグインの大きなカタログがほしい
- API に支えられた UI エディタでフローを構築・編集したい
- 高可用性プラットフォームを計画し、Kafka と Elasticsearch の運用も問題ない
FAQ
Dagu を導入する前によくある質問
Dagu は Kestra を置き換えますか?
多くのチームにとっては、はい。ワークフローがコマンド、コンテナ、HTTP、SSH、SQL として動くなら、Dagu ははるかに小さいフットプリントでそれらをカバーします。Kestra の大きなプラグインカタログや大規模な UI エディタに依存しているなら、Kestra のほうが向いています。
どちらも YAML を使うなら、実際には何が違うのですか?
YAML の発想は似ています。違いは下にあります。Dagu は JVM も外部 database も持たない 1 バイナリで、Kestra は Java 上で動き、database を持ち、高可用性のために Kafka と Elasticsearch を加えます。
Dagu は Kestra と同じだけの連携を持ちますか?
いいえ。Kestra のほうが大きなプラグインカタログとプラグインマーケットプレイスを持っています。Dagu は組み込み executor が少なく、プラグインを入れる代わりに既存のコマンド、スクリプト、コンテナを呼ぶことを前提とします。
次の一歩
まず 1 つのワークフローから。
Dagu をインストールし、不安定なスクリプトやエージェントタスクを 1 つ YAML に移して、実際の実行履歴を見て判断できます。