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.
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
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.