Microservices basics

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

لنتعرف إلى سبب أهميتها الكبيرة للمطورين المعاصرين.

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

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

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

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

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

من أبرز الأسباب التي تدفعك إلى تجربة الخدمات المصغرة ما يلي:

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

وداعاً للتطبيق الأحادي، ومرحباً بالخدمات المصغرة؟

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

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

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

البنية الأحادية مقابل بنية الخدمات المصغرة

ألق نظرة أقرب على هذا الجدول المقارن لتحليل الفروق الرئيسية بين البنية الأحادية وبنية الخدمات المصغرة.

 

الخاصية أحادي خدمات مصغرة

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

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

سهل النشر، لكن التحديثات معقدة لأنها تؤثر في النظام بأكمله.

يسهل تحديث الخدمات الفردية، لكن إدارة الإصدارات تتطلب جهداً إضافياً.

ما الأدوات التي يمكن للمطورين استخدامها؟

يدمج المطورون أدوات مختلفة في سير عملهم اليومي. وتنقسم هذه الأدوات عموماً إلى فئتين رئيسيتين: أدوات المراقبة وأدوات الاختبار.

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

على سبيل المثال، Prometheus يُستخدم لمراقبة الأحداث وجمع المقاييس. وهو يتكامل مع  Grafana الذي يعرض البيانات في لوحات معلومات تفاعلية. ELK Stack ممتاز لإدارة السجلات واكتشاف المشكلات واستكشاف أخطائها وإصلاحها.

  • أما أدوات الاختبار فتساعد على التحقق من أن كل خدمة مصغرة تعمل كما هو متوقع في سيناريوهات مختلفة. وتفحص هذه الأدوات الخدمات المصغرة بصورة معزولة وكجزء من النظام الكامل. 

على سبيل المثال، Postman أو Cypress يُستخدمان لاختبار API. Apache JMeter يمكنه محاكاة الحمل وقياس أداء الخدمات المصغرة تحت الضغط. WireMock يساعد على محاكاة الخدمات المصغرة لاختبارها بصورة معزولة قبل التكامل الكامل.

البروكسيات

تُعد أدوات البروكسي أساسية أيضاً للاتصال الآمن بين الخدمات المصغرة. 

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

قد تتساءل: “لماذا لا أستخدم بروكسياً مجانياً فحسب؟”  لكن الحقيقة أنه يخفي كثيراً من التهديدات الأمنية المحتملة. إضافة إلى ذلك، تكون فاعليته عادة أقل من المتوقع.

Simpsons meme
عندما يحظر بروكسي عالي الجودة جميع الطلبات الضارة

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

مع بروكسيات DataImpulse، يمكن للمطورين نسيان التعامل مع الاتصالات غير الموثوقة والثغرات الأمنية ومشكلات الأداء. لدينا حلول مخصصة لك ولفريقك.

لماذا ينبغي للمطورين تعلم الخدمات المصغرة؟

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

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

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

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

الخلاصة

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

هل تريد معرفة المزيد عن البروكسيات؟ تواصل معنا عبر [email protected] أو انقر زر “جرّب الآن” في الزاوية العلوية اليمنى.

Share article: