مشكلة مفاتيح API التي لا تنتهي صلاحيتها أبدًا
المفتاح الذي صدر قبل سنوات، ولم يُبدَّل قط، ولا يزال صالحًا حتى اليوم ليس ميزة مريحة. إنه عبء لم ينظر فيه أحد فعلًا منذ سنوات.
كل شركة API تريد منك تثبيت SDK الخاص بها. فحزمة SDK تربطك بها. فبمجرد أن تستورد شيفرتك مكتبة عميل، وتستدعي دوالها، وتعتمد على أشكال كائناتها، يصبح تغيير المزود يعني إعادة كتابة الشيفرة التي تتحدث إلى المزود، لا مجرد تغيير URL. وهذا الارتباط هو غالبًا نموذج العمل الحقيقي وراء SDK مجاني ومريح، سواء صرّح أحد بذلك علنًا أم لا.
اتخذنا نهجًا مختلفًا. لدى My Geocode 17 مضيفًا للتوافق، يعيد كل منها إنتاج شكل الطلب والاستجابة الخاص بمزود آخر. فإن كانت شيفرتك تعرف مسبقًا كيف تستدعي نقطة نهاية واجهة API معروفة للترميز الجغرافي وتحلل JSON الخاص بها، يمكنك توجيه تلك الشيفرة نفسها إلى مضيف التوافق لدينا فتستمر في العمل. لا SDK لتثبيته، ولا تحليل استجابات لإعادة كتابته، ولا نموذج كائنات مملوك لتتعلمه.
يبدو هذا أمرًا صغيرًا إلى أن تحاول فعلًا نقل نظام إنتاجي بعيدًا عن واجهة API. فعنوان URL لنقطة النهاية هو الجزء السهل. أما الجزء الصعب فهو كل موضع في شيفرتك يصل إلى اسم حقل محدد، أو يعالج شكل خطأ محدد، أو يفترض أسلوب ترقيم صفحات محددًا. هذه الافتراضات تتناثر في الشيفرة على مر السنين، في أماكن لا يتذكر أحد أن يفحصها. ومضيف التوافق يلغي الحاجة إلى العثور عليها وإصلاحها، لأن الشكل لا يتغير.
أما حزمة SDK، في المقابل، فتحل مشكلة لن تواجهها إلا مرة واحدة، وهي الاتصال بواجهة API لأول مرة، على حساب مشكلة ستواجهها طوال عمر المنتج: الارتباط بقرارات التصميم الخاصة بتلك الحزمة. فحين تُصدر الحزمة تغييرًا جذريًا، تتحمله أنت. وحين تتوقف عن صيانة ربط بلغة برمجة تعتمد عليه، تتحمل ذلك أيضًا. أما مضيف التوافق عبر HTTP البسيط فليس فيه أي من هذه المساحة. إنه مجرد URL يعيد شكل الاستجابة الذي تعرف أصلًا كيف تقرؤه.
لسنا ضد حزم SDK عمومًا. فالغلاف الرقيق الذي يوفّر عليك كتابة الشيفرة المتكررة لبروتوكول HTTP وسيلة راحة، لا فخ، ما دام التخلي عنه لاحقًا ليس المشروع نفسه الذي يتطلبه تغيير المزود. الفخ هو حين تصبح أشكال حزمة SDK الأشكال الوحيدة التي تفهمها شيفرتك، فيصبح الرحيل يعني إعادة الكتابة بدل إعادة الضبط.
كان بناء 17 مضيفًا للتوافق عملًا أكبر علينا مما كان سيتطلبه بناء SDK واحد. فكل مضيف يجب أن يطابق شكل استجابة مزود آخر بدقة، حقلًا بحقل، حتى لا تلاحظ عمليات الدمج القائمة أي فرق. قمنا بهذا العمل لأنه ينقل تكلفة الانتقال من جانبك إلى جانبنا. فتستطيع أن تختبر ما إذا كانت بياناتنا ومدة تشغيلنا وأسعارنا تناسبك دون أن تدفع أولًا تكلفة دمج لمجرد أن تعرف. اطّلع على القائمة الكاملة لمضيفات التوافق أو على التوثيق لمعرفة كيف يقابل كل منها الأصل.
يطلب SDK جديد من المطور أن يثق بالخيارات الهندسية لشركة ما طوال عمر المشروع. أما مضيف التوافق فيطلب أقل بكثير: غيّر عنوان URL الأساسي، وربما مفتاح API، وانظر ماذا يحدث. هذه مقايضة أعدل، وهي السبب في أننا بنينا مضيفات التوافق قبل أن نبني أي شيء آخر.