الانتقال

علامات تحذيرية على أنك مقيد بصيغة احتكارية

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

أسماء الحقول الدقيقة لمزود ما مستخدمة في كل أنحاء نموذج بياناتك. إذا كان مخطط قاعدة بياناتك واستجابات API الداخلية وشيفرة الواجهة الأمامية كلها تستخدم تسمية الحقول الخاصة بمزود معين، formatted_address أو display_name أو أيًا كان ما يسميه ذلك المزود، بدلًا من تسميتك الخاصة التي تُترجم مرة واحدة عند الحد الفاصل، فإن كل طبقة من تطبيقك قد استوعبت اعتمادًا على أعراف ذلك المورد الوحيد.

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

لا أحد يستطيع أن يجيب بسرعة عن عدد المواضع في قاعدة الشيفرة التي تشير إلى المزود بالاسم. إذا كانت الإجابة عن سؤال «أين نعتمد على هذا المورد» تتطلب تدقيقًا متأنيًا بدلًا من إجابة سريعة وواثقة، فإن عدم اليقين هذا بحد ذاته علامة على التقيّد، لأنه يعني أن الاعتماد انتشر أبعد مما كان أحد يتتبعه بنشاط.

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

لم يُختبر الانتقال قط، ولو جزئيًا، طوال السنوات التي عمل فيها التكامل. التكامل الذي يمكنه نظريًا الانتقال إلى مزود آخر لكنه لم يُجرَّب فعليًا مع أي مزود آخر لا يختلف عمليًا اختلافًا يُذكر عن تكامل لا يستطيع الانتقال إطلاقًا، إلى أن يختبره أحد فعلًا.

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

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