اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

قبل أن أشرح ماهي الخدمات المصغرة (microservices) دعني أشرح لك النظام التقليدي في بناء الأنظمة وهو نظام الصخرة الضخمة (monoliths)

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

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

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

على الجانب الأخر يوجد نظام الmicroservices أو الخدمات المصغرة, كما شبهنا بالأعلى النظام التقليدي بالصخرة الكبيرة, يمكننا تشبيه هذا النظام بتفتيت تلك الصخرة إلى صخور أصغر منها

فبدلاً من إنشاء نظام واحد كبير ملئ بالخواص والمميزات, نقوم بإنشاء عدد كبير من الأنظمة الصغيرة ويتواصل المستخدم معهم مما يُسهل التعديل على خواص النظام نظراً لأن كل نظام منهم قائم على ذاته ﻻ يعتمد على باقي الأنظمة

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

وبوجه عام نقوم بإستخدام النظام التقليدي في حالة:

  1. ﻻ يوجد عدد كبير من المطورين الذين يعملون على نفس المشروع( لدينا نفس قاعدة الكودcode base)
  2. ﻻ يوجد عدد خارق من المستخدمين لهذا النظام, حيث أنه يستهدف شريحة معين

ونقوم بإستخدام نظام الخدمات المصغرة في حالة

  1. تتوقع عدد كبير من المطورين للعمل على نفس المشروع ولفترات طويلة
  2. تتوقع عدد كبير من المستخدمين

 

  • 0
نشر

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

monolith_1-monolith-microservices.70b547e30e30b013051d58a93a6e35e77408a2a8.png.8f8ae85b89ad3780c305db908af6057c.png

ولكن ما المفيد من هذه التقنية

  • السرعة Agility: حيث أن من خلال ال microservices يعمل الفريق بشكل مستقل وبتركيز أكثر على خدمة واحدة بدون الإرتباط ببقية المشروع مما يفيد ذلك في زيادة سرعة التطوير
  • سهولة التمدد: حيث يمكن لكل microservice من التمدد حتى تلائم متطلبات المشروع دون الإرتباط microservices الأخرى
  • سهولة النشر Easy Deployment : بالإضافة لسهولة استخدام ال CI و ال CD 
  • كما أن يمكنك لمطوري ال microservice استخدام الأدوات والتقنيات التي يفضلونها دون الإرتباط بال microservices الأخرى
  • ومن أكثر مميزات هذه التقنية هو إمكانية استخدام نفس الكود لل microservice في مشروع آخر أي يمكنك استخدام خدمة في عدة مشاريع مختلفة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...