API Gateway vs Load Balancer
Beng Chen
March 3, 2023
مع تطور تكنولوجيا الإنترنت، زاد عدد طلبات بيانات الشبكة بشكل كبير، مما يضع ضغطًا أكبر على الخوادم. في بنية النظام في الأيام الأولى، كان يتم عادةً استخدام موازن الحمل لتوزيع حركة المرور على الشبكة عبر عدة خوادم، مما يقلل من الحمل على خادم واحد.
ومع ذلك، في الوقت الحاضر، تقدم العديد من أنواع مختلفة من الخدمات الخلفية واجهات برمجة التطبيقات (APIs) للعالم الخارجي، مما أدى إلى زيادة عدد واجهات برمجة التطبيقات. نتيجة لذلك، أصبحت قيود بنية النظام التي تعتمد بشكل رئيسي على موازنات الحمل واضحة، حيث تعمل بشكل أساسي في الطبقة الرابعة ولديها وظائف محدودة في الطبقة السابعة. هذا أدى إلى ظهور بنية تحتية تسمى بوابة API
، والتي تعمل بشكل رئيسي في الطبقة السابعة وتوفر قدرات توسيع واسعة.
في هذه المقالة، سنقدم الميزات المميزة لموازن الحمل وبوابة API، ونستكشف الاختلافات بينهما لمساعدة القراء على فهم العلاقة بينهما بشكل أفضل.
ما هو موازن الحمل؟
الدور الرئيسي لموازن الحمل هو توفير وظيفة موازنة الحمل لعدة خدمات خلفية، مما يسمح لها بتوزيع حركة المرور بناءً على خوارزميات موازنة حمل مختلفة. تاريخ موازنات الحمل واسع ويمكن تصنيفه تقريبًا إلى المراحل التالية:
-
المرحلة الأولى: موازنات الحمل في هذه المرحلة تتكون عادةً من أجهزة، والتي تتمتع بأداء عالي وموثوقية عالية ولكنها غير مرنة ومكلفة.
-
المرحلة الثانية: بدأت موازنات الحمل تُنفذ في البرمجيات، مما جعلها أكثر مرونة وقابلية للتوسع، وغالبًا ما تظهر في توزيعات البرمجيات وبالتالي تكون أقل تكلفة. LVS (Linux Virtual Server) هو مثال على هذا النوع.
-
المرحلة الثالثة: مع صعود تكنولوجيا الحوسبة السحابية، بدأت موازنات الحمل أيضًا في الظهور في نسخ سحابية. إحدى المزايا الكبيرة لمثل هذا موازن الحمل هي أنه يمكن أن يساعد الشركات في الحصول على خدمات موازنة حمل عالية الأداء بتكلفة أقل. ميزة أخرى هي أنه يمكن أن يستفيد من قابلية التوسع والمرونة في الحوسبة السحابية لتعزيز التوافر العام. أمثلة على موازنات الحمل السحابية تشمل
Classic Load Balancer
وApplication Load Balancer
وNetwork Load Balancer
من AWS.
بالإضافة إلى توزيع حركة المرور وتحسين قابلية توسيع الشبكة، يمكن استخدام موازنات الحمل أيضًا لتعزيز أمان الشبكة. على سبيل المثال، يمكن استخدامها لعزل الخوادم الداخلية عن الإنترنت العام، مما يمنع الهجمات الخبيثة والوصول غير المصرح به. حالة استخدام بسيطة هي خادم داخلي يحتوي على معلومات حساسة، يمكن لموازن الحمل عزله داخل الشبكة الداخلية لحماية أمانه بشكل فعال.
ما هي بوابة API؟
باختصار، بوابة API هي بنية تحتية تدير وتوجه حركة مرور واجهات برمجة التطبيقات، تعمل بشكل رئيسي في الطبقة السابعة. توفر قابلية توسيع قوية لا تمتلكها موازنات الحمل، بما في ذلك المصادقة، المراقبة، والإضافات المخصصة. بعض ميزاتها الرئيسية هي:
-
استراتيجيات توجيه غنية: بما أن بوابة API تعمل في الطبقة السابعة، يمكنها تحليل البيانات في طبقة HTTP/HTTPS. وبالتالي، يمكنها توجيه الطلبات إلى خوادم علوية مختلفة بناءً على شروط مثل مسار الطلب، النطاق، أو الرأس.
-
المصادقة: تدعم بوابة API طرق مصادقة متعددة على مستوى واجهة برمجة التطبيقات لمنع الطلبات غير المصرح بها، مثل OAuth2 وJWT. يمكن فصل المصادقة عن منطق الأعمال والحفاظ عليها مستقلة لتكون غير تدخلية أو قليلة التدخل في كود الأعمال.
-
الحد من المعدل: يمكن تطبيق الحد من المعدل بدقة على مستويات توجيه مختلفة لمنع الهجمات الخبيثة وتجنب زيادة الحمل على الخدمات الخلفية.
-
المراقبة: تشير المراقبة إلى القدرة على مراقبة حالة التشغيل واستخدام الموارد للبرنامج الداخلي من خارج النظام. تدعم بوابة API ربط السجلات بـ Kafka، Google Cloud Logging Service، Elasticsearch، إلخ، وربط المقاييس ذات الصلة بـ prometheus، datadog، إلخ.
-
التوسع: بما أن بوابة API نفسها هي بوابة، تم تصميمها لتكون قادرة على التكيف مع سيناريوهات تطبيق مختلفة لشركات مختلفة، مثل المصادقة المختلفة، الإصدار التدريجي، سياسات الأمان، وجمع السجلات. علاوة على ذلك، يجب أن تمكن بوابة API المستخدمين من اختيار التوسعات أو القيام بتطوير مخصص؛ لذلك، فإن قابلية التوسع قوية، واختيار التوسعات المتاحة متنوع جدًا. على سبيل المثال، Apache APISIX لديها 13 توسعة مصادقة مختلفة، تغطي تقريبًا جميع متطلبات المصادقة الشائعة في السوق.
حاليًا، هناك العديد من بوابات API المختلفة المتاحة في السوق، مثل Apache APISIX، Kong، Tyk، Zuul، إلخ. يمكن للمطورين اختيار بوابة API الأنسب وفقًا لمتطلباتهم المحددة.
الاختلافات الرئيسية بين بوابة API وموازن الحمل
مجالات التركيز المميزة
على الرغم من أن كلًا من بوابة API وموازن الحمل يدعمان الوكيل في الطبقة الرابعة والسابعة، إلا أن بوابة API تركز بشكل رئيسي على الطبقة السابعة بينما يركز موازن الحمل بشكل رئيسي على الطبقة الرابعة.
لذلك، فإن موازن الحمل، الذي يعمل في الطبقة الرابعة، لديه العديد من الميزات المفيدة. أولاً، يقلل من عبء تحليل البروتوكول مقارنة ببوابة API، مما يؤدي إلى قدرة إنتاجية أعلى. ثانيًا، يدعم تمرير عنوان IP العميل بشكل شفاف، بينما تمرر بوابة API عادةً عنوان IP العميل عبر رؤوس HTTP.
غنى الميزات
على سبيل المثال، لدى موازنات الحمل قدرات أضعف في معالجة طبقة HTTP السابعة وغالبًا ما تفتقر إلى ميزات مثل المصادقة، التفويض، منطق التوجيه المعقد، وجمع السجلات. بينما لدى بوابات API قدرات أقوى في معالجة بروتوكولات الطبقة السابعة ويمكنها إرفاق توسعات ميزات مختلفة مثل التحكم في الوصول، تسجيل السجلات، إدارة واجهات برمجة التطبيقات، والحوسبة بدون خادم.
التطوير المخصص
في سوق التكنولوجيا سريع التطور اليوم، تحتاج العديد من الشركات إلى القدرة على دعم التطوير المخصص. توفر بوابات API خيارات تطوير مخصصة مختلفة، مثل دعم لغات برمجة مختلفة والقدرة على حقن منطق معالجة مخصص في مراحل مختلفة من توجيه حركة المرور. من ناحية أخرى، لا توفر موازنات الحمل أي خيارات تطوير مخصصة.
طرق توزيع حركة المرور
عادةً ما تستخدم موازنات الحمل توزيع حركة المرور المباشر لتحقيق موازنة الحمل. عبر الخوارزميات، يتم إرسال بيانات حركة المرور مباشرة إلى عقد خوادم خلفية محددة، مما يعني أن كل مثيل خدمة ينتظر استقبال حركة المرور يجب أن يتصرف بشكل متسق، مما يقلل من بعض المرونة. في المقابل، توزع بوابات API حركة المرور بناءً على أبعاد مختلفة مثل مسار URL
، النطاق
، والرأس
. نتيجة لذلك، يمكن أن تختلف مثيلات الخدمات التي تنتظر استقبال حركة المرور، مثل واجهة برمجة تطبيقات خاصة أو واجهة برمجة تطبيقات GRPC، مما يجعل توزيع حركة المرور مرنًا للغاية.
حالات الاستخدام
حالة استخدام في بنية الخدمات الصغيرة
بالنسبة لأنظمة بنية الخدمات الصغيرة، تعتبر بوابة API ضرورية. أولاً، يمكنها بسهولة إدارة وتوجيه الخدمات الخلفية المختلفة. ثانيًا، يمكن أن توفر بوابة API العديد من الميزات المتقدمة مثل المصادقة، التفويض، الحد من المعدل، التوجيه، وتسجيل السجلات. لذلك، لم تعد الخدمات الصغيرة المختلفة بحاجة إلى تنفيذ وظائف مثل الحد من المعدل والمصادقة بشكل متكرر، مما يجعل تنفيذ وظائف كل خدمة صغيرة أكثر تركيزًا ويقلل من تكاليف التطوير.
الخدمات الصغيرة تشمل العديد من الخدمات، مما يجعل موازنات الحمل في الطبقة الرابعة غير مناسبة لموازنة الحمل لعدة خدمات خلفية. بدلاً من ذلك، تكون أكثر ملاءمة للاستخدام مع خدمات خلفية أحادية. في الوقت نفسه، عادةً ما لا تستطيع موازنات الحمل في الطبقة السابعة تقديم ميزات متقدمة، مما يجعل مزاياها مقارنة ببوابات API في الخدمات الصغيرة أقل أهمية.
إدارة ونشر واجهات برمجة التطبيقات
تعتبر بوابة API أيضًا مناسبة جدًا في السيناريوهات التي تحتاج إلى إدارة ونشر عدد كبير من واجهات برمجة التطبيقات، حيث لديها قدرات قوية في إدارة واجهات برمجة التطبيقات. في هذه الحالة، يمكنك بسهولة تمكين أو تعطيل واجهة برمجة تطبيقات محددة، تعديل تكوين التوجيه لواجهة برمجة تطبيقات بسرعة، وإضافة ميزات مثل الحد من المعدل، المصادقة، وتسجيل السجلات إلى واجهة برمجة تطبيقات دون الحاجة إلى إعادة تشغيل بوابة API.
على سبيل المثال، Apache APISIX هو مشروع مفتوح المصدر من الدرجة الأولى تحت مؤسسة Apache وهو حاليًا أكثر مشروع بوابة API نشاطًا. كبوابة API ديناميكية، في الوقت الفعلي، وعالية الأداء، يوفر Apache APISIX وظائف إدارة حركة المرور المختلفة مثل موازنة الحمل، الخادم العلوي الديناميكي، الإصدار التدريجي، قاطع الدائرة، المصادقة، المراقبة، إلخ.
من ناحية أخرى، تكون موازنات الحمل التقليدية أضعف نسبيًا في إدارة واجهات برمجة التطبيقات وتفتقر إلى مثل هذه الميزات المتقدمة الغنية.
الوصول إلى الشبكة عالي الأداء
بالنسبة للسيناريوهات التي تتطلب حركة مرور عالية واستقرارًا عاليًا للوصول إلى الشبكة، يكون موازن الحمل في الطبقة الرابعة أكثر ملاءمة بشكل واضح. يمكنه توزيع حركة المرور الأصلية في الطبقة الرابعة مباشرة إلى كل خدمة خلفية دون تأثير تحليل بروتوكولات طبقة التطبيق في الطبقات الوسطى، مما يجعله أكثر قدرة على التعامل مع إنتاجية أعلى.
في المقابل، فإن بوابة API التي تعمل في الطبقة السابعة، كنقطة دخول موحدة، سيكون لها حد معين من الإنتاجية بسبب الحاجة إلى تحليل البروتوكولات. حتى استخدام بوابة API في الطبقة الرابعة للوصول إلى الشبكة ليس مفيدًا بشكل خاص لأن هذه الطبقة ليست محور تركيز بوابة API. مقارنة بالتراكم التقني لسنوات عديدة لموازنات الحمل في هذه الطبقة، فإن مزايا بوابات API أقل بكثير.
الخلاصة
بشكل عام، تعتبر بوابة API وموازن الحمل حلول بنية تحتية تستخدم لحل مشاكل مختلفة. تُستخدم بوابة API بشكل رئيسي كوكيل لواجهات برمجة التطبيقات الخلفية، وتوفر نقطة دخول واحدة للوصول إلى أنواع مختلفة من واجهات برمجة التطبيقات ووظائف مستقلة مثل الحد من المعدل، المصادقة، والمراقبة. من ناحية أخرى، يُستخدم موازن الحمل بشكل رئيسي لتوزيع حركة المرور في الطبقة الرابعة، ونشر الطلبات عبر عدة خوادم خلفية لموازنة حمل الطلبات وتحسين التوافر العام للنظام وتحمل الأعطال.
في تصميم بنية معقولة، يتم استخدام بوابة API وموازن الحمل معًا بشكل عام. موازن الحمل هو نقطة الوصول إلى الشبكة للنظام بأكمله، ويوزع حركة المرور على عدة مثيلات من بوابة API. ثم يقوم كل مثيل من بوابة API بتوجيه الطلبات، المصادقة، والتفويض بشكل منفصل لجعل الشبكة بأكملها أكثر قوة، موثوقية، وقابلية للتوسع.