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

السؤال

Recommended Posts

  • 0
نشر
بتاريخ 9 ساعة قال Asaad Kasas:

ماهي Microservices وكيف تتجلى فائدها لفريق العمل البرمجي على موقع مثلا ؟؟

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

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

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

ملحوظة:

النظام الاعتيادي كان يتم فيه تطوير النظام كاملاً في مشروع واحد كله مترابط وكل جزء فيه يعتمد على الأجزاء الأخرى.

فإذا أردنا المقارنة بينهما، فنشبههما بمصنعين

الأول: عبارة عن ورشة ضخمة فيها جميع الخدمات تحت هذه الورشة

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

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

بتاريخ 9 ساعة قال Asaad Kasas:

وماهي البرامج التي تقدم مثل هذه الخدمة 

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

 

  • 0
نشر

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

لا توجد برامج بعينها تقدم هذه الخدمة، لكن توجد برامج وأدوات تدعم التطوير بهذه التقنية ك:

  • Docker: يوفر حاويات خفيفة لتشغيل الخدمات المصغرة بشكل معزول ومستقل.
  • Kubernetes: نظام لأتمتة نشر، توسيع نطاق، وإدارة تطبيقات الحاويات، مثالي لإدارة تطبيقات الخدمات المصغرة على نطاق واسع.
  • Istio: خدمة ليست مفتوحة المصدر توفر طريقة سهلة لإدارة الشبكات المعقدة للخدمات المصغرة مع توفير المصادقة، الرصد، والسياسات المركزية.
  • Spring Boot: إطار عمل شهير لتطوير الخدمات المصغرة باستخدام Java.

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

يمكنك الاطلاع أكثر من هنا:

  • 0
نشر

ما هي الـMicroservices؟
الـMicroservices هي نهج معماري في تطوير البرمجيات يقوم على تقسيم التطبيق إلى مجموعة من الخدمات الصغيرة والمستقلة، كل خدمة تعمل على عملية واحدة وتتواصل مع الخدمات الأخرى عبر واجهة برمجة التطبيقات (API). هذا النهج يُمكّن من تطوير ونشر وصيانة كل خدمة بشكل مستقل عن الخدمات الأخرى.

عند جمع هذه الخدمات في واجهة واحدة لتكوين التطبيق بالكامل حيث يتعامل المستخدم مع واجهة التطبيق وحيدة لكن كل خدمة تنفذ بشكل مستقل عن الاخرى ويمكن ان يكون هناك تخاطب بين بعض هذه الخدمات وتتمثل بالشكل التالي:

microservices1.jpg.92d74f0935bb02da078c122ce42eed32.jpg

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

مثال على التطبيق العملي لها:
في تطبيق التجارة الإلكترونية، بدلاً من وجود خادم واحد كبير يحتوي على كل الوظائف، يمكن تقسيم الوظائف إلى خدمات مستقلة مثل:
• خدمة المستخدمين (User Service): تتعامل مع بيانات المستخدمين.
• خدمة الطلبات (Order Service): تتعامل مع عمليات الشراء والطلبات.
• خدمة الاصناف (Catalog Service): تتعامل مع المنتجات والمخزون.

• خدمة البحث (Search Service): تتعامل مع المنتجات والمخزون.

UntitledDiagram.drawio.png.326aa89d0691310a5b017d445483940c.png

 

التواصل بين الخدمات:

يمكن للخدمات التواصل عبر:
• رسائل الوسيط (Message Broker): حيث تُرسل الخدمات الطلبات عبر قناة رسائل مشتركة حيث الredis يعتبر نوع منه.

redis.png.02520a797a6b22493a4f7e1ebb4e6eea.png


• الاتصال المباشر: حيث تتواصل الخدمات مباشرةً مع بعضها البعض.

rawio.png.6e4386be9f57afbc9896ad764f530b07.png

 

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...