ما المقصود بشبكة الخدمات؟
شبكة الخدمات هي طبقة برمجية تعالج جميع الاتصالات بين الخدمات في التطبيقات. تتكون هذه الطبقة من خدمات مصغرة موضوعة في حاويات. مع توسّع التطبيقات وزيادة عدد الخدمات المصغرة، يصبح من الصعب مراقبة أداء الخدمات. لإدارة الاتصالات بين الخدمات، توفر "شبكة الخدمات" ميزاتٍ جديدةً مثل المراقبة والتسجيل والتتبع والتحكم في حركة المرور. وهي مستقلة عن التعليمة البرمجية لكل خدمة، ما يسمح لها بالعمل عبر حدود الشبكة ومع العديد من أنظمة إدارة الخدمات.
لماذا تحتاج إلى شبكة خدمات؟
في بنية التطبيقات الحديثة، يُمكنك إنشاء تطبيقات في صورة مجموعة بسيطة من الخدمات المصغرة القابلة للنشر بشكل مستقل. يمكن للفرق المختلفة إنشاء خدمات مصغرة فردية واختيار لغات وأدوات ترميز خاصة بها. ومع ذلك، يجب أن تتواصل الخدمات المصغرة حتى تعمل التعليمة البرمجية للتطبيق بشكل صحيح.
يعتمد أداء التطبيق على سرعة ومرونة الاتصال بين الخدمات. يجب على المطورين مراقبة التطبيق وتحسينه عبر الخدمات، ولكن من الصعب الحصول على الرؤية بسبب الطبيعة الموزعة للنظام. ومع توسّع التطبيقات، تصبح إدارة الاتصالات أكثر تعقيدًا.
يوجد عاملان رئيسيان وراء استخدام شبكة الخدمات، وسنشرحهما بالتفصيل فيما يلي.
قابلية المتابعة على مستوى الخدمة
مع نشر المزيد من أعباء العمل والخدمات، يجد المطورون صعوبةً في فهم كيفية عمل كل شيء معًا. على سبيل المثال، تريد فرق الخدمة معرفة تبعيات المصب (التبعيات المتلقية) وتبعيات المنبع (المستقبلة). يريدون رؤيةً أكبر حول كيفية اتصال الخدمات وأعباء العمل في طبقة التطبيق.
التحكم على مستوى الخدمة
يرغب المسؤولون في التحكم في الخدمات التي تتواصل مع بعضها والإجراءات التي يقومون بها. إنهم يريدون تحكمًا دقيقًا وحوكمةً على سلوك وسياسات وتفاعلات الخدمات داخل بنية الخدمات المصغرة. يعد تطبيق سياسات الأمان أمرًا ضروريًا للامتثال التنظيمي.
ما مزايا شبكة الخدمات؟
توفر "شبكة الخدمات" طبقة بنية تحتية مركزية مخصصة تتعامل مع تعقيدات الاتصال من خدمة إلى خدمة داخل تطبيق موزع. بعد ذلك، نقدم العديد من مزايا "شبكة الخدمات".
اكتشاف الخدمة
تعمل "شبكات الخدمات" على أتمتة اكتشاف الخدمة، ما يقلل العبء التشغيلي لإدارة نقاط نهاية الخدمة. تستخدم "سجل خدمة" لاكتشاف جميع الخدمات داخل الشبكة وتتبعها ديناميكيًا. يمكن للخدمات العثور على بعضها والتواصل فيما بينها بسلاسة، بصرف النظر عن موقعها أو بنيتها التحتية الأساسية. يُمكنك التوسع بسرعة من خلال نشر خدمات جديدة حسب الحاجة.
موازنة الأحمال
تستخدم "شبكات الخدمة" خوارزمياتٍ متنوعةً، مثل round-robin أو الاتصالات الأقل أو موازنة الأحمال المُرجّحة، لتوزيع الطلبات عبر العديد من مثيلات الخدمة بذكاء. تعمل موازنة التحميل على تحسين استخدام الموارد وتضمن التوافر العالي وقابلية التوسع. يُمكنك تحسين الأداء ومنع معوقات اتصالات الشبكة.
إدارة حركة المرور
توفر "شبكات الخدمة" ميزات إدارة حركة المرور المتقدمة، والتي توفر تحكمًا دقيقًا في توجيه الطلبات وسلوك حركة المرور. فيما يلي بعض الأمثلة.
تقسيم حركة المرور
يُمكنك تقسيم حركة المرور الواردة بين إصدارات الخدمة المختلفة أو التكوينات المختلفة. توجّه الشبكة بعض حركة المرور إلى الإصدار المحدث، ما يتيح طرح التغيرات بشكل خاضع للتحكم وتدريجي. يوفر هذا سلاسة الانتقال ويقلل من تأثير التغيرات.
محاكاة الطلبات
يُمكنك تكرار حركة المرور إلى خدمة اختبار أو خدمة مراقبة لإجراء التحليل بدون التأثير على تدفق الطلبات الأساسية. عندما تحاكي الطلبات، يُمكنك الحصول على رؤى حول كيفية تعامل الخدمة مع طلبات معينة بدون التأثير على حركة مرور الإنتاج.
عمليات نشر الكناري
يُمكنك توجيه مجموعة فرعية صغيرة من المستخدمين أو حركة المرور إلى إصدار خدمة جديد، وفي الوقت نفسه يستمر معظم المستخدمين في استخدام الإصدار الثابت الحالي. بفضل محدودية التعرض، يُمكنك تجربة سلوك الإصدار الجديد وأدائه في بيئة واقعية.
الأمان
توفر "شبكات الخدمات" ميزات اتصال آمنة مثل التشفير باستخدام بروتوكول أمان طبقة النقل المتبادل (mTLS)، والمصادقة، والترخيص. يتيح بروتوكول أمان طبقة النقل المتبادل (mTLS) التحقق من الهوية في الاتصالات من خدمة إلى خدمة. يساعد في ضمان سرية البيانات وسلامتها من خلال تشفير حركة المرور. يُمكنك أيضًا فرض سياسات الترخيص للتحكم في الخدمات التي تصل إلى نقاط نهاية محددة أو تنفيذ إجراءات محددة.
المراقبة
توفر "شبكات الخدمات" ميزات المراقبة الشاملة والملاحظة الشاملة لاكتساب رؤى حول صحة خدماتك وأدائها وسلوكها. تساعد المراقبة أيضًا في استكشاف الأخطاء وإصلاحها وتحسين الأداء. فيما يلي أمثلة لميزات المراقبة التي يُمكنك استخدامها:
- جمع المقاييس مثل زمن الاستجابة، ومعدلات الخطأ، واستخدام الموارد لتحليل الأداء العام للنظام
- إجراء التتبع الموزع لرؤية مسار الطلبات بالكامل ومعرفة التوقيت عبر خدمات متعددة
- تسجيل أحداث الخدمة في سجلات لأغراض التدقيق وتصحيح الأخطاء والامتثال
كيف تعمل شبكة الخدمات؟
تزيل "شبكة الخدمات" المنطق الذي يحكم اتصالات الخدمة إلى الخدمة من الخدمات الفردية ويختزل (يقسّم) الاتصالات إلى طبقة البنية التحتية الخاصة بها. يستخدم العديد من وكلاء الشبكة في توجيه الاتصال بين الخدمات وتتبعه.
يعمل الوكيل كبوابة وسيطة بين شبكة مؤسستك والخدمة المصغرة. تُوجَّه جميع حركة المرور من وإلى الخدمة من خلال الخادم الوكيل. يُطلق على الوكلاء الفرديين أحيانًا اسم الجانبيين، لأنهم يعملون بشكل منفصل ولكنهم يقعون منطقيًا بجوار كل خدمة. باجتماع الوكلاء تتشكل طبقة شبكة الخدمات.
يوجد مكونان رئيسيان في بنية "شبكة الخدمات" هما مستوى التحكم ومستوى البيانات.
مستوى البيانات
مستوى البيانات هو مكون معالجة البيانات الموجود في "شبكة الخدمات". وهو يشمل جميع الوكلاء الجانبيين ووظائفهم. عندما تريد إحدى الخدمات الاتصال بخدمة أخرى، يتخذ الوكيل الجانبي الإجراءات التالية:
- يعترض الوكيل الجانبي الطلب
- يضع الطلب في اتصال شبكة منفصل
- يقوم بإنشاء قناة آمنة ومشفرة بين الوكيل المصدر والوكيل الوجهة
يتعامل الوكلاء الجانبيون مع الرسائل منخفضة المستوى بين الخدمات. ينفذون أيضًا ميزات، مثل قطع الدائرة وإعادة محاولة الطلب، لتعزيز المرونة ومنع تدهور الخدمة. يتم تنفيذ وظائف "شبكة الخدمات"، مثل موازنة التحميل واكتشاف الخدمة وتوجيه حركة المرور، في مستوى البيانات.
مستوى التحكم
يعمل مستوى التحكم كطبقة مركزية للإدارة والتكوين خاصة بشبكة الخدمات.
وباستخدام مستوى التحكم، يمكن للمسؤولين تعريف الخدمات وتكوينها داخل الشبكة. على سبيل المثال، يُمكنهم تحديد المَعلَمات مثل نقاط نهاية الخدمة وقواعد التوجيه وسياسات موازنة الحمل وإعدادات الأمان. بعد تحديد التكوين، يقوم مستوى التحكم بتوزيع المعلومات الضرورية على مستوى بيانات شبكة الخدمات.
يستخدم الوكلاء معلومات التكوين لتحديد كيفية التعامل مع الطلبات الواردة. ويمكنهم أيضًا تلقي تغييرات التكوين وتكييف سلوكهم ديناميكيًا. يُمكنك إجراء تغييرات في الوقت الفعلي على تكوين شبكة الخدمات بدون إعادة تشغيل الخدمة أو تعطيلها.
عادةً ما تتضمن عمليات تنفيذ شبكة الخدمات الإمكانات التالية في مستوى التحكم:
- سجل خدمات يتتبع جميع الخدمات الموجودة داخل الشبكة
- الاكتشاف التلقائي للخدمات الجديدة وإزالة الخدمات غير النشطة
- جمع وتجميع بيانات القياس عن بُعد مثل المقاييس والسجلات ومعلومات التتبع الموزعة
ما المقصود بـ Istio؟
Istio هو مشروع "شبكة خدمات" مفتوح المصدر الغرض من تصميمه هو العمل بشكل أساسي مع Kubernetes. Kubernetes عبارة عن منصة تنسيق حاويات مفتوحة المصدر تُستخدم في نشر تطبيقات الحاويات وإدارتها على نطاق واسع.
تعمل مكونات مستوى تحكم Istio كأعباء عمل Kubernetes نفسها. إنه يستخدم كابينة Kubernetes Pod، وهي عبارة عن مجموعة حاويات محكمة الإقران تشترك في عنوان IP واحد، كأساس لتصميم الوكيل الجانبي.
يعمل وكيل الطبقة 7 في Istio كحاوية أخرى في نفس سياق الشبكة مثل الخدمة الرئيسية. من هذا الموضع، يُمكنه اعتراض جميع حركة مرور الشبكة المتجهة إلى الكابينة وفحصها ومعالجتها. ومع ذلك، لا تحتاج الحاوية الأساسية إلى أي تغيير أو حتى معرفة أن هذا يحدث.
ما تحديات عمليات تنفيذ "شبكة الخدمات" مفتوحة المصدر؟
فيما يلي بعض التحديات الشائعة التي تواجه شبكة الخدمات المرتبطة بالمنصات مفتوحة المصدر مثل Istio وLinkerd وConsul.
التعقيد
تقدم شبكات الخدمات مكونات بنية تحتية إضافية، ومتطلبات التكوين، واعتبارات النشر. إنها تحتوي على منحنى تعليمي حاد، الأمر الذي يتطلب من المطورين والمشغلين اكتساب الخبرة في استخدام تنفيذ شبكات الخدمة. يستغرق تدريب الفرق وقتًا ويستهلك موارد. يجب أن تضمن المؤسسة حصول الفرق على المعرفة اللازمة لفهم تعقيدات بنية شبكة الخدمات وتكوينها بشكل فعال.
النفقات العامة التشغيلية
تتضمن شبكات الخدمات نفقاتٍ عامةً إضافيةً لنشر وإدارة ومراقبة وكلاء مستوى البيانات ومكونات مستوى التحكم. على سبيل المثال، يجب عليك القيام بما يلي:
- ضمان التوافر العالي وقابلية التوسع للبنية التحتية الخاصة بشبكة الخدمات
- مراقبة سلامة حاوياتك وأدائها
- التعامل مع الترقيات ومشكلات التوافق
من الضروري تصميم "شبكة الخدمات" وتكوينها بعناية لتقليل أي تأثير على أداء النظام ككل.
تحديات التكامل
يجب أن تتكامل "شبكة الخدمات" بسهولة مع البنية التحتية الحالية لأداء وظائفها المطلوبة. يتضمن ذلك منصات تنسيق الحاويات، وحلول الشبكات، والأدوات الأخرى في مكدس التكنولوجيا.
قد يكون من الصعب ضمان التوافق وسهولة التكامل مع المكونات الأخرى في البيئات المعقدة والمتنوعة. يلزم استمرار التخطيط والاختبار لتغيير واجهات برمجة التطبيقات وتنسيقات التكوين والتبعيات. وينطبق الشيء نفسه إذا كنت بحاجة إلى الترقية إلى إصدارات جديدة في أي مكان في المكدس.
كيف تساعدك AWS في تلبية متطلبات شبكة الخدمات؟
AWS App Mesh هي شبكة خدمات مُدارة بالكامل وعالية التوافر من Amazon Web Service (AWS). تُسهّل App Mesh مراقبة الاتصالات بين الخدمات والتحكم فيها وتصحيحها.
تقوم App Mesh باستخدام Envoy، وهو وكيل شبكة خدمات مفتوح المصدر يُنشَر مع حاويات الخدمات المصغرة. يُمكنك استخدامه مع حاويات الخدمات المصغرة التي تُدار بواسطة Amazon Elastic Container Service (Amazon ECS)، وAmazon Elastic Kubernetes Service (Amazon EKS)، وAWS Fargate، وKubernetes on AWS. يُمكنك أيضًا استخدامه مع الخدمات على Amazon Elastic Compute Cloud (Amazon EC2).
ابدأ استخدام "شبكة الخدمات" على AWS من خلال إنشاء حساب اليوم.