Dagu vs Argo Workflows

Argo Workflows は Kubernetes 上で動く。Dagu は普通のマシンで動く。

どちらも DAG を定義し、ステップを順に実行します。Argo Workflows は Kubernetes に組み込まれ、各ステップを pod としてスケジュールします。Dagu は既存のコマンドを呼ぶ 1 バイナリで、運用するクラスタはありません。

1 台のホストで動かせるワークフロー
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]

自己完結した 1 バイナリ、Kubernetes クラスタ不要

既存コマンドを実行する宣言的 YAML

外部 database や message broker 不要

shell、Docker、HTTP、SSH、SQL、SubDAG、AI エージェント用の executor

下にクラスタを置かないオーケストレーション

Argo Workflows は稼働中の Kubernetes クラスタと、各ステップを pod に変える controller を前提とします。Dagu にその要件はありません。1 バイナリをサーバー、ノート PC、VM に置けば動きます。

  • Kubernetes も controller も etcd もない通常のマシンで動く。
  • 状態を別 database や broker ではなくローカルファイルに保持。
  • ローカルで始め、負荷が増えたらキューや分散モードへ移行。

ステップはコンテナだけでなくコマンド

Argo Workflows では各ステップが pod 内で動くコンテナです。Dagu もコンテナを動かせますが、shell スクリプト、HTTP エンドポイント、SSH コマンド、SQL クエリ、SubDAG、AI エージェントステップを直接呼べます。

  • 既存のスクリプトやバイナリを image 化せずそのまま使える。
  • 同じワークフロー内で Docker ステップと shell、HTTP、SSH を混在できる。
  • 実行、ログ、履歴を内蔵 Web UI で確認できる。

Argo Workflows を選ぶべきとき

すでに Kubernetes が基盤なら Argo Workflows が向いています。Kubernetes ネイティブで、各ステップを独立した pod としてスケジュールし、大量のコンテナ fan-out 向けに設計されています。Dagu はそれを行いません。

  • Kubernetes 上で動き、ワークフローを他のマニフェストと並ぶ CRD として定義したい。
  • 各タスクごとに pod スケジューリング、node selector、クラスタ autoscaling が必要。
  • パイプラインが多数のノードへ一度に数千コンテナへ fan-out する。

Argo Workflows vs. Dagu の概要

観点
Dagu
一般的な代替手段
ランタイム
ローカルファイルに支えられた通常マシンの 1 バイナリ。
workflow controller を伴う Kubernetes クラスタ。
ステップの実体
コマンド:shell、Docker、HTTP、SSH、SQL、SubDAG、AI エージェント。
クラスタ上で pod として動くコンテナ。
向いている用途
すでに運用するホスト上の運用ジョブ、スクリプト、混在パイプライン。
Kubernetes ネイティブで、大規模なコンテナ中心や ML パイプライン。

FAQ

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

Dagu は Argo Workflows を置き換えますか?

すべてのチームでではありません。Kubernetes に標準化し、各ステップを pod として動かしたいなら Argo Workflows が適切です。クラスタを動かさず通常のマシンでコマンドをオーケストレーションしたいなら Dagu が向いています。

Dagu は Kubernetes なしで動きますか?

はい。Dagu はサーバー、VM、ノート PC で動く自己完結した 1 バイナリです。Kubernetes クラスタ、外部 database、message broker のいずれも不要です。

Dagu でもコンテナを動かせますか?

はい。コンテナが必要なステップ向けに Docker executor があります。違いは、コンテナが唯一の実行単位ではなく、shell、HTTP、SSH、SQL、SubDAG のステップと並ぶ 1 つの選択肢である点です。

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

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

Dagu をインストール