Dagu vs Temporal
Dagu и Temporal решают разные задачи.
Temporal - это движок durable execution для stateful application workflows, написанных кодом. Dagu - один бинарь, который планирует и оркеструет команды, что у вас уже есть. Эта страница объясняет, где уместен каждый из них.
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]Один самодостаточный бинарь, без database и message broker
Workflows - это декларативный YAML, вызывающий готовые команды
Executors для shell, Docker, HTTP, SSH, SQL, sub-workflows и AI-агентов
Работает локально, через очередь или распределённо по workers
Для чего создан каждый инструмент
Temporal поддерживает жизнь долгой логики приложения сквозь сбои и перезапуски. Вы пишете workflows кодом через SDK, а сервис replay-ит event history, поэтому worker продолжает с места остановки. Dagu планирует задания и связывает команды в граф. Он отслеживает запуски, retries, logs и историю, не требуя переписывать задачи в код внутри framework.
- Temporal нацелен на распределённые и микросервисные workflows, которые должны переживать сбои.
- Dagu нацелен на cron-задания, батч-pipelines и автоматизацию ops из команд.
- Шаг в Dagu может запустить скрипт, контейнер, HTTP-вызов или другой workflow.
Что вы эксплуатируете и как пишете
Temporal требует работающий сервис на базе Cassandra, PostgreSQL или MySQL и обычно разворачивается через Helm в Kubernetes либо используется как Temporal Cloud. Workflows живут в коде на Go, Java, TypeScript или Python. Dagu - это один бинарь, хранящий состояние в файлах на диске. Workflows - это YAML, который читается в diff и коммитится рядом с оркеструемым кодом.
- Для запуска Dagu не нужны database, broker или кластер.
- Шаги YAML делают shell out к уже имеющимся инструментам, а не вызовы SDK.
- Можно начать на ноутбуке и добавить workers позже, когда одного хоста мало.
Когда выбрать Temporal
Если ваша задача - durable execution, то правильный инструмент Temporal, и Dagu его не заменяет. Workflows, которые держат состояние часами или днями, ждут внешних signals, ставят timers сквозь долгоживущие процессы и должны детерминированно replay-иться после сбоя, - это именно то, для чего создан Temporal. В Dagu нет аналога такой модели программирования.
- Нужны заданные кодом workflows, которые переживают сбой процесса и продолжают с середины выполнения.
- Вы полагаетесь на signals, устойчивые timers или child workflows внутри логики приложения.
- Команде нужен SDK на Go, Java, TypeScript или Python, а не декларативный YAML.
Dagu vs Temporal: кратко
FAQ
Practical questions before adopting Dagu
Заменяет ли Dagu Temporal?
В большинстве случаев нет. Temporal - это движок durable execution для stateful workflows, написанных кодом, а Dagu такой модели не даёт. Dagu заменяет Temporal, только если вы использовали его для обычных плановых заданий или command pipelines, где более лёгкая настройка уместнее.
Может ли Dagu выполнять долгие workflows?
Dagu может выполнять долгие задачи и оркестровать многошаговые pipelines, но он не сохраняет заданное кодом состояние workflow сквозь сбой процесса и не replay-ит event history. Если шаг должен встать на паузу на дни и детерминированно продолжиться после сбоя, правильный выбор - Temporal.
Почему выбрать Dagu вместо Temporal для плановых заданий?
Для cron-заданий и pipelines из готовых команд Dagu не нужны database, broker или SDK. Вы ставите один бинарь, пишете YAML и получаете планирование, retries, logs, историю и Web UI, что проще в эксплуатации, чем сервис Temporal.
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.