دراسة حالة
لماذا يقول نظامك إن مهمة طويلة متوقفة وهي ما زالت تعمل
مرتين في أسبوع واحد أخبرت منصة فيديو فريقًا بأن إعلانًا قد توقف بينما كان ما زال قيد الإنشاء. كان الحل أن نسأل الخطوة التي تحتفظ بالمهمة قبل الحكم عليها بالضياع، بدلًا من أن يقرر ذلك ساعة.
أهم النقاط
- التحذير المبني على الوقت المنقضي وحده سيكون خاطئًا في أطول المهام وأكثرها انتظارًا في الصف.
- اسأل هل تتحقق الأداة من الخطوة التي تحتفظ بالمهمة قبل أن تحكم عليها بالضياع.
- إعادة التشغيل قد تضيف وقت الانتظار مرة أخرى، وقد يُرمى ناتج المحاولة الأولى المنتهية.
- الصف الممتلئ قد يبدو معطلًا، خصوصًا في الأيام المزدحمة.
- عندما تُصلح خطوة، اسأل هل تقرر الخطوات الأخرى التي تتعامل مع عمل طويل بالطريقة نفسها.
المهمة التي تُعلَّم على أنها متوقفة وهي ما زالت تعمل أسوأ من مهمة توقفت فعلًا، لأن الرد البديهي هو إعادة تشغيلها. مرتين في أسبوع واحد أخبرت منصة فيديو تابعة لأحد العملاء الفريق بأن إعلانًا قد توقف بينما كان ما زال قيد الإنشاء. وقد وُجد الخللان وأُصلحا بسرعة: أحدهما تُوبع في اليوم التالي لظهوره، والآخر في اليوم نفسه.
لماذا تكلف المهمة التي تُعلَّم متوقفة وهي ما زالت تعمل صاحب العمل
تُدفع تكلفة التحذير الخاطئ بالتوقف مرتين في وقت الانتظار. فالشخص الذي يدير المهمة يفعل ما هو معقول ويعيد تشغيلها، فينتظر العمل المحاولة الثانية بينما الأولى ما زالت تعمل. وفي يوم مزدحم تحجز إعادة التشغيل مكانًا في الصف، والمهمة التي تُغلق وهي ما زالت تعمل تحتفظ بذلك المكان دون أن تفعل شيئًا مفيدًا، فينتظر العمل الذي خلفها دورًا لن يفرغ. وبعد إنذارين خاطئين أو ثلاثة يتوقف الناس عن الثقة بالتحذيرات الحقيقية، وقد يبقى عطل حقيقي دون أن يراه أحد.
ما رآه الفريق: إنذاران خاطئان في أسبوع واحد
جاء التحذير الأول على إعلان طويل على غير المعتاد، يقارب عشرين دقيقة، وخطوته الأخيرة ترسم كل إطار في الفيديو النهائي. استمرت تلك الخطوة أكثر من ثلاث ساعات. وبعد ساعتين ونصف قالت المنصة إن الفيديو قد توقف عن التقدم. فأعاد الشخص الذي يديره تشغيل الإعلان. استغرقت المحاولة الثانية أكثر من ساعتين؛ أما الأولى فقد انتهت في النهاية، لكن فيديوها رُمي باعتباره محاولة قديمة. وصل الإعلان إلى الفريق بعد نحو ساعة ونصف مما كان سيكون عليه دون التحذير.
وبعد يومين جاء إنذار خاطئ من النوع نفسه عند خطوة مختلفة، هي الخطوة التي تُصنع فيها مقاطع مقدم البرنامج. انتظر إعلان هناك معظم يوم عمل قبل أن تغلقه المنصة باعتباره ضائعًا. وكانت مقاطع ذلك الإعلان ما زالت في الصف لتُصنع، لكن الآن لصالح لا أحد. وتأخر الإعلان الذي خلفه، لأن الصف ما زال يعدّ الإعلان المغلق قيد التشغيل. ولم يستطع الفريق إعادة تشغيل الإعلان المغلق بقية اليوم، لأن الخطوة ما زالت تدرجه على أنه في يدها.
ما وجده مهندسنا: ساعة تقرر بدلًا من العمل
جاء التحذير من الساعة، لا من الخطوة التي تقول إنها فقدت المهمة. كانت هناك قاعدة تنظر إلى الوقت المنقضي وحده: إذا لم يمسّ شيء الفيديو لمدة ساعتين ونصف، افترض أنه ضاع. وكانت هناك حماية من المفروض أن تُبقي المهمة الطويلة معلّمة على أنها حية ما دامت الخطوة التي ترسمها مشغولة. وقد وجد مهندسنا متى كانت تلك الحماية تعمل: فقط عندما تكون فيديوهات أخرى تنتظر في الصف خلفها. في ذلك اليوم لم يكن هناك شيء آخر ينتظر، فلم تعمل قط، وانطلقت قاعدة الساعة على مهمة كانت على وشك الانتهاء.
وكان للحالة الثانية الجذر نفسه. فقد حُسب الحد الزمني لخطوة مقدم البرنامج من المدة التي يستغرقها الإعلان عندما تكون لدى الخدمة التي تصنع المقاطع متسع. وفي ذلك الأسبوع استُنفدت طاقتها وانتظر كل مقطع دوره، فاستغرقت الخطوة أضعاف التقدير. قالت الساعة إنه ضاع؛ أما الخطوة نفسها فما زال الإعلان في يدها وأبقته هناك، ولهذا تصرف الصف كما لو أن الإعلان قيد التشغيل.
ما غيّرناه
جعلنا الخطوتين تبلغان عما تحتفظان به، وجعلنا المنصة تسأل قبل أن تتخلى عن إعلان. فخطوة الرسم الآن تقول، من لحظة أخذها فيديو حتى إعادتها الملف النهائي، هل الفيديو ينتظر دوره أم يُرسم، وإلى أي مدى وصل. وكل دقيقة تنظر المنصة في أي فيديو سكن نحو عشر دقائق وتسأل. فإن كان الفيديو محتفظًا به، مهما طال الوقت، عُلّم على أنه حي، فلا تقول شاشة الفريق إنه متوقف. وإن لم يحتفظ به شيء وكان ما زال ساكنًا بعد لحظة، عُلّم على أنه ضاع فورًا بسبب واضح، ويمكن إعادة تشغيله في الحال.
وفي خطوة مقدم البرنامج، حين يتجاوز وقت السكون حدّه، تسأل المنصة الخطوة هل الإعلان ما زال بين مهامها. وما دام كذلك فهو ينتظر في الصف، لا ضائع، ويبقى مفتوحًا، فلا تُصنع مقاطع لصالح لا أحد ولا يعدّ الصف مهمة مغلقة على أنها ما زالت تعمل. وحيث لا تستطيع خطوة أن تجيب، تبقى القاعدة القديمة سارية، فلا يبقى شيء دون شبكة أمان، وغياب قراءة عن مدى انشغال خطوة يظهر الآن على أنه غير معروف، لا على أنه خامل.
ما لدى صاحب العمل الآن
التغييران ساريان على منصة العميل. فلم يعد الفيديو الطويل يُعلَّم على أنه متوقف وهو ما زال يُرسم، والذي ضاع فعلًا يُبلَّغ عنه في غضون دقائق بدلًا من انتظار طويل. والإعلان الذي ينتظر مقاطع مقدم البرنامج في يوم مزدحم يبقى مفتوحًا حتى تُصنع تلك المقاطع، فلا يفقد الفريق الإعلان ولا مكانه في الصف ولا بقية اليوم بسبب إنذار خاطئ. ومن لحظة أخذ خطوة الرسم فيديو طويلًا، تُظهر شاشة الفريق أن الفيديو محتفظ به وهل ينتظر دوره أم يُرسم، فلم يعد سكون على الشاشة يبدو كتوقف.
ما يمكنك فحصه بنفسك
- عندما يقول تحذير إن مهمة قد توقفت، ابحث عن علامات أنها ما زالت تنتظر دورها: حالة في الصف، أو خطوة ما زالت تدرجها، أو تقدم تحرك حديثًا.
- اسأل من يعتني بالأداة على ماذا يستند التحذير: حد زمني ثابت، أم جواب مباشر من الخطوة التي تؤدي العمل.
- افحص هل الخطوة التي أخذت مهمة تخبر بقية النظام أنها تحتفظ بها، أم تسكت حتى تنتهي.
- انظر إلى مهمة أُغلقت باعتبارها ضائعة: هل مهامها المتبقية ما زالت في الصف، وهل المهمة التي خلفها متأخرة؟
- قارن تحذيرات التوقف في يوم مزدحم بيوم هادئ؛ فالصف الممتلئ قد يبدو كصف معطل.
ما تفعله بعد ذلك
إذا كان تحذير توقف قد أدى بالفعل إلى إعادة تشغيل، فاحفظ سجل المحاولتين قبل أن يمسحه أحد، لترى أيّهما انتهى ومتى. اسأل مطورك أو دعم الأداة هل يأتي التحذير من حد زمني وحده، وهل تُسأل الخطوة التي تؤدي العمل قبل الحكم على مهمتها بالضياع. ثم اسأل السؤال نفسه عن كل خطوة تتعامل مع عمل طويل. وتتبع التحذير حتى القاعدة التي تقف خلفه، وتغيير القاعدة لتسأل قبل أن تتخلى، هو نوع العمل الذي يؤديه مهندسونا للعملاء.
أسئلة شائعة
لماذا تقول أداة الفيديو إن مهمة متوقفة بينما هي ما زالت قيد المعالجة؟
غالبًا لأن البرنامج يحكم على السكون بدلًا من أن يسأل الخطوة التي تحتفظ بالمهمة. فخطوة رسم طويلة، أو خطوة تنتظر طاقة، قد لا تبلغ عن شيء لفترة، فيحكم عليها حد زمني بالضياع. وقد يكون العمل ما زال جاريًا بينما توقفت الشاشة عن التغير.
هل أعيد تشغيل المهمة بمجرد أن يقول برنامجي إنها توقفت؟
ليس في الحال. انظر أولًا هل المهمة في الصف، أم محتفظ بها، أم فشلت فعلًا. فبدء محاولة ثانية قد يضيف وقت الانتظار نفسه مرة أخرى، وقد تُرمى نتيجة المحاولة الأولى باعتبارها قديمة عندما تصل. أعد التشغيل عندما تعطي الأداة سببًا واضحًا على أن المهمة ضاعت.
لماذا تبدو مهام أكثر متوقفة في أكثر أيامي ازدحامًا؟
الأيام المزدحمة تملأ الصف، فتنتظر كل خطوة أطول مما تنتظر في يوم هادئ، والحد الزمني المضبوط على يوم هادئ ينطلق على مهام ما زالت تتحرك ببطء. والصف قد يبدو معطلًا وهو فقط ممتلئ.
على ماذا ينبغي أن يستند تحذير التوقف؟
جواب مباشر من الخطوة التي تحتفظ بالمهمة، لا حد زمني ثابت وحده. ينبغي أن تسأل الأداة هل الخطوة ما زالت تحتفظ بالمهمة قبل الحكم عليها بالضياع. وإن لم تستطع خطوة أن تجيب، فقاعدة بديلة معقولة، ما دامت تُعامل على أنها بديلة.
ماذا يحدث للمحاولة الأولى إذا أعدت تشغيل مهمة؟
يعتمد على الأداة. بعضها يترك المحاولة الأولى تعمل ويرمي ناتجها عندما تنتهي الثانية؛ وبعضها يلغيها في الحال. قبل أن تعيد التشغيل، اسأل ماذا يحدث للمحاولة الأولى ولأي عمل أنجزته بالفعل.