Dagu مقابل Windmill
Dagu مقابل Windmill: YAML تصريحي في مواجهة منصة سكربتات وتطبيقات.
كلاهما يعمل self-hosted وكلاهما سريع. يحوّل Windmill السكربتات إلى workflows وwebhooks وتطبيقات low-code ويستخدم PostgreSQL. أما Dagu فهو ملف ثنائي واحد يشغّل أوامرك الحالية عبر 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]ملف ثنائي واحد، من دون PostgreSQL
الـ workflows هي YAML تصريحي فوق أوامر موجودة
Executors لـ shell وDocker وHTTP وSSH وSQL وsub-workflows ووكلاء الذكاء الاصطناعي
يعمل محلياً أو عبر queue أو موزعاً
At a glance
Windmill مقابل Dagu باختصار
YAML تصريحي يستدعي أوامرك.
سكربتات بـ Python أو TypeScript أو Go أو Bash أو SQL مستضافة في المنصة.
ملف ثنائي واحد، حالة معتمدة على الملفات، بلا قاعدة بيانات.
خدمات Rust وworkers معتمدة على queue من PostgreSQL.
Orchestration بخطوات shell وDocker وHTTP وSSH وSQL ووكلاء الذكاء الاصطناعي.
Workflows إضافةً إلى أداة low-code لبناء التطبيقات والواجهات مع approval flows.
In depth
Where each tool fits
طريقتان لتعريف العمل
Windmill منصة code-first. تكتب سكربتات بـ Python أو TypeScript أو Go أو Bash أو SQL، فتضيف لكل منها webhook وواجهة UI مُولّدة. أما Dagu فيُبقي الـ workflow في YAML ويتعامل مع سكربتاتك وملفاتك الثنائية كخطوات.
- يخزّن Windmill السكربتات ويشغّلها داخل المنصة مع توليد نماذج إدخال تلقائياً.
- يعرّف Dagu الرسم البياني في YAML خاضع لإدارة النسخ ويستدعي الأوامر.
- كلاهما يوفر dependencies وretries وجدولة وسجل تشغيل.
ما تحتاجه لتشغيله
يحتاج Windmill إلى PostgreSQL للحالة ولقائمة المهام، والإعداد المعتاد يشغّل حاويات server وworker فوقها. أما Dagu فهو ملف ثنائي واحد يحفظ الحالة في ملفات، لذا لا توجد قاعدة بيانات للتهيئة أو النسخ الاحتياطي أو الترقية.
- يبدأ Dagu كعملية واحدة معتمدة على ملفات محلية.
- أضف queue وworkers لاحقاً من دون تغيير نموذج الـ workflow.
- يتوسع Windmill جيداً لكنه يفترض وجود PostgreSQL وإدارته.
متى تختار Windmill
يفعل Windmill أكثر من مجرد orchestration، وهذا الاتساع هو المقصد. إذا أردت مكاناً لاستضافة السكربتات كنقاط نهاية قابلة للمشاركة وبناء تطبيقات داخلية وواجهات حولها، فإن Windmill يغطي مجالاً لا يدخله Dagu.
- تريد أداة low-code لبناء التطبيقات والواجهات، لا مجرد مشغّل.
- تريد نماذج مُولّدة وخطوات approval والكثير من التكاملات المدمجة.
- يفضّل فريقك كتابة المنطق كسكربتات مُدارة بدلاً من استدعاء أوامر خارجية.
FAQ
Practical questions before adopting Dagu
هل يحل Dagu محل Windmill؟
ليس بالكامل. يحل Dagu محل جزء الـ orchestration: الجدولة وdependencies وretries وlogs وواجهة لمشاهدة التشغيل. لا يقدّم أداة Windmill لبناء تطبيقات low-code ولا الواجهات المُولّدة ولا كتالوج التكاملات الواسع. إذا كنت تريد فقط جدولة الأوامر ومراقبتها فإن Dagu هو الخيار الأخف.
هل يحتاج Dagu إلى PostgreSQL؟
لا. يحفظ Dagu الحالة في ملفات محلية ويعمل كملف ثنائي واحد، لذا لا توجد قاعدة بيانات للتثبيت أو الإدارة. يعتمد Windmill على PostgreSQL للحالة ولقائمة المهام.
هل يمكن لـ Dagu تشغيل سكربتات Python وTypeScript؟
نعم. يمكن لأي خطوة تشغيل أي أمر، لذا تعمل Python وTypeScript وBash أو ملف ثنائي مُترجَم. الفرق أن Dagu يستدعي السكربتات من القرص بدلاً من استضافتها وإدارتها كما يفعل Windmill.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.