خطوات الاستخدام
الخطوة 1: فهم مكونات التكلفة في AWS Step Functions. تعتمد تكلفة Step Functions على عدد مرات التنفيذ (Executions) وعدد الحالات (States) المنفذة في كل تنفيذ. كل تنفيذ يمر عبر سلسلة من الحالات (مثل: Task، Choice، Parallel) وكل حالة تستهلك 'transition' (انتقال). الحاسبة تأخذ ثلاثة مدخلات: عدد عمليات التنفيذ (Executions)، متوسط عدد الحالات لكل تنفيذ (AvgStates)، وعدد الانتقالات الإجمالي (Transitions) – والذي غالباً ما يساوي عدد الحالات مضروباً في عدد عمليات التنفيذ. لكن في بعض الحالات قد تختلف الانتقالات إذا كنت تستخدم Parallel أو Map الذي يحتوي على فروع متعددة. تأكد من إدخال العدد الصحيح للانتقالات للحصول على تقدير دقيق.
الخطوة 2: فهم نموذج تسعير AWS Step Functions. تقدم AWS نموذجين: قياسي (Standard) ومتقدم (Express). التسعير يعتمد على الانتقالات (Transitions) ولكل مليون انتقال سعر محدد. بالنسبة للحاسبة الحالية، نفترض استخدام النموذج القياسي (Standard Workflows) حيث تدفع لكل انتقال (حالة انتقال بين الحالات). السعر التقريبي هو 0.000025 دولار لكل انتقال (أو بشكل أكثر دقة: 0.025 دولار لكل 1000 انتقال). ملاحظة: هناك أيضًا رسوم على مدد التنفيذ (Duration) بالثواني لكننا لا نأخذها بالاعتبار في هذه الحاسبة لتوفير تقدير مبني على الانتقالات فقط.
الخطوة 3: حساب إجمالي الانتقالات. إجمالي الانتقالات = عدد عمليات التنفيذ × متوسط عدد الحالات لكل تنفيذ. لكن في الحاسبة نقبل إدخال الانتقالات مباشرة (Transitions) لتكون مرنة. يمكنك حساب ذلك بنفسك: إذا كان لديك 1000 تنفيذ ومتوسط 10 حالات لكل تنفيذ، فإن إجمالي الانتقالات = 1000 × 10 = 10,000 انتقال.
الخطوة 4: حساب التكلفة الشهرية. التكلفة = إجمالي الانتقالات × سعر كل انتقال. السعر لكل انتقال = 0.000025 دولار (أو 25 مايكرو دولار). إذا كان عدد الانتقالات 10,000، فالتكلفة = 10,000 × 0.000025 = 0.25 دولار. لاحظ أن AWS تقوم بتقريب المبالغ الصغيرة أو تطبيق حد أدنى (أقل فاتورة). هذا مجرد تقدير.
أمثلة محلولة
تطبيقات عملية على تكلفة Step Function بخطوات الحل كاملة.
الحل
الحل: أولاً، نحدد سعر الانتقال الواحد. وفقاً لتسعير AWS القياسي (Standard Workflows)، سعر كل مليون انتقال هو 25 دولاراً (أو 0.000025 دولار لكل انتقال). إذن التكلفة = 25,000 × 0.000025 = 0.625 دولار شهرياً. لكن انتبه: قد تكون هناك رسوم إضافية على مدد التنفيذ إذا تجاوزت الدقيقة. في هذا المثال، مدد التنفيذ قصيرة (أقل من دقيقة) لذا التكلفة تقتصر على الانتقالات. لاحظ أيضاً أن AWS تقدم 4,000 انتقال شهرياً مجاناً ضمن الطبقة المجانية (Free Tier) لمدة 12 شهراً. لذا قد تكون التكلفة أقل أو معدومة إذا كنت ضمن الحد المجاني.
الحل
الحل: احسب الانتقالات بعناية. الحالات الخطية: 4 حالات تنتج 4 انتقالات. حالة Parallel: عند الدخول إلى Parallel تنتقل من الحالة السابقة إليها (انتقال واحد). ثم لكل فرع: داخلياً تنتقل الخطوات: من بداية الفرع إلى حالات الفرع (تعداد الانتقالات يساوي عدد الحالات في كل فرع، لكن لا ننسى القفزة من Parallel إلى أول حالة في الفرع – هنا تحتسب كحالة انتقال). بشكل أكثر دقة: لكل فرع، عدد الانتقالات = عدد حالات الفرع. إذن الفرع الأول: 3 انتقالات، الفرع الثاني: 3 انتقالات. عند الخروج من Parallel هناك انتقال من Parallel إلى الحالة التالية (إن وجدت) أو إلى النهاية. هنا نفترض أن بعد Parallel لا توجد حالة أخرى، لذا لا يُحتسب انتقال خروج لأن النهاية ليست حالة. لكن في نموذج التسعير، تنفيذ Parallel كحالة واحدة، وتحتسب الانتقالات بين الحالات. لكن داخل الـ Parallel، كل فرع هو سلسلة من الحالات، وتحتسب الانتقالات بين هذه الحالات. إجمالي انتقالات الـ Parallel: 1 (دخول إلى Parallel) + 3 + 3 (انتقالات الأفرع) = 7 انتقالات (الخروج من Parallel إلى لا شيء لا يُحتسب لأنه انتهاء). ثم حالة Map: تعالج 10 سجلات. Map هي حالة واحدة، لكن لكل سجل يتم تنفيذ حالتين. لذا داخل Map، لكل سجل هناك انتقالين (بين الحالتين) وانتقال من بداية السجل إلى الحالة الأولى (تحتسب كحالة؟). في الواقع، Map تحتوي على Iterator، ويعتبر كل سجل عملية مستقلة من حيث الانتقالات. وفقاً لوثائق AWS، Map يحسب عدد الانتقالات بناءً على عدد مرات التنفيذ للحالات الداخلية مضروباً في عدد مرات التكرار. لذا إذا كانت Map تحتوي على حالتين، وتم تشغيلها 10 مرات، فإن الانتقالات الناتجة من Map = 10 × (عدد انتقالات داخل Map). عدد انتقالات داخل Map لكل سجل: لدخول الحالة الأولى (1 انتقال)، ثم بين الحالتين (1 انتقال)، وخروج (1 انتقال إذا كان هناك خروج إلى حالة خارج Map – لكن هنا Map هي آخر حالة). لنفترض أنه لا يوجد خروج. إذاً لكل سجل: 2 انتقالات (دخول الحالة الأولى وثم بين الحالتين). إجمالي انتقالات Map = 10 × 2 = 20 انتقال. بالإضافة إلى انتقال الدخول إلى Map (1 انتقال) من الحالة السابقة. إجمالي انتقالات Map = 1 (دخول) + 20 (داخل) = 21 انتقال. إجمالي انتقالات السير عمل: 4 (خطية) + 7 (Parallel) + 21 (Map) = 32 انتقال. لعدد 1000 سير عمل، إجمالي الانتقالات = 1000 × 32 = 32,000 انتقال. التكلفة = 32,000 × 0.000025 = 0.8 دولار شهرياً. هذا مثال واقعي يوضح تعقيد حساب الانتقالات في السيناريوهات المتقدمة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة تكلفة Step Function.
مرجع — 5,000 تنفيذ بخمسة انتقالات
- عدد التنفيذات
- 5,000
- متوسط الحالات
- 5
- الانتقالات
- 5
مرجع — عبء ضخم بملايين التنفيذات
- عدد التنفيذات
- 1,000,000
- متوسط الحالات
- 10
- الانتقالات
- 20
مرجع — تنفيذات قليلة
- عدد التنفيذات
- 200
- متوسط الحالات
- 5
- الانتقالات
- 10
قيم مُدخَلة قياسية
- عدد التنفيذات
- 10
- متوسط الحالات
- 30
- الانتقالات
- 50
قيم مُدخَلة مرتفعة
- عدد التنفيذات
- 100
- متوسط الحالات
- 70
- الانتقالات
- 85
قيم مُدخَلة منخفضة
- عدد التنفيذات
- 2
- متوسط الحالات
- 5
- الانتقالات
- 10