أداة فحص الروابط الخلفية عطلت إصدارنا: تحليل افتراضي للحدث
فريق مختلق، حادث مختلق، وآليات حقيقية. نروي القصة بالترتيب الذي يكتبه مهندس المناوبة.
فريق أبحاث Contentin ·
هذا مثال
الفريق والمنتج والتوقيتات المذكورة أدناه من نسج الخيال لتوضيح كيفية حدوث الفشل. لا يُوصف أي شركة حقيقية أو عميل أو قياس.
تسلسل الحادث
1
09:10، تذهب صفحة الإطلاق إلى نظام CMS
يدير فريق منتج مكون من ستة أشخاص موقع تسويق على نظام إدارة محتوى غير مركزي (headless CMS) وبناء ثابت. يعد محرر إعلان شراكة يربط بنطاق شريك سُجل قبل أسبوع.
2
09:14، يضغط المحرر على "نشر"
استدعاء الويب (webhook) للنشر يطلق دالة. تقوم الدالة بتشغيل استدعاء لفحص الروابط الخلفية ضد نطاق الشريك، ومبرمجة لإيقاف الإصدار عند أي إجابة غير ناجحة.
3
09:14، لم يبدأ البناء أبداً
يفشل أمران في آن واحد. النطاق جديد تماماً، لذا قد لا تعرفه قاعدة البيانات لدينا بعد. وبشكل منفصل، كان الرصيد المدفوع مسبقاً على مفتاح الفريق فارغاً، لذا عادت الاستدعاءات المدفوعة التالية باستجابة HTTP 402.
4
09:40، يكتشف الفريق الأمر
يبلغ المحرر عن خطأ غامض. يقرأ المهندس سجل الدالة، يرى استجابة 402 والنتيجة الفارغة، ويقضي عشرين دقيقة في تحديد أي من السببين تسبب في الإيقاف.
5
10:05، يتم نشر الإطلاق يدوياً
يتجاوز شخص ما الخطاف بنشر يدوي. يتأخر الإطلاق 55 دقيقة، ويترك التجاوز دون سجل يوضح الفحوصات التي تم تخطيها.
ما فحصه الفريق قبل الإطلاق
قليل جداً، كما اتضح. قائمة الاختبار احتوت فقط على نطاقات معروفة، ولهذا بقي الفجوة مخفية حتى ظهر رابط شريك. الاختبار على موقع مشهور يثبت أن الأنابيب تعمل، ولا يخبرنا شيئاً عن نطاق لم يره الفهرس بعد.
القوائم الأفضل للاختبار تحتوي على ثلاثة أنواع من النطاقات: واحد راسخ، واحد متخصص صغير، ونطاق سُجل مؤخراً. شغّل جميعها عبر الخطاف قبل أن يثق بها أحد.
ما هي النطاقات التي غطتها الاختبارات؟
فقط السهلة. كان لكل نطاق في القائمة سنوات من التاريخ خلفه، لذا عادت كل الإجابات كاملة، ولم يره أحد ما تفعله الإجابة الفارغة بعملية النشر.
أضف مجالاً واحداً جديداً حقاً، واقرأ نتيجته يدوياً. إذا أشارت الملاحظة إلى "سيء" حيث ينبغي أن تكون "مجهول"، فيجب إعادة صياغة القاعدة قبل الإطلاق.
ماذا أغفلت تجربة البيئة التجريبية؟
استخدمت تجربة البيئة التجريبية مفتاحاً ذو رصيد صحي، لذا لم تُنفَّذ مسار الرصيد الفارغ قط. لم يكتب أحد اختباراً يستنفذ الرصيد عن عمد.
حافظ على اختبار هذا المسار. قم بإجبار استجابة 402 مرة كل ربع سنة، واقرأ ما يراه المحرر بعد ذلك، لأن مسار الفشل الذي لا يشغله أحد هو مسار لا يمكن الوثوق به.
سبب الحدوث
عامل البوابة كل نتيجة غير ناجحة كحكم نهائي. كان هذا هو السبب الجذري. مشكلة الرصيد ومجال مجهول هما حقيقتان تتعلقان بالأدوات والفهرس، ولا تقولان شيئاً عن الصفحة.
يتم إعادة بناء الرسم البياني لدينا مرة واحدة تقريباً كل شهر. يمكن أن يبدو المجال المسجل بعد آخر تحديث فارغاً، والشريك الجديد هو الحالة الطبيعية لصفحة الإطلاق. لم يتحقق أحد. اختبر الفريق الخطاف فقط مع مجالات قديمة ومعروفة جيداً مثل nytimes.com.
كان الخطأ الثاني هو الصمت. سجلت الدالة الخطأ لكنها لم ترسل تنبيهاً، ورأى المحرر رسالة فشل عامة دون أي تلميح إلى نفاد الرصيد.
لم يكن التكلفة هي المشكلة. بتكلفة 2 رصيد لكل مكالمة، بلغت تكلفة فحوصات الشهر الكاملة لهذا الموقع المصطنع حوالي $0.60، وهو نفس الرقم الموجود في صف الـ 3000 منشور في جدول التكلفة. كانت البوابة رخيصة ومع ذلك كلفتهم ساعة عمل في 2026.
تستحق استجابة 402 سطرًا خاصاً بها. رصيد المدفوع مسبقاً هو حالة يمكن مراقبتها، لذا كان من الممكن أن ينبهر تنبيه بسيط عند 10000 رصيد، وهو ما يعادل $1، قبل أيام.
بنود العمل التي كتبها الفريق
الملاك هم أدوار، وليس أشخاصاً. جميع البنود جزء من المثال.
التغيير
المالك
السبب
عامل استجابة 402 كتخطٍ مع تنبيه لقناة المنصة
المنصة
الرصيد حالة فواتير، وليس حالة صفحة
عامل النتيجة الفارغة للمجال الجديد على أنها مجهولة، وليست سيئة
المنصة
يتأخر الفهرش بشهر تقريباً
أظهر المحرر السبب بكلمات واضحة
أدوات التحرير
20 دقيقة ضائعة في قراءة السجلات
تسجيل الفحوصات التي تم تخطيها في السجل
المنصة
نشر يدوي لم يترك أثراً
اختبار الخطاف مع نطاق مسجل هذا الأسبوع
ضمان الجودة
النطاقات القديمة تخفي الفجوة
تمرين لإطلاق الأسبوع
قم بتشغيل هذه قبل الإطلاق التالي، وليس بعد الفشل التالي.
1
اختر نطاقاً لم يفحصه أحد
اختر نطاقاً مسجلاً مؤخراً واطلب إجراء نظرة عامة مجانية عليه. تأكد من تسجيل الإجابة الرقيقة على أنها غير معروفة بدلاً من كتلة.
2
استنزاف رصيد اختبار
استخدم مفتاح اختبار برصيد صغير ودعه ينفد عمداً. راقب وصول 402، إشعار التنبيه، واستمر النشر إلى البناء.
3
اقرأ رسالة المحرر بصوت عالٍ
اطلب من زميل لم ير الخطاف أن يقرأ نص الخطأ. إذا لم يتمكن من القول ماذا يجب أن يفعل بعد ذلك، أعد كتابة الرسالة قبل الإطلاق.
4
اكتب التخطي في السجل
تأكد من أن الفحص الذي تم تخطيه يترك ملاحظة مؤرخة في السجل، مع السبب. ثم لا يترك النشر اليدوي فجوة لا يمكن لأحد تفسيرها.
كيف كُتب الإصلاح
قسم الفريق فشلًا عامًا واحدًا إلى ثلاثة، لأن كل إجابة لها مالك مختلف. 401 مشكلة مفتاح، 402 حالة فواتير، والنتيجة الفارغة لنطاق جديد هي ببساطة غير معروفة. يحصل كل منها على فرع خاص ورسالة خاصة. هذا هو التغيير بأكمله.
لم يكن على أحد قراءة تتبع المكدس لمعرفة ما حدث. يحدد التنبيه الحالة، ويرى المحرر جملة تقول ماذا يجب أن يفعل بعد ذلك.
لماذا يتم ضبط إنذار الرصيد أعلى بكثير من الصفر؟
عشرة آلاف رصيد تساوي $1 بالسعر المنشور، مبلغ صغير لا يزال يعطي تحذيراً كافياً عندما يصل مبكراً. اضبط الإنذار حيث سيراه شخص، وليس في سجل لا يفتحه أحد يوم الجمعة.
فحص يفشل بصوت عالٍ مرة واحدة في اليوم أفضل من فحص صامت يفشل أثناء الإطلاق.
اتفق على الرقم مع الفريق، واكتبه في نفس المكان الخاص بقاعدة تدوير المفاتيح، حتى يتم مراجعة الاثنين معاً.
هل يجب أن يُحسب النطاق الجديد كفشل؟
لا. النطاق الذي لم يره الفهرس بعد هو حقيقة حول الفهرس، وليس حول الصفحة. احفظه على أنه غير معروف مع التاريخ، واسمح للمحرر بالقرار ما إذا كان سيستمر في انتظار التحديث التالي.
تنطبق نفس القاعدة على أي إجابة رقيقة. تعامل معها على أنها بيانات مفقودة، وليس كحكم على الشريك.
سجل الإجابات غير المعروفة في قائمتها الخاصة، حتى يكون نمطها مرئياً في المراجعة التالية بدلاً من الدفن في السجل العام.
ما يجب نسخه
فشل مفتوح على بيانات الرابط، فشل صاخب على التنبيه
لا يجب أن يكون فحص الرابط هو الشيء الوحيد الذي يقف بين المحرر والإطلاق. اسمح للصفحة بالمرور، وسجل الدخول، واجعل الفشل مستحيلاً أن يُغفل من قبل الشخص المسؤول عن المفتاح.
افصل بين 401 و402 والنتيجة الفارغة في الكود
احتفظ بإنذار الرصيد أعلى بكثير من الصفر (انظر جدول التكلفة)
أعد تمثيل الفشل على بيئة الاختبار قبل يوم الإطلاق
الأسئلة التي طرحها الفريق لاحقاً
أثارت اجتماع المراجعة نفس المجموعة الصغيرة من الأسئلة في كل إصدار من هذا القصة. إليك كيف أجاب الفريق المبتكر عليها، ولماذا تختلف هذه الإجابات من منظمة إلى أخرى.
لا توجد إجابة عالمية لهذه الإجابات، وتعتمد كل واحدة على ما هي الصفحة من أجله. النقطة هي أن يكون لديك إجابة على الورق قبل الإصدار التالي.
هل كان يجب أن يفشل البوابة بشكل مغلق؟
بالنسبة لهذا الفريق المبتكر، لا. فحص الرابط هو إشارة مبنية على فهرس شهري، ولا يجب أن يكون الشيء الوحيد الذي يقف بين المحرر والإطلاق.
اكتب السياسة كجملة واحدة، حتى يتمكن المهندس التالي من التمييز بين الحظر المقصود والخطأ.
هل كان رصيد أكبر سيمنع ذلك؟
كان سيؤجل المشكلة بدلاً من إصلاح التصميم. رصيد أكبر يمكن أن ينفد أيضاً، وبوابة تعامل كل عدم نجاح كحكم ستظل تحجب على أول نطاق غير معروف.
الإصلاح هو الانقسام إلى ثلاث إجابات، بالإضافة إلى إنذار يصدر مبكراً. الرصيد هو فقط جزء من القصة.
اطرح نفس السؤال على أي بوابة تبنيها: أي فشل سيكون صامتاً، ومن سيلاحظه أولاً؟
ملاحظة حول الافتراض
ستختلف الفرق الحقيقية. قد تفشل مجموعتك بشكل مغلق لأسباب جيدة، مثل موقع منظم حيث يتم مراجعة كل رابط خارجي من قبل شخص. جيد. فقط اجعل هذا خياراً.