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 早見表

ランタイム
Dagu

単一の Go バイナリ、JVM なし。

Kestra

JVM 上で動く Java アプリケーション。

依存関係
Dagu

ローカルファイルのみ、外部 database やブローカーなし。

Kestra

コアに database、スケールには Kafka と Elasticsearch。

ステップの拡張
Dagu

組み込み executor でコマンドを直接呼ぶ。

Kestra

1400 以上のプラグインを持つ大きなカタログ。

詳細

それぞれの強みと向き不向き

01

2 つのツールの共通点

Dagu も Kestra も宣言的です。YAML でワークフローを書き、git でバージョン管理し、自分のインフラで実行します。違いはそれぞれの下で何を動かす必要があるかに表れます。

  • pull request でレビューできる宣言的 YAML ワークフロー
  • 実行、ログ、履歴のための Web UI
  • セルフホストなのでデータは自分の環境に残る
02

Dagu の運用が軽い理由

Dagu は Go で書かれた 1 つのバイナリとして配布され、状態をローカルファイルに保ちます。チューニングする JVM も、健全に保つ別のデータストアもありません。Kestra は Java 上で動き、コアに database を必要とし、高可用性構成では Kafka や Elasticsearch といったコンポーネントが加わります。

  • ファイルに支えられた 1 バイナリ — JVM も外部 database も不要
  • 各ステップはすでに使っているコマンド、コンテナ、スクリプトを実行
  • 1 台のホストで始め、後から queue や分散 worker へ移行
03

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