معمارية Master + Sub
معماريةطبقة Master للتنسيق، وطبقات Sub للمهام الذرية. تغيير Sub لا يُؤثّر على Master.
النتيجة: تعديل بدون كسر.
خدمة 5.6 · بنية تحتية
معمارية صحيحة، طبقات رصد أخطاء، تتبّع حالات، تقارير تكلفة — منظومات تعمل 24/7 بلا مفاجآت.
TL;DR — نبني منظومات أتمتة إنتاجية بمعمارية Master + Sub، طبقات رصد أخطاء مستقلة، إعادة محاولة ذكية، تتبّع حالات في DB، وتقارير تكلفة per-run. عشرات المنظومات في الإنتاج عند عملاء فعليين.
| الجانب | Quick | إنتاجي (نحن) |
|---|---|---|
| التعقيد | منظومة واحدة تفعل كل شيء | معمارية Master + Sub |
| Error handling | try/catch في node | طبقة رصد أخطاء مستقلة |
| Retries | لا شيء | Exponential backoff + dead letter queue |
| State | في واي كرييشنز نفسها | State Machine في Postgres |
| Cost tracking | غير معروف | Per-run ledger + شهري |
| Testing | «يعمل عندي» | 3 سيناريوهات (سعيد/حافة/فشل) |
طبقة Master للتنسيق، وطبقات Sub للمهام الذرية. تغيير Sub لا يُؤثّر على Master.
النتيجة: تعديل بدون كسر.
عمليات طويلة لا تحجب — run_id للمراقبة، webhook للإخطار عند الانتهاء.
النتيجة: لا timeouts.
كل فشل في أي عملية يُرسَل لطبقة الرصد المستقلة — تنبيه + سجل + استرداد.
النتيجة: لا فشل صامت.
طبقة Master تنسّق، وطبقات Sub تُنفّذ. تغيير مهمّة ذرّية لا يكسر الباقي. اختبار مستقل لكل قطعة.
العمليات الطويلة (مثل تصدير تقرير كبير) لا تحجب. run_id يُتتبَّع، webhook عند الانتهاء.
طبقة خاصة تستقبل كل الأخطاء. يُصنّف (critical/warning/info)، يُرسِل تنبيه، ويُسجّل.
خطأ مؤقّت (rate limit، timeout)؟ إعادة بـ 1s → 2s → 4s → 8s... حتى 5 محاولات قبل الدخول للـ DLQ.
كل run له state في Postgres: pending/running/succeeded/failed. قابل للاستعلام، للإعادة، للتحليل.
كل خطوة تُسجّل تكلفتها (API calls، tokens، compute). تقرير شهري: أي عملية الأغلى؟ أي خطوة تحتاج تحسين؟
خريطة عالية: ما الـ Master؟ ما الـ Subs؟ أي الاتصالات بينها؟ على ورق قبل أي بناء.
JSON Schema بين كل Master و Sub. تغييرات مستقبلية لا تكسر التكامل.
بناء كل طبقة Sub مستقلاً مع اختبارات. Happy + Edge + Failure scenarios.
Master يستدعي Subs بالترتيب. منطق الـ decision + error handling.
طبقة منفصلة تستقبل أخطاء كل العمليات. تُصنّف ويوجّه التنبيه.
جدول runs في Postgres. كل استدعاء Master يُنشئ run_id ويُحدّث الحالة.
كل node يُسجّل تكلفته في جدول cost_ledger. لوحة شهرية مُحضَّرة.
notes في كل خطوة تشرح «لماذا». README للـ architecture. مهندس جديد يفهم بلا اجتماع.
| المقياس | قبل | بعد |
|---|---|---|
| Debug time عند الفشل | ساعات بحث | دقائق عبر Error logs |
| Cost visibility | مجهولة | per-run breakdown |
| Onboarding مهندس جديد | أيام + اجتماعات | يقرأ notes ويفهم |
| Re-run عند الفشل | يدوي + مخاطر تكرار | Idempotent + automated |
منصّة self-hosted = تحكّم كامل، بلا vendor lock-in، تكلفة منخفضة لحجم كبير. Make/Zapier رائعان لـ prototypes لكنهما يصبحان باهظين مع النموّ. Airflow ممتاز للـ data pipelines لكنه مُعقّد لـ business automation. الذي نعتمده = التوازن الأمثل.
كلا الخيارين. Self-hosted عندكم (Docker أو Kubernetes) لأقصى خصوصية. أو نستضيفه على بنية تحتية مخصّصة لكم. نُوصي بـ Self-hosted للأعمال الحسّاسة.
منظومات في الإنتاج حالياً. المعمارية تدعم المئات. المنصّة نفسها تدعم الآلاف مع scaling أفقي. لم نصطدم بحد تقني بعد.
كل المنظومات = JSON files. قابلة للتصدير والنسخ الاحتياطي كاملاً. الانتقال لمنصّة أخرى يتطلب إعادة بناء لكن المنطق موثّق. نحافظ على architecture documentation قابلة للنقل.
Self-hosted: $50-$200 VPS. API costs (Claude/OpenAI): تختلف حسب الحجم ($50-$1000 شهرياً). تكلفتنا كدعم مستمر: منفصلة عن infra. الأغلب: $300-$1500 شهرياً total.
Staging أولاً. اختبار كل منظومة. production update بعد أسبوع من staging stability. نُشرف على upgrades كخدمة مستمرة.
احجز جلسة مجانية (45 دقيقة). نخرج منها بتقدير واضح: هل الأتمتة تستحق الاستثمار، وكم ستوفر، وفي كم أسبوع.