البرنامج التعليمي للخدمات المصغرة: ما هو، Archiالبنية والمثال

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

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

يشير المصطلح "micro" إلى حجم الخدمة الصغيرة التي يجب أن تكون قابلة للإدارة بواسطة فريق تطوير واحد (من 5 إلى 10 مطورين). في هذه المنهجية، يتم تقسيم التطبيقات الكبيرة إلى أصغر وحدات مستقلة.

ما هو متجانسة Archiتكنولوجيا؟

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

دعونا نناقش مثالاً لمتجر للتجارة الإلكترونية في سياق الهندسة المعمارية المتجانسة.

متكشف عن وحدة متراصة Architecture
متكشف عن وحدة متراصة Archiبنية تطبيق التجارة الإلكترونية

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

ما هي الخدمة المصغرة Archiتكنولوجيا؟

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

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

Microservices Architecture
Microservices Architecture

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

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

الخدمات المصغرة مقابل المتجانسة Architecture

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

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

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

SOA مقابل الخدمات الصغيرة

يتم الحفاظ على خدمات SOA في المؤسسة من خلال السجل الذي يعمل كقائمة دليل. تحتاج التطبيقات إلى البحث عن الخدمات في السجل واستدعاء الخدمة.

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

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

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

فيما يلي مقارنة تفصيلية بين SOA وMicroservices

معامل الخدمية Microservices
نوع التصميم في SOA، تتعرض مكونات البرنامج للعالم الخارجي لاستخدامها في شكل خدمات. تعد الخدمة الصغيرة جزءًا من SOA. إنه تطبيق SOA.
التبعية وحدات الأعمال تعتمد. إنهم مستقلون عن بعضهم البعض.
حجم البرنامج حجم البرنامج أكبر من أي برنامج تقليدي يكون حجم البرنامج دائمًا صغيرًا في الخدمات الصغيرة
كومة التكنولوجيا مكدس التكنولوجيا أقل مقارنة بـ Microservice. يمكن أن تكون حزمة تكنولوجيا الخدمات الصغيرة كبيرة جدًا
طبيعة التطبيق متجانسة في الطبيعة كومة كاملة في الطبيعة
مستقلة والتركيز تم تصميم تطبيقات SOA لأداء مهام عمل متعددة. لقد تم تصميمها لأداء مهمة عمل واحدة.
التنفيذ تستغرق عملية النشر وقتًا طويلاً. النشر بسيط ويستغرق وقتًا أقل.
الفعالية من حيث التكلفة أكثر تكلفة فعالة. Less فعاله من حيث التكلفه.
التوسعة Less مقارنة بالخدمات المصغرة. قابلة للتطوير بدرجة عالية.
منطق الأعمال يتم تخزين مكونات منطق الأعمال داخل نطاق خدمة واحد، بروتوكولات سلكية بسيطة (HTTP مع XML JSON) يتم تشغيل واجهة برمجة التطبيقات (API) باستخدام SDKs/العملاء يمكن أن يعيش منطق الأعمال عبر نطاقات ناقل خدمة المؤسسة مثل الطبقات بين البرامج الوسيطة للخدمات

أدوات الخدمات المصغرة

1) Wiremock: اختبار الخدمات المصغرة

WireMock هي مكتبة مرنة للاستهزاء بخدمات الويب والاستهزاء بها. يمكنه تكوين الاستجابة التي يتم إرجاعها بواسطة HTTP API عندما يتلقى طلبًا محددًا. كما أنها تستخدم لاختبار الخدمات الصغيرة.

تحميل الرابط:http://wiremock.org/

2) عامل الميناء

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

تحميل الرابط:https://www.docker.com/

3) هيستريكس

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

وصلة التحميل:https://github.com/Netflix/Hystrix

أفضل ممارسات الخدمات المصغرة Architecture

  • مخزن بيانات منفصل لكل خدمة صغيرة
  • احتفظ برمز بمستوى مماثل من النضج.
  • بناء منفصل لكل خدمة مايكرو.
  • علاج دائما – شديدة مثل عديمي الجنسية.

ملخص

  • الخدمات المصغرة هي نمط معماري موجه نحو الخدمة حيث يتم بناء التطبيقات كمجموعة من وحدات الخدمة المستقلة الأصغر حجمًا.
  • خدمة مصغرة Archiالتقنية هي أسلوب تطوير معماري يسمح ببناء تطبيق كمجموعة من الخدمات المستقلة الصغيرة المطورة لمجال الأعمال.
  • الهندسة المعمارية المتجانسة تشبه حاوية كبيرة يتم فيها تجميع جميع مكونات البرنامج الخاصة بالتطبيق في حزمة واحدة
  • في الخدمة المصغرة، يجب أن تكون كل وحدة من التطبيق بأكمله هي الأصغر، ويجب أن تكون قادرة على تحقيق هدف عمل محدد واحد
  • في الهندسة المعمارية المتجانسة، يمكن لقاعدة التعليمات البرمجية الكبيرة أن تبطئ عملية التطوير بأكملها. يمكن أن تستغرق الإصدارات الجديدة شهورًا. صيانة التعليمات البرمجية صعبة
  • هناك نوعان من الخدمات المصغرة هما 1) عديمة الجنسية 2) ذات حالة
  • الخدمات المصغرة في Java يعتمدون على بعضهم البعض، وسيتعين عليهم التواصل مع بعضهم البعض. يساعدك على التركيز على ميزة معينة واحتياجات العمل
  • الهندسة المعمارية الموجهة نحو الخدمة والمعروفة باختصار باسم SOA هي تطور للحوسبة الموزعة استنادًا إلى نموذج تصميم الطلب أو الرد للتطبيقات المتزامنة وغير المتزامنة
  • في SOA، تتعرض مكونات البرنامج للعالم الخارجي لاستخدامها في شكل خدمات بينما تعد Micro Service جزءًا من SOA. إنه تطبيق SOA
  • تعد Wiremock وDocker وHystrix من أدوات الخدمات المصغرة الشائعة

تلخيص هذه التدوينة بـ: