Dagu مقابل Prefect

إذا أردت orchestration من دون كتابة Python، فانظر إلى Dagu.

إن Prefect هو framework بلغة Python لفرق البيانات التي تكتب flows لديها بالكود. أما Dagu فهو ملف ثنائي واحد يشغّل YAML تصريحياً يستدعي الأوامر التي لديك بالفعل، من دون database تُشغّلها. تنظر هذه الصفحة بأمانة إلى أين يناسب كل منهما.

Workflow يستدعي الأوامر من دون decorator
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]

الـ workflows هي YAML تصريحي وليست كود Python

ملف ثنائي واحد بحالة مخزّنة في ملفات

من دون database خارجية أو message broker

Executors لـ shell وDocker وHTTP وSSH وSQL وsub-workflows وخطوات وكيل الذكاء الاصطناعي

YAML تصريحي بدلاً من framework بلغة Python

يمثّل Prefect العمل كدوال Python ملفوفة بـ decorator وهما @flow و@task، لذا يعيش الـ workflow داخل الكود لديك. أما Dagu فيُبقي كل خطوة أمراً، ويلفّ حولها scheduling وretries وdependencies في YAML.

  • عرّف خطوات تشغّل shell وDocker وHTTP وSSH وSQL أو sub-workflows
  • أبقِ الـ workflow مفهوماً للمشغلين الذين لا يكتبون Python
  • ضع YAML في git إلى جانب السكربتات التي يستدعيها

ملف ثنائي واحد بحالة في ملفات

يشغّل إعداد Prefect الإنتاجي خادم Prefect server مدعوماً بـ database مثل Postgres، إضافة إلى workers التي تنفّذ الـ flows. أما Dagu فيأتي كملف ثنائي واحد ويحفظ سجل التشغيل والـ logs وحالة الطابور في نظام الملفات المحلي.

  • ابدأ بتنزيل واحد من دون تجهيز database
  • انسخ احتياطياً وحدّث عبر التعامل مع ملفات وملف ثنائي واحد
  • انمُ من التشغيل المحلي إلى workers بطابور أو موزّعة عند الحاجة

متى تختار Prefect بدلاً منه

يكون Prefect أفضل حين تنتمي workflows لديك إلى Python ويرتاح فريقك في تشغيل خدماته. بعض الاحتياجات تنطبق على Prefect بشكل أطبع منها على Dagu.

  • تريد DAGs ديناميكية يُحسب شكلها في Python أثناء التشغيل
  • تمرّر pipelines لديك كائنات Python بين المهام بدلاً من استدعاء الأوامر
  • تريد خياراً مُداراً، وهو ما يقدّمه Prefect عبر Prefect Cloud

Dagu مقابل Prefect باختصار

Dimension
Dagu
Typical alternative
الكتابة
YAML تصريحي يستدعي الأوامر.
دوال Python مع decorator وهما @flow و@task.
Runtime
ملف ثنائي واحد بحالة في ملفات.
خادم Prefect server مع database، مع workers منفصلة.
أفضل استخدام
أتمتة السكربتات والحاويات والعمليات مع runtime صغير ذاتي الاستضافة.
فرق بيانات محورها Python تريد flows ديناميكية وسحابة مُدارة اختيارية.

FAQ

Practical questions before adopting Dagu

هل يحل Dagu محل Prefect؟

ليس لكل فريق. إذا كانت workflows لديك بلغة Python وتعتمد على flows ديناميكية أو تمرير كائنات Python بين المهام، فإن Prefect أنسب. ويكون Dagu أنسب حين يجري العمل كأوامر أو containers أو service calls وتريد YAML من دون database.

هل يمكنني استخدام Dagu من دون كتابة أي Python؟

نعم. الـ workflows في Dagu هي YAML يستدعي الأوامر. يمكن لخطوة أن تشغّل سكربت Python موجوداً لديك، لكن طبقة الـ orchestration نفسها لا تحتاج إلى Python ولا إلى framework imports.

ما البنية التحتية التي يحتاجها Dagu مقارنة بـ Prefect؟

يحتاج Dagu إلى ملف ثنائي واحد ونظام ملفات، لأن الحالة مخزّنة في ملفات. أما النشر النموذجي لـ Prefect فيشغّل server مع database وworker واحداً أو أكثر. ولا توجد في Dagu سحابة مُدارة، لذا تستضيفه بنفسك.

Start with one workflow.

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

Install Dagu