castomFLOW
افتح castomFLOW

Runs تقدر تثق فيها

محدش يلاحظ الأتمتة غير لما تبعت حاجة مرتين

وساعتها الكل يلاحظ. الآليات الأربعة في الصفحة دي موجودة لأن أعطال النوع ده من البرامج دايمًا نفس الأعطال الأربعة، وكلها ممكن تتجنب بالتصميم مش بالعناية.

جرّب قبل ما تنشر

مرّر سجل حقيقي في workflow مطفي، واقرأ بالظبط اللي كان هيحصل: المسار المتخذ، كل قيمة في كل خطوة، صياغة كل رسالة، والطلب اللي كان هيروح لكل نظام خارجي.

مفيش حاجة بتخرج من المبنى. مفيش إيميل بيتبعت، ولا فاتورة بتتعمل، ولا محاولة خصم، ولا سطر بيتكتب. النداءات الخارجية بتتسجل كنوايا، مع الـ payload اللي كان هيتبعت، عشان تشوف الـ mapping صح ولا لأ قبل ما تبقى مشكلة حد.

المحاكاة هي طريقتك للإجابة على السؤال اللي بيمنع الناس من تشغيل الأتمتة: هي هتعمل إيه فعلًا؟

محاكاة · أوردر 88,214مافيش حاجة اتبعتت
  • 1التحقق من العنوانمتطابق. كان هيكتب 6 حقول.
  • ?شرطأوردر أكتر من 1000 جنيه؟ لأ — 289,00 جنيه. اتاخد الطريق القصير.
  • 3فاتورةهيبعت POST لنظام الفواتير. الـ payload معروض بالكامل.
  • !اتمسك هنانسبة الـ VAT اتجابت من الحقل الغلط. اتلقطت في محاكاة بدل ما توصل لصندوق بريد المحاسب.

المُرسَل: ولا حاجةالمحصَّل: ولا حاجة

كل تشغيلة بتمشي على النسخة اللي دخلت عليها

نشر تغيير في الـ workflow مش بيلمس التشغيلات اللي جواه بالفعل. كل تشغيلة مثبّتة على النسخة اللي بدأت عليها وبتكمّل على نفس النسخة، مهام أخدت وقتها ومهام غيّرت في الوقت اللي بينه.

يعني تقدر تعيد هيكلة الـ workflow وعشرة آلاف شخص في نصه، وكل واحد فيهم يكمّل المسار اللي اتوعده بيه. البديل — التصميم اللي بيتحطّط فيه المسار كله من أول ما تدخل — هو اللي بيخلي تعديل أتمتة شغّالة حاجة مخيفة في أغلب الأدوات. هنا الموضوع عادي جدًا.

التشغيلات الجديدة بتاخد النسخة الجديدة من لحظة النشر. النسخة اللي التشغيلة عليها مكتوبة على التشغيلة نفسها، فسؤال عن السلوك في مارس ليه إجابة في سبتمبر.

التعديل والنظام شغّالv4 → v5
  • 1قبل2,918 تشغيلة شغّالة، كلها على v4. بعضها في انتظار يومين.
  • 2انشر v5خطوتين اتغيّر ترتيبهم، ورسالة واحدة اتكتبت من جديد.
  • 3بعدالـ 2,918 دول بيكمّلوا على v4. وكل حاجة بتبدأ من 11:40 بتشتغل على v5.
  • §ولا حداستلم نص workflow ونص workflow تاني.

النسخة مسجّلة على كل تشغيلةالنسخ القديمة محفوظة

إعادة محاولة مش بتتبعت مرتين

الخطوة دالة نقية من مدخلاتها، وآثارها بتتحفظ مع تقدّم التشغيلة نفسها للخطوة اللي بعدها في حركة واحدة. مفيش فترة ممكن فيها الرسالة تكون خرجت والتشغيلة مش عارفة.

دي الحتة كلها، وهي خاصية في التصميم نفسه مش وعد. عامل اتعمل في نص الخطوة — deploy أو crash أو جهاز اختفى — بيسيب التشغيلة مكانها بالظبط. عامل تاني بيلقطها ويعيد الخطوة. لأن الأثر والتقدّم بيتحفظوا كحاجة واحدة، يا الاتنين حصلوا يا ولا واحد فيهم.

الطلبات الخارجية للأنظمة اللي بتدعم idempotency keys بتشيل مفتاح، مشتق من التشغيلة والخطوة، عشان الطرف التاني يعرف إنها تكرار هو كمان.

العامل اتعمل في نص الإرسالاترجّع
  • 1الخطوة 5 بتبدأابعت إشعار الشحن.
  • ✕العامل ماتDeploy. مفيش حاجة اتحفظت.
  • 2اتلقطتعامل تاني لقى التشغيلة لسه على الخطوة 5.
  • ✓اتبعتت مرة واحدةالعميل استلم إيميل واحد، مش اتنين.

الآثار بتتحفظ مع التقدّممفتاح idempotency لكل تشغيلة وخطوة

سجل مكتوب عشان حد يقراه

كل تشغيلة، كل خطوة، الفرع اللي اتاخد والقيمة اللي قررت بيه. التوقيتات لكل خطوة. الطلب والرد لكل نداء خارجي، والبيانات السرية متشال منها. النسخة اللي التشغيلة كانت عليها. التشغيلة مستنية إمتى ولحد إمتى.

لما حد يسأل حصل إيه للأوردر اللي اتعمل يوم 14، فيه إجابة، ووصولها بيخد دقيقة مش يوم كامل بتطابق فيه سجلات تلات أنظمة.

التشغيلات اللي بتفشل بتتجمع في مكان واحد مع السبب متجمع، فـ"إحدى وأربعين فشلة في الليل" بتطلع "مورّد واحد رجّع 503 لتسع دقايق" بدل إحدى وأربعين تحقيق منفصل.

في الليل، متجمع41 فشلة
  • 1سبب واحدواجهة المورّد رجّعت 503 من 02:41 لـ 02:50.
  • 2اللي حصلالـ 41 كلهم اتعملتلهم إعادة محاولة؛ 39 نجحوا من المحاولة التانية.
  • 3الباقياتنين ووقفوا ومستنيين حد يبص لهم. الاتنين موجودين في قايمة مع الصف اللي فشل.
  • §مش إحدى وأربعينتحقيق. واحد بس، وقرار على سجلين.

بيانات الدخول متغطيةالإصدار مسجّل

اللي مش بنأكد عليه

مش بننشر رقم توفر (uptime) على صفحة تسويقية، لأن رقم من غير فترة قياس وتعريف لمعنى "شغال" ده مجرد ديكور. لو محتاجه تعاقديًا، اسأل وهنتكلم في اللي نقدر فعلًا نلتزم بيه.

وكمان مش نقدر نخلي واجهة حد تاني تبقى موثوقة. لو المزوّد واقف، أي سير عمل معتمد عليه هيستنى ويعيد المحاولة وفي الآخر هيقف بسبب واضح. اللي نقدر نوعد بيه إن الفشل هيبان، وإنه مش هيبوظ أي حاجة، وإن استكمال الشغل مش هيبعت الرسالة تاني مرة.

عن الانتظار: تشغيل مستني يومين ده wake_at مسجّل على التشغيل نفسه، مش مهمة قاعدة في طابور. عشان كده سير العمل يقدر يمسك مية ألف تشغيل في انتظار تلات أسابيع من غير ما ده يكلف أي حاجة، وعدد التشغيلات اللي مستنية دلوقتي مش حاجة لازم تفكر فيها.

التشغيل اللي عمرك ما تفكر فيه هو اللي نجح.