Dagu vs Temporal

Dagu e Temporal resolvem problemas diferentes.

O Temporal é um motor de durable execution para workflows de aplicação com estado escritos em código. O Dagu é um único binário que agenda e orquestra os comandos que você já executa. Esta página explica onde cada um se encaixa.

Um pipeline agendado em YAML simples
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]

Um binário autocontido, sem database nem message broker

Workflows são YAML declarativo que chama comandos existentes

Executors para shell, Docker, HTTP, SSH, SQL, sub-workflows e agentes de IA

Roda local, por fila ou distribuído entre workers

Para que serve cada ferramenta

O Temporal mantém viva uma lógica de aplicação longa através de falhas e reinícios. Você escreve workflows em código com um SDK, e o serviço faz replay do event history, então um worker retoma de onde parou. O Dagu agenda jobs e liga comandos em um grafo. Ele acompanha execuções, retries, logs e histórico sem exigir que você reescreva tarefas como código dentro de um framework.

  • O Temporal mira workflows distribuídos e de microsserviços que precisam sobreviver a falhas.
  • O Dagu mira jobs cron, pipelines em lote e automação de ops feita a partir de comandos.
  • Um passo no Dagu pode rodar um script, um contêiner, uma chamada HTTP ou outro workflow.

O que você opera e como escreve

O Temporal exige um serviço em execução apoiado em Cassandra, PostgreSQL ou MySQL, geralmente implantado com Helm no Kubernetes ou usado via Temporal Cloud. Os workflows vivem em código Go, Java, TypeScript ou Python. O Dagu é um binário que guarda o estado em arquivos no disco. Os workflows são YAML legível em um diff e committado ao lado do código que orquestra.

  • Nenhum database, broker ou cluster é exigido para rodar o Dagu.
  • Os passos YAML fazem shell out para ferramentas que você já tem, em vez de chamadas de SDK.
  • Você pode começar em um notebook e adicionar workers depois, quando um host não bastar.

Quando escolher o Temporal

Se o seu problema é durable execution, o Temporal é a ferramenta certa e o Dagu não o substitui. Workflows que guardam estado por horas ou dias, esperam por signals externos, definem timers através de processos de vida longa e precisam fazer replay de forma determinística após uma falha são exatamente para o que o Temporal foi feito. O Dagu não tem equivalente a esse modelo de programação.

  • Você precisa de workflows definidos em código que sobrevivem ao crash do processo e retomam no meio da execução.
  • Você depende de signals, timers duráveis ou child workflows dentro da lógica da aplicação.
  • Sua equipe quer um SDK em Go, Java, TypeScript ou Python em vez de YAML declarativo.

Dagu vs Temporal em resumo

Dimension
Dagu
Typical alternative
Escrita
YAML declarativo que chama comandos.
Workflow em código com um SDK (Go, Java, TypeScript, Python).
Runtime
Binário único com estado em arquivos.
Um serviço apoiado em Cassandra, PostgreSQL ou MySQL.
Melhor para
Jobs agendados, pipelines e automação de ops.
Workflows de aplicação e microsserviços duráveis e com estado.

FAQ

Practical questions before adopting Dagu

O Dagu substitui o Temporal?

Na maioria dos casos, não. O Temporal é um motor de durable execution para workflows com estado escritos em código, e o Dagu não oferece esse modelo. O Dagu substitui o Temporal só se você o usava para jobs agendados simples ou pipelines de comandos, onde uma instalação mais leve se encaixa melhor.

O Dagu consegue rodar workflows longos?

O Dagu consegue rodar tarefas longas e orquestrar pipelines de vários passos, mas não mantém o estado de um workflow definido em código através do crash de um processo nem faz replay do event history. Se um passo precisa pausar por dias e retomar de forma determinística após uma falha, o Temporal é a escolha certa.

Por que escolher o Dagu em vez do Temporal para jobs agendados?

Para jobs cron e pipelines feitos a partir de comandos existentes, o Dagu não precisa de database, broker nem SDK. Você instala um binário, escreve YAML e obtém agendamento, retries, logs, histórico e uma Web UI, o que é mais leve de operar do que um serviço Temporal.

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.

Install Dagu