Dagu vs Temporal

Dagu и Temporal решают разные задачи.

Temporal - это движок durable execution для stateful application workflows, написанных кодом. Dagu - один бинарь, который планирует и оркеструет команды, что у вас уже есть. Эта страница объясняет, где уместен каждый из них.

Плановый pipeline на чистом YAML
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: кратко

Dimension
Dagu
Typical alternative
Написание
Декларативный YAML, вызывающий команды.
Workflow кодом через SDK (Go, Java, TypeScript, Python).
Runtime
Один бинарь с состоянием в файлах.
Сервис на базе Cassandra, PostgreSQL или MySQL.
Лучше всего для
Плановых заданий, pipelines и автоматизации ops.
Устойчивых stateful workflows приложений и микросервисов.

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.

Install Dagu