لماذا تحتاج الخدمات المصغرة (Microservices) إلى بوابة واجهة برمجة التطبيقات (API Gateway)؟

Xiaolan Cheng

February 17, 2023

Ecosystem

ما هي الخدمات المصغرة

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

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

نوع البنيةالوصفالمزاياالعيوب
بنية التطبيق الأحاديةيتم تجميع جميع الأكواد الوظيفية في خدمة واحدة.1. بنية بسيطة مع تكاليف منخفضة لتطوير وصيانة المشروع.يؤدي ربط جميع الوحدات معًا إلى تسهيل تطوير وصيانة المشاريع الصغيرة، ولكنه قد يسبب مشاكل للمشاريع الكبيرة، بما في ذلك
1. الوحدات في المشروع مرتبطة بشكل كبير، وقد تؤدي مشكلة أداء في وحدة واحدة إلى تعطل المشروع بأكمله؛
2. يحتاج المشروع إلى قابلية توسع أفضل.
بنية SOAالمصطلح يعني "بنية موجهة نحو الخدمة"، والتي تتضمن عادةً عدة خدمات.
عادةً ما توجد الخدمة بشكل مستقل في عملية نظام تشغيل، ويتم تحقيق الاتصال بين الخدمات من خلال التبعيات أو آليات الاتصال،
في النهاية، توفر سلسلة من الوظائف.
1. تكامل النظام: من منظور نظامي، يحل مشاكل الاتصال بين أنظمة المؤسسة عن طريق تحويل اتصالاتها الشبكية غير المنظمة وغير المهيكلة إلى تكوين نجمي مُدار ومهيكل.
2. النظام الموجه نحو الخدمة: من منظور وظيفي، يتم تجريد المنطق التجاري إلى خدمات قابلة لإعادة الاستخدام والدمج ويتم استخدام تنسيق الخدمات لتحقيق إعادة بناء سريعة لعمليات الأعمال.
3. الخدمة الموجهة نحو الأعمال: من منظور المؤسسة، يتم تجريد وظائف المؤسسة إلى خدمات قابلة لإعادة الاستخدام والدمج.
1. يؤدي تركيز الخدمات إلى إنشاء تبعيات بين الخدمات، وقد يؤدي عطل في خدمة واحدة إلى فشل متتالي عبر الخدمات الأخرى.
2. التبعيات وعلاقات الاستدعاء بين الخدمات معقدة، مما يجعل الاختبار والنشر صعبًا.
بنية الخدمات المصغرةالخدمات المصغرة هي تطور لـ SOA. أحد التركيزات الرئيسية لبنية الخدمات المصغرة هو "الحاجة إلى تجزئة وخدمة الأعمال بشكل كامل"،
سيتم تقسيم النظام التجاري الأحادي الأصلي إلى أجزاء متعددة يمكن تطويرها وتصميمها ونشرها بشكل مستقل.
ستعمل هذه الأجزاء كتطبيقات صغيرة ومستقلة. سيتعاون كل تطبيق ويتواصل مع الآخرين لتحقيق التكامل والتفاعل، وهذا هو جوهر بنية الخدمات المصغرة.
1. اللامركزية؛
2. التجزئة من خلال الخدمات؛
3. تقسيم الخدمات وفرق التطوير بناءً على القدرات التجارية؛
4. البنية التحتية الآلية (DevOps، النشر الآلي).
1. تكلفة التطوير مرتفعة نسبيًا؛
2. تسبب مشاكل في تحمل الأخطاء للخدمات؛
3. تسبب مشاكل في اتساق البيانات؛
4. تتضمن معاملات موزعة

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

ومع تطور أعمال الإنترنت، يزداد عدد واجهات برمجة التطبيقات (APIs) بشكل كبير، وستواجه بوابات إدارة واجهات برمجة التطبيقات الموحدة تحديات. يمكن لاختيار بوابة API أكثر قوة أن يعزز بشكل فعال قدرات النظام في المراقبة، والتعافي من الكوارث، والمصادقة، والحد من المعدل.

ما هي بوابة API؟

توفر بوابة API واجهة موحدة للتفاعلات بين العملاء وأنظمة الخدمات وتعمل كنقطة مركزية لإدارة الطلبات والاستجابات. يمكن لاختيار بوابة API مناسبة أن يبسط التطوير ويحسن كفاءة تشغيل وإدارة النظام.

في بنية الخدمات المصغرة، تعمل بوابة API كحل لتصميم النظام من خلال دمج مختلف الخدمات المصغرة من وحدات مختلفة وتنسيق الخدمات بشكل موحد.

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

لماذا تحتاج الخدمات المصغرة إلى بوابة API؟

بوابة API في الخدمات المصغرة

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

بدون بوابة API، لن تكون مداخل ومخارج حركة المرور موحدة، وسيحتاج العميل إلى معرفة معلومات الوصول لجميع الخدمات. لن يكون لمعنى الخدمات المصغرة وجود. لذلك، تعتبر بوابة الخدمات المصغرة ضرورية لبنية الخدمات المصغرة. بالإضافة إلى ذلك، تلعب بوابة API دورًا حيويًا في قابلية مراقبة النظام، المصادقة، الاستقرار، واكتشاف الخدمات.

التحديات التي تواجهها الخدمات المصغرة

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

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

الحلول

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

المصادقة: يوضح الرسم التالي كيف يتم توحيد الخدمات المصغرة مع بوابة API للمصادقة، حيث تمر جميع الطلبات عبر البوابة، مما يخفي الخدمات المصغرة بشكل فعال.

المصادقة في بوابة API للخدمات المصغرة

المراقبة والإنذار/تحليل التتبع:

كوسيط بين العميل والخادم، تعتبر بوابة API حاملًا ممتازًا لمراقبة الخدمات المصغرة.

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

رسم توضيحي للمراقبة وتحليل التتبع

الحد من المعدل، العزل، وكسر الدائرة:

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

لذلك، من الضروري تنظيم وإدارة حركة المرور الواردة. يوضح الرسم التالي كيف تجمع أنظمة الخدمات المصغرة بوابات API للقيام بالحد من المعدل، العزل، وكسر الدائرة.

الحد من المعدل، العزل، وكسر الدائرة

اختيار البوابات الرئيسية

تتوفر العديد من بوابات API مفتوحة المصدر في الخدمات المصغرة، بما في ذلك NGINX، Kong، Apache APISIX، و Envoy. بالنسبة لتقنية Java، هناك خيارات مثل Netflix Zuul، Spring Cloud Gateway، Soul، إلخ. ولكن قد تتساءل، "لماذا تختار Apache APISIX بدلاً من NGINX و Kong؟"

إليك مقارنة موجزة.

البوابةالمشاكلالمزايا
NGINX1. يتطلب إعادة التحميل لتطبيق التغييرات في التكوين، مما لا يمكن أن يواكب تقدم التقنيات السحابية الأصلية.1. التطبيقات القديمة؛
2. مستقرة وموثوقة ومختبرة عبر الزمن؛
3. أداء عالي
Apache APISIX1. الوثائق ليست غنية أو واضحة بما يكفي وتحتاج إلى تحسين.1. مشروع من الدرجة الأولى من مؤسسة Apache؛
2. البنية التقنية أكثر توافقًا مع مبادئ السحابة الأصلية؛
3. أداء ممتاز؛
4. نظام بيئي غني؛
5. بالإضافة إلى دعم تطوير الإضافات بلغة Lua، يدعم أيضًا إضافات بلغات Java، Go، Python، Node، وغيرها.
Kong1. الاستخدام الافتراضي لقواعد بيانات PostgreSQL أو Cassandra يجعل البنية بأكملها ضخمة للغاية ويمكن أن يؤدي إلى مشاكل في التوفر العالي؛
2. يستخدم التوجيه خوارزمية بحث متسلسلة، مما قد يؤدي إلى انخفاض كبير في الأداء عند وجود أكثر من آلاف المسارات في البوابة؛
3. تتطلب بعض الميزات الهامة الدفع؛
1. رائدة بوابات API مفتوحة المصدر مع قاعدة مستخدمين كبيرة؛
2. الأداء يلبي احتياجات معظم المستخدمين؛
3. نظام بيئي غني؛
4. يدعم تطوير الإضافات بلغتي Lua و Go؛
Envoy1. تم تطويره بلغة C++، مما يجعل التطوير الثانوي صعبًا؛
2. بالإضافة إلى تطوير المرشحات بلغة C++، يدعم أيضًا WASM و Lua.
1. مشروع تخرج من CNCF وهو أكثر ملاءمة لسيناريوهات شبكة الخدمات ويدعم نشر بنى متعددة اللغات؛
Spring Cloud Gateway1. على الرغم من نضج مجتمع Spring، هناك نقص في الموارد لـ Gateway.1. توفر البوابة مجموعة غنية من الميزات الجاهزة للاستخدام، والتي يمكن استخدامها من خلال تكوين SpringBoot أو استدعاءات مكتوبة يدويًا؛
2. إطار Spring قابل للتمديد بشكل كبير مع قابلية توسع قوية، تكوين سهل، وصيانة جيدة؛
3. مجتمع Spring ناضج؛
4. سهل الاستخدام؛
5. مناسب لتقنية Java.

الخلاصة

مع استمرار تطور عالم الإنترنت، تتطور الشركات بسرعة، مما يؤدي إلى تغييرات مستمرة في بنية الأنظمة. تم اعتماد بنية الخدمات المصغرة على نطاق واسع من قبل العديد من الشركات.

مع زيادة كمية البيانات وواجهات برمجة التطبيقات في الخدمات المصغرة، أصبح اختيار بوابة API ممتازة لإدارة حركة المرور العالية أمرًا بالغ الأهمية.

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

Tags: