تنسخ العنوان من استعلام واحد إلى قاعدة التوجيه لديك، فيعمل الموقع، ثم لا يعمل بعد أسبوع. لم يتغيّر شيء في القاعدة. انتقلت الخدمة إلى عنوان حافة مختلف، أو حلّ العميل اسم مضيف مختلفًا، أو تحوّلت الجلسة إلى IPv6. القرار المعروض عليك هو ما إذا كانت قاعدة قائمة على الاسم أم نطاق صريح هي الأداة الصحيحة لهذه الخدمة، وثلاثة شروط تحسم ذلك. ما يلي يفصل الاسم عن العنوان، لأن واحدًا منهما فقط مستقر.

لماذا لا يُعدّ استعلام واحد جردًا

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

ثمة ثغرة ثانية. نادرًا ما يغطي اسم مضيف واحد مرئي التطبيق كله، لأن تسجيل الدخول والوسائط وحركة API تستخدم غالبًا أسماء منفصلة. القاعدة المبنية على اسم المضيف في شريط العنوان قد تغطي الصفحة وتفوّت الفيديو، وهو ما يُقرأ كفشل جزئي لا كخطأ توجيه.

الثغرة الثالثة هي عائلة العناوين. قاعدة تقتصر على v4 لا تقول شيئًا عن سجل AAAA الذي قد يفضّله العميل.

ثلاثة شروط تحسم بين قاعدة النطاق والنطاقات

أولًا، هل تنشر الخدمة مجموعة مستقرة من البادئات يمكنك امتلاكها وتوثيقها؟ إن فعلت، فالنطاقات الصريحة صادقة ورخيصة. وإن لم تفعل، فقاعدة النطاق هي الآلية الوحيدة التي يمكنها متابعة الخدمة.

ثانيًا، هل تتحدّث آلية النطاق في عميلك؟ القاعدة التي تُحلّ مرة واحدة عند الاتصال ولا تُحلّ بعدها أبدًا هي لقطة بعلامة تجارية أفضل. ثالثًا، هل تغطي الآلية النطاقات الفرعية وعائلتي العناوين معًا، أم الأسماء التي كتبتها فقط؟

أجب عن تلك الأسئلة الثلاثة يصبح الاختيار عادةً واضحًا. التخمين ينتج قاعدة تعمل في الاختبار وتفشل في الإنتاج.

اختبر جلسة، لا صفحة

حمّل الصفحة، ثم نفّذ العملية المهمة: تسجيل الدخول، بدء التشغيل، رفع ملف. كل واحد منها قد يصل إلى مضيف مختلف، والذي يفشل هو الذي فوّته قاعدتك.

عدّد ما تتصل به الجلسة فعلًا بدلًا مما تعرضه الصفحة:

dig +short example.com A
dig +short example.com AAAA
curl -sI https://example.com | head -5

أبقِ المُحلّل مرئيًا أثناء المقارنة، لأن قاعدة تعمل من مُحلّل وتفشل من آخر تخبرك عن إجابة CDN لا عن النفق. كما أن مدة TTL القصيرة تعني أن الإجابة التي سجّلتها لها صلاحية محدودة.

ما تغطيه كل آلية فعليًا

تبدو الآليتان قابلتين للتبادل في صفحة إعدادات، لكنهما تتصرفان بشكل مختلف في العمق.

MechanismWhat it matchesHow it fails
Domain ruleNames the client resolves, then their addressesMisses subdomains, or goes stale when refresh is off
Address routeA prefix you wrote downKeeps matching an address the service has left

مسار العنوان في النواة يطابق البادئات. لا يعرف ما هو اسم المضيف، فلا يمكنه متابعة خدمة تغيّر عناوينها. قاعدة النطاق تحلّ الأسماء وتوجّه النتيجة، وهي تتابع الخدمة لكنها تعتمد على المُحلّل وسلوك التحديث وتعامل العميل مع النطاقات الفرعية، لذا يجب اختبار قاعدة تتابع الأسماء بالمُحلّل الذي يستخدمه العميل فعليًا.

لا واحدة منهما شاملة للأخرى، ولهذا ينتج خلطهما دون ملاحظة ارتباكًا لاحقًا.

أعد الفحص بعد تغيّر الخدمة

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

دوّن أي آلية تغطي أي اسم مضيف، والتاريخ الذي تحققت منه آخر مرة.

تلك الملاحظة هي الفرق بين قاعدة يمكنك الدفاع عنها وقاعدة لا يجرؤ أحد على لمسها. إن كانت الخدمة تنشر قائمة بادئاتها، فاستخدمها واذكر التاريخ. وإن لم تكن، فقل ذلك، واحتفظ بقاعدة النطاق وسلوك تحديثها مكتوبًا بجانبها.

مقالات ذات صلة