بنية الخدمات المصغرة: سمة مميزة للكفاءة
نشرت: 2022-08-02لم تعد الأنظمة الأحادية مجدية في الوقت المعاصر للحاويات والحوسبة السحابية. كان هناك نمو في تعقيد أنظمة البرامج في السنوات الأخيرة ، ويزداد إنشاء الأنظمة المتجانسة بشكل متزايد وصيانتها.
يتم إنتاج مكونات النظام وتجميعها كوحدة واحدة في نظام أحادي. سيتعين إعادة نشر النظام بأكمله إذا تم تغيير مكون واحد. هذا يجعله أكثر صعوبة في القياس وأقل تنوعًا. يمكن أن يكون الهيكل المترابط والمترابط لنظام قائم بذاته جهدًا صعبًا للمطورين عند إنشاء تطبيقات شاملة. تجعل الأنظمة المتأثرة أيضًا من الصعب إجراء تعديلات رئيسية أو اعتماد مكدسات تقنية جديدة أو ترقيات وتحديثات السفن. تحدد البنية الموجهة للخدمة ، والتي تتكون من مجموعة متنوعة من الخدمات التي قد تتواصل مع بعضها البعض داخل نظام ، إطار العمل للانتقال بعيدًا عن البرمجة المتجانسة في المقام الأول.
كانت بنية الخدمات المصغرة هي الخطوة التالية في المجال ، وكانت وسيلة أكثر توحيدًا ، لكنها محببة ، لتأسيس إستراتيجية تطوير برامج ناجحة. ظهرت عبارة "Microservice Architecture" خلال السنوات العديدة الماضية لوصف تقنية معينة لبناء أنظمة برمجية كمجموعات من الخدمات القابلة للنشر بشكل مستقل. على الرغم من عدم وجود تعريف محدد لهذا النمط المعماري ، إلا أن هناك العديد من السمات المتشابهة المحيطة بالمنظمة حول القدرة على العمل ، والنشر الآلي ، والذكاء في نقاط النهاية ، والإدارة اللامركزية للغات والبيانات.
إنه نهج تطوير برمجي يقسم النظام إلى أقسام أصغر مستقلة ثم يربطها معًا. يتم تجميع الخدمات المستقلة معًا لتلبية المتطلبات المتخصصة لقطاع معين. لاحظ كل من Spotify و Amazon و PayPal و Netflix و Twitter هذا الاكتشاف الجديد ويقومون بالإعلان عنه على نطاق واسع.
جدول المحتويات
ما هي بنية الخدمات المصغرة؟
أصبحت عبارة "Microservice Architecture" أكثر شيوعًا خلال السنوات القليلة الماضية للإشارة إلى نهج محدد لهندسة البرامج كمجموعات من الخدمات التي يمكن نشرها بشكل مستقل عن بعضها البعض. على الرغم من حقيقة أن هذا النمط المعماري لا يمكن تحديده بدقة ، إلا أنه يشترك في بعض الخصائص مع الأساليب المعمارية الأخرى. وتشمل هذه التنظيمات على أساس القدرة على العمل ، والنشر الآلي ، والذكاء في نقاط النهاية ، والتحكم اللامركزي في اللغات والبيانات. بعبارة أخرى ، فإن قدرة الخدمات المصغرة على العمل بشكل مستقل هي القوة الدافعة وراء صعودها إلى قمة مشهد تطوير البرمجيات.
تعد بنية الخدمات المصغرة ، التي يشار إليها بشكل متكرر باسم الخدمات المصغرة ، نموذج تصميم يتم استخدامه أثناء تطوير برامج التطبيقات. تجعل الخدمات المصغرة من الممكن تقسيم تطبيق كبير إلى عدة أجزاء صغيرة قائمة بذاتها ، كل منها مسؤول عن مجموعة المهام الفريدة الخاصة به. قد يتسبب طلب مستخدم واحد في قيام أحد التطبيقات المبنية على خدمات مصغرة بإجراء العديد من المكالمات إلى الخدمات المصغرة الداخلية الخاصة به من أجل تكوين استجابته.
تعتبر الحاويات مثالاً رائعًا على بنية الخدمات المصغرة لأنها تحررك من الحاجة إلى القلق بشأن تبعيات الخدمات ، مما يتيح لك التركيز على تطوير الخدمات بأنفسهم. غالبًا ما تكون الحاويات هي الأداة المفضلة لتطوير تطبيقات السحابة الأصلية للأنظمة الأساسية المعاصرة في شكل خدمات مصغرة. يشير مصطلح "بنية الخدمات المصغرة" إلى نوع من بنية التطبيق حيث يتم إنشاء التطبيق نفسه كمجموعة من الخدمات. إنه يوفر إطار عمل لبناء ونشر وإدارة المخططات والخدمات المعمارية للخدمات المصغرة بشكل مستقل.
الحاجة إلى تطوير بنية الخدمات المصغرة وقيود الهندسة المعمارية المتجانسة

1. تحجيم التطبيق
نظرًا لأن الأعمال الناجحة على نطاق الويب تشهد توسعًا أسيًا ، يجب أن تسمح برامجها أيضًا بقابلية التوسع الأفقي الكبيرة. في بعض الأحيان ، يجب فقط تحجيم جزء من البرنامج ثقيل وحدة المعالجة المركزية أو الإدخال / الإخراج ومعالجته بشكل فردي (يتم تنفيذه باستخدام البرمجة متعددة اللغات). يعمل البرنامج المتآلف ككيان واحد ويتم إنشاؤه باستخدام لغة برمجة واحدة و Tech Stack. لتحقيق القياس الأفقي ، من الضروري توسيع نطاق التطبيق بأكمله. نظرًا لأن البرنامج الأحادي يدعم لغة برمجة واحدة فقط ، فمن المستحيل تطوير وحدة واحدة بلغة برمجة مختلفة أو Tech Stack.
2. سرعة التنمية
من أجل تقليل الوقت المستغرق للوصول إلى السوق ، فإن كل عمل تجاري في الوقت الحاضر يرغب في تطوير سريع للميزات. في تطبيق Monolithic كبير ومعقد وأحيانًا يصل إلى عدة ملايين من السطور ، تكون إضافة ميزات جديدة بطيئة للغاية بسبب الحمل المعرفي الهائل الواقع على المطور. ترتبط وحدات البرامج المتجانسة الضخمة بإحكام ، مما يجعل تطوير وظائف جديدة أكثر صعوبة. وبالتالي ، فإن إضافة وظائف جديدة إلى برنامج متآلف غالبًا ما تكون بطيئة ومكلفة.
3. توسيع نطاق التنمية
من أجل الحصول على ميزة تنافسية أو للاستيلاء على ثمار منخفضة ، تسعى الشركات في كثير من الأحيان إلى موازاة التنمية من خلال توظيف المزيد من المطورين. لا يمكن للمطورين العمل بشكل مستقل على قاعدة رمز ضخمة ومتجانسة ومتصلة بشكل وثيق ويتطلبون في كثير من الأحيان مزامنة إضافية ويقظة لتجنب التدخل في عمل بعضهم البعض. لا تؤدي إضافة مطورين إضافيين إلى زيادة الميزات ، وقد يؤدي أحيانًا إلى تقليل الميزات. وبالمثل ، نظرًا للحمل المعرفي العالي المطلوب لفهم قاعدة الشفرة المتجانسة بالكامل ، عادةً ما يستغرق المجندون الجدد أو الخريجون الجدد قدرًا كبيرًا من الوقت لإنشاء سطورهم الأولى من التعليمات البرمجية الإنتاجية. في عام 2008 ، أجريت مقابلة مع شركة اتصالات مقرها برلين حيث أخبرني المدير الفني بابتسامة معتدلة أن قاعدة كود الشركة C ++ تضم ملايين الأسطر وأن المهندسين الجدد لا يمكنهم إنتاج كود إنتاجي إلا بعد أربعة إلى ستة أشهر.
4. الافراج عن دورة
عادةً ما تكون دورة إصدار البرامج المتجانسة الكبيرة طويلة للغاية ، وتتراوح من ستة إلى عامين ونصف العام ، مع تأخير من بضعة أشهر إلى عدة سنوات نظرًا لحجمها. غالبًا ما تضع دورات الإصدار الكبيرة الشركة في وضع غير مؤاتٍ تنافسيًا في العصر الحديث ، حيث يمكن لمنافس جديد دخول السوق خلال فجوة الإصدار.
5. النمذجة
في Monolithic Architecture ، يكون الحاجز بين الوحدات عادةً واجهة داخلية. بمجرد زيادة حجم البرنامج ، يبدأ الفصل بين الوحدات في الانهيار. وبالتالي ، غالبًا ما يتم ربط الوحدات النمطية في الهندسة المعمارية المتجانسة بإحكام بدلاً من الترابط غير المحكم والتماسك للغاية. إذا قارنا تطوير البرمجيات بالمجتمع ، فإن النمذجة المتجانسة تكون مماثلة للمبادئ الأخلاقية والدينية ، والتي لا يمكن أن تضمن القانون والنظام في المجتمع.
6. التحديث
تتطلب التطبيقات الناجحة الحالية التحديث لعدة أسباب (مثل الاستفادة من الأجهزة الحديثة أو المتصفح أو عرض النطاق الترددي للشبكة أو Tech Stack أو جذب مطورين جيدين). يمكن أن يكون تحديث برنامج متآلف مكلفًا ويستغرق وقتًا طويلاً لأنه يتطلب تحديثًا كبيرًا للتطبيق بأكمله دون التأثير على الخدمة.
أنواع الخدمات المصغرة
الخدمات المصغرة التفاضلية والمتكاملة هما نوعان متميزان من الخدمات المصغرة.
أ. التفاضليه
في هذا الشكل من الهندسة المعمارية ، تتحلل الهندسة المعمارية إلى خدمات مستقلة قادرة على الفصل في معاملات. ينتج عن هذا توزيع معاملة واحدة على العديد من الخدمات.
ب. متكامل
تم تصميم تطبيقات الخدمات المصغرة لدمج العديد من الخدمات المصغرة في تجارب مستخدم فردية. تغطي هذه البرامج العديد من الاحتياجات المتميزة ، بما في ذلك إدارة مستوى الخدمة ، والتزويد حسب الطلب ، والتكوين الديناميكي.
خصائص الخدمات المصغرة
1. مستقل
تسمح بنية الخدمات المصغرة بإنشاء كل مكون خدمة ونشره وإدارته وقياس حجمه بشكل منفصل عن الخدمات الأخرى. لا يتعين على الخدمات مشاركة أي من التعليمات البرمجية الخاصة بها أو كيفية القيام بالأشياء مع الخدمات الأخرى. يتم إجراء جميع الاتصالات بين الأجزاء المختلفة من خلال واجهات برمجة التطبيقات المحددة جيدًا.
2. متخصص

تعتمد كل خدمة على مجموعة مختلفة من المهارات ومشكلة مختلفة. بمرور الوقت ، إذا أضاف المطورون المزيد من التعليمات البرمجية إلى خدمة ما ، فقد يتم تقسيم الخدمة إلى خدمات أصغر.
3. المكونات عبر الخدمات
على الرغم من أن معماريات الخدمات المصغرة ستستفيد من المكتبات ، إلا أن الطريقة الرئيسية التي سيتم بها تكوين برامجهم الخاصة هي عن طريق تحليلها إلى خدمات. المكتبات عبارة عن مكونات مرتبطة ببرنامج ويتم استدعاؤها باستخدام استدعاءات وظائف الذاكرة ، في حين أن الخدمات عبارة عن مكونات خارج العملية تتواصل مع آلية مثل طلب خدمة الويب أو استدعاء إجراء عن بُعد. نحن نعرّف المكتبات على أنها مكونات مرتبطة ببرنامج ويتم استدعاؤها باستخدام استدعاءات الوظائف في الذاكرة. (هذه فكرة مميزة عما يشار إليه باسم كائن الخدمة في العديد من أنظمة OO. على عكس المكتبات ، يمكن نشر الخدمات بشكل مستقل ، وهو أحد الأسباب الرئيسية لاستخدامها كمكونات بدلاً من مكتبات. واحد إضافي تتمثل فائدة استخدام الخدمات بدلاً من المكونات في إنشاء واجهة مكون أكثر شفافية. لا توجد تقنية جيدة لإنشاء واجهة منشورة صريحة في غالبية لغات البرمجة.
عادةً ما يكون التوثيق والانضباط هما الشيءان الوحيدان اللذان يمنعان العملاء من خرق تغليف أحد المكونات ، مما قد يؤدي إلى اقتران شديد للغاية بين المكونات. من خلال استخدام بروتوكولات الاتصال عن بُعد الصريحة ، تسهل الخدمات على مستخدميها تجنب ذلك. استخدام خدمات من هذا النوع له بعض العيوب. نظرًا لأن المكالمات التي يتم إجراؤها عن بُعد أكثر تكلفة من تلك التي يتم إجراؤها داخل نفس العملية ، فإن واجهات برمجة التطبيقات المستخدمة عن بُعد يجب أن تكون أكثر دقة ، مما قد يجعل استخدامها أكثر صعوبة. عندما تتجاوز حدود عملية ما ، يكون من الصعب إجراء تحولات سلوكية ، مما يجعل الأمر أكثر صعوبة إذا كنت بحاجة إلى تعديل طريقة توزيع المسؤوليات بين المكونات.
4. المنتجات وليس المشاريع
تتبع غالبية مبادرات تطوير التطبيقات التي نواجهها نموذجًا يسمى مشروعًا ، حيث يكون الهدف الأساسي هو تسليم جزء من البرنامج الذي يعتبر بعد ذلك مكتملًا. بعد انتهاء المشروع ، يتم تسليم البرنامج إلى منظمة صيانة ، ويتفكك الفريق المسؤول عن إنشائه.
عادةً ما يبتعد مؤيدو الخدمات المصغرة عن هذه البنية لصالح المفهوم القائل بأن الفريق يجب أن يمتلك منتجًا طوال فترة حياته بالكامل. يعتبر مفهوم أمازون "أنت تبني ، أنت تشغله" ، والذي يفترض فيه فريق التطوير المسؤولية الكاملة عن البرنامج أثناء استخدامه في الإنتاج ، مصدر إلهام بارز لذلك. يؤدي ذلك إلى جعل المطورين يتعاملون يوميًا مع كيفية عمل برامجهم في الإنتاج ويزيد من التواصل مع مستخدميهم ، نظرًا لأنهم مطالبون بتحمل بعض العبء على الأقل لتوفير الدعم للبرنامج.
5. الحكم اللامركزي
بالإضافة إلى ذلك ، تفضل فرق تطوير الخدمات المصغرة نهجًا متميزًا للمعايير. إنهم يفضلون توفير أدوات مفيدة قد يستخدمها المطورون الآخرون لمواجهة التحديات المماثلة لتلك التي يواجهونها ، بدلاً من الاعتماد على مجموعة من المعايير المقننة. عادةً ما يتم اشتقاق هذه الأدوات من عمليات التنفيذ ومشاركتها مع مجتمع أكبر ، أحيانًا ، ولكن ليس دائمًا باستخدام نموذج داخلي مفتوح المصدر. الآن بعد أن أصبح git و github هما نظام التحكم الفعلي في الإصدار المفضل ، أصبحت تقنيات المصدر المفتوح سائدة بشكل متزايد داخل المؤسسات.
Netflix هو مثال رائع لشركة تلتزم بهذا المبدأ. تساعد مشاركة التعليمات البرمجية القيمة ، والأهم من ذلك ، التي تم اختبارها في المعركة كمكتبات ، المطورين الآخرين على التعامل مع المشكلات المماثلة بطريقة مماثلة ، مع السماح لهم باختيار طريقة مختلفة إذا لزم الأمر. تميل المكتبات المشتركة إلى التركيز على الاهتمامات المشتركة لتخزين البيانات ، والتواصل بين العمليات ، وأتمتة البنية التحتية ، كما نوقش بمزيد من التفصيل أدناه.
بالنسبة لمجتمع الخدمات المصغرة ، تعتبر النفقات غير مرغوب فيها بشكل خاص.
6. المعايير التي تم اختبارها في المعركة والمعايير المطبقة
إنها مفارقة إلى حد ما لأن فرق الخدمات المصغرة تفضل تجنب نوع المعايير التي يتم فرضها بصرامة والتي تفرضها مجموعات تصميم الأعمال ، ومع ذلك ستستخدم وتدعو إلى معايير مفتوحة مثل HTTP و ATOM وتنسيقات microformat الأخرى.
التمييز الأساسي هو كيفية إنتاج المعايير وتنفيذها. لا تصبح المعايير التي تتحكم فيها منظمات مثل IETF معايير حتى يكون هناك العديد من التطبيقات الحية لها في العالم الأكبر ، والتي غالبًا ما تكون نتيجة لمبادرات مفتوحة المصدر ناجحة.
هذه المعايير هي عالم مختلف عن غالبية معايير الأعمال ، والتي يتم إنتاجها بشكل متكرر من قبل أشخاص ذوي خبرة محدودة في البرمجة الحديثة أو تأثير مفرط من البائعين.
7. أتمتة البنية التحتية
أحد الآثار الجانبية التي رأيناها لمزيد من الأتمتة كنتيجة للتسليم والنشر المستمر هو إدخال أدوات مفيدة لمساعدة المطورين وقوم العمليات. الأدوات اللازمة لإنتاج المصنوعات اليدوية ، والحفاظ على قواعد البيانات ، وبدء الخدمات الأساسية أو لإضافة المراقبة القياسية وتسجيل الأشجار منتشرة بشكل نسبي في الوقت الحاضر. أفضل مثال على الويب هو بلا شك مجموعة Netflix من الأدوات مفتوحة المصدر ، على الرغم من وجود أدوات أخرى خاصة Dropwizard استخدمناها على نطاق واسع.
تحويل فكرة التطبيق الخاص بك إلى واقع
دعونا نبني تطبيقًا جديدًا معًا
نظرة عامة على آلية الاتصال في بنية الخدمات المصغرة
يتم تنفيذ الخدمات التي تشكل بنية الخدمات المصغرة على عدد من الخوادم المختلفة. يتم استخدام بروتوكولات مثل HTTP و AMQP و TCP لتسهيل الاتصال بين هذه الخدمات العديدة. البروتوكولات الأكثر انتشارًا هي HTTP / REST والمراسلة غير المتزامنة. غالبًا ما يتم استخدام بروتوكول HTTP بواسطة واجهة برمجة تطبيقات REST (API) للخدمات عبر الإنترنت. يمكن للعملاء الوصول إلى موارد التطبيق وتغييرها من خلال استخدام محدد موقع موارد موحد جنبًا إلى جنب مع طرق HTTP مثل GET و POST و PUT و DELETE (URL). تعمل واجهة برمجة تطبيقات REST (API) كنقطة دخول إلى وظائف التطبيق. يقوم العملاء بإيصال احتياجاتهم إلى الخدمات عن طريق إرسال الطلبات إلى واجهات برمجة التطبيقات. العملاء لديهم خيار الاتصال بالخدمات المصغرة مباشرة أو بالانتقال عبر بوابة API.
يتم تحديد نقطة دخول واحدة لجميع الطلبات المقدمة إلى الخدمات باستخدام نمط بوابة API. تقوم بوابة واجهة برمجة التطبيقات (API) ، عند تلقي طلب من العميل ، بتوجيه الطلب إلى الخدمة المناسبة.
يحتوي نمط بوابة API على عدد من المتغيرات ، أحدها هو الواجهة الخلفية لنمط الواجهة الأمامية. ينشئ هذا التصميم بوابة واجهة برمجة تطبيقات مميزة لكل نوع من أنواع العملاء (على سبيل المثال ، بوابة واحدة لعملاء الأجهزة المحمولة وأخرى لتطبيقات الويب).
ينصح بالممارسة للحفاظ على مستويات الاتصال منخفضة بين الخدمات المختلفة. يتفوق الاتصال غير المتزامن على الاتصال المتزامن في المواقف التي يكون فيها الاتصال أمرًا ضروريًا. ليس من الضروري للخدمة التي أرسلت الطلب انتظار الرد قبل متابعة عملياتها.
عند دمجها في قاعدة البيانات ، تعد قوائم انتظار الرسائل وأنظمة البث طرقًا جيدة لتمكين الاتصال غير المتزامن. بالإضافة إلى ذلك ، عندما توفر هذه الأنظمة دلالات المعاملات لعملية البيانات وإرسال رسالة ، فإنها تكون قادرة على تلبية كلا هذين المطلبين. لهذا السبب ، أصبح نشر الخدمات المصغرة أسهل وأكثر قابلية للتوسع. عند استخدام واجهات برمجة تطبيقات REST فقط ، يُفرض أن يكون الاتصال بين الخدمات المصغرة متزامنًا ، مما يمنع النمو غالبًا.
ما هي بنية الخدمات المصغرة المستخدمة؟
الخدمات المصغرة هي أسلوب معماري عصري يهدف إلى تصميم أنظمة معقدة كمجموعات من الأدوات البرمجية ذات الحبيبات الدقيقة والمرتبطة بشكل فضفاض والتي تسمى الخدمات المصغرة ؛ تنفذ كل خدمة مصغرة جزءًا صغيرًا أو حتى وظيفة واحدة من منطق الأعمال الخاص بالتطبيقات. تكتسب الخدمات المصغرة شعبية لأنها تهدف إلى تصميم أنظمة معقدة كمجموعات من الأدوات البرمجية الدقيقة والمرتبطة بشكل فضفاض. غالبًا ما يتم استخدام الخدمات المصغرة من أجل تسريع عملية تطوير التطبيق.
تم تطوير فكرة المصغر استجابةً للبنية التحتية المتجانسة التي بنيت عليها غالبية المؤسسات في البداية ، خاصةً إذا كان العمل المعني يعمل لمدة عشر سنوات على الأقل. يتضمن كل مكون من مكونات بنية الخدمات المصغرة الميزات التالية بدلاً من التصميم الأحادي:
- وحدة المعالجة المركزية فريدة من نوعها
- نظام التشغيل الخاص بها وبيئة وقت التشغيل
- في كثير من الحالات ، سيعمل عليها فريق متخصص للتأكد من أن كل خدمة مميزة عن الخدمات الأخرى.
بسبب هذا التصميم ، يمكن لكل خدمة:
- تنفيذ إجراء فريد من نوعه
- التواصل بشكل مستقل مع بعضهم البعض دون الحاجة إلى الاعتماد على اتصال الخدمات المصغرة الأخرى أو التطبيق ككل.
هناك اعتماد واسع النطاق لهياكل الخدمات المصغرة المستندة إلى Java ، لا سيما تلك التي تم إنشاؤها باستخدام Spring Boot. بالإضافة إلى ذلك ، غالبًا ما تتم مقارنة الخدمات المصغرة والبنية الموجهة للخدمات مع بعضها البعض. كلا النهجين لهما نفس الهدف ، وهو تقسيم البرامج الكبيرة إلى أجزاء أكثر قابلية للإدارة ، لكن منهجيتهما مختلفة. بالإضافة إلى ذلك ، تتعرض العديد من الشركات لضغوط من منافسيها لإجراء تعديلات على أنظمتها بأسرع ما يمكن مع تقليل تأثير هذه التعديلات على توفر أنظمتها. وهذا يتطلب تصميمات وأساليب معمارية وتقنيات تطوير مناسبة. تقدم هندسة البرمجيات مجموعة متنوعة من النماذج التي يمكنها تلبية هذه الاحتياجات جزئيًا. تقوم هذه النماذج بتقسيم أنظمة البرامج إلى وحدات برمجية دقيقة ، مما يحسن من نمطية ، وقابلية الصيانة ، وإعادة الاستخدام ، ونتيجة لذلك ، يقلل من مقدار الوقت اللازم لطرح منتج في السوق.

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

أ) أنماط التحلل
- يفصل الحاجز بين الموارد الهامة ، مثل تجمع الاتصالات والذاكرة ووحدة المعالجة المركزية ، لكل حمل عمل أو خدمة. من خلال نشر الحواجز ، لا يمكن لحمل عمل واحد (أو خدمة) استخدام جميع الموارد ، مما يؤدي إلى تجويع الآخرين. يعزز هذا النهج متانة النظام من خلال القضاء على حالات الفشل المتتالية التي تسببها خدمة واحدة. يُطلق على هذا النمط اسم Bulkhead لأنه يشبه الأقسام المقطوعة من بدن السفينة. تقسيم مثيلات الخدمة إلى مجموعات متميزة ، بناءً على احتياجات العميل والتوفر. تساعد هذه البنية في عزل الأخطاء ، وتسمح لك بالحفاظ على قدرة الخدمة لبعض المستخدمين ، حتى أثناء الانهيار.
- تقوم Sidecar بتثبيت مكونات مفيدة لأحد التطبيقات كحاوية أو عملية مميزة لتمكين العزل والتغليف. يمكن أن يمكّن هذا النمط أيضًا التطبيقات من أن تتكون من مكونات وتقنيات متباينة. يُطلق على هذا النمط اسم Sidecar لأنه يشبه عربة جانبية مربوطة بدراجة نارية. في التصميم ، يقترن الجانب الجانبي بتطبيق أصلي ويقدم وظائف داعمة للتطبيق. وبالمثل ، فإن السيارة الجانبية تتبع نفس عمر التطبيق الأصلي ، حيث يتم بناؤها وإنهاؤها جنبًا إلى جنب مع الأصل. غالبًا ما يُشار إلى النمط الجانبي على أنه نمط الصاحب وهو آخر نمط تحلل نعرضه في المنشور.
- يدعم Strangler Fig إعادة هيكلة تدريجية لأحد التطبيقات ، عن طريق استبدال أجزاء معينة من الوظائف بخدمات جديدة تدريجيًا.

ب) أنماط التكامل
1. نمط الخدمة المصغرة بالسلاسل
سيكون هناك العديد من التبعيات للخدمات الفردية أو الخدمات المصغرة ، على سبيل المثال ، يعتمد بيع الخدمات المصغرة على منتجات الخدمات المصغرة وطلبها. سيساعدك نمط تصميم الخدمة المصغرة المتسلسلة في تقديم استجابة موحدة لطلبك. تتلقى الخدمة المصغرة 1 الطلب ثم تتواصل مع الخدمة المصغرة 2 ؛ قد تتواصل أيضًا مع خدمة ميكرو 3. جميع مكالمات الخدمة هذه متزامنة.
2. نمط المجمع
عند فصل النشاط التجاري إلى العديد من الأجزاء المنطقية الصغيرة من التعليمات البرمجية ، يصبح من الضروري النظر في كيفية دمج البيانات المقدمة من كل خدمة. لا يمكن تحميل العميل المسؤولية عن هذا.
يساعد نمط المُجمّع في معالجة هذه المشكلة. يصف كيف يمكننا دمج البيانات من عدة مصادر ثم إعطاء النتيجة النهائية للمستخدم. هذا ممكن بطريقتين:
- ستقوم الخدمة المصغرة المركبة بإجراء مكالمات لجميع الخدمات المصغرة الضرورية ، وتجميع البيانات وتغييرها ، ثم إعادتها.
- بصرف النظر عن تقسيم الطلب إلى عدة خدمات مصغرة ، قد تقوم بوابة API أيضًا بتجميع البيانات قبل إعطائها للمستهلك.
3. نمط الوكيل
نحن نقدم فقط الخدمات المصغرة عبر بوابة API. أسمح لـ GW بالحصول على خصائص API مثل الأمان وتصنيف واجهات برمجة التطبيقات. في هذه الحالة ، تتكون بوابة API من ثلاث وحدات API:
- Mobile API ، التي تنفذ واجهة برمجة التطبيقات لعميل الهاتف المحمول FTGO
- Browser API ، الذي ينفذ واجهة برمجة التطبيقات لتطبيق JavaScript الذي يعمل في المتصفح
- واجهة برمجة التطبيقات العامة ، التي تنفذ واجهة برمجة التطبيقات لمطوري الطرف الثالث
4. نمط الفرع
من الممكن أن تحتاج الخدمة المصغرة إلى الحصول على البيانات الضرورية من مجموعة متنوعة من المصادر المختلفة ، بما في ذلك الخدمات المصغرة الأخرى. نمط الخدمة المصغرة للفرع عبارة عن مزيج من أنماط تصميم المُجمِّع والسلسلة. وهو يتيح معالجة الطلبات / الاستجابة المتزامنة من خدمتين صغيرتين أو أكثر ويجمع بين مزايا كل منهما. قد تتكون الخدمة المصغرة التي يتم استدعاؤها من عدة خدمات مصغرة أخرى. يمكن أيضًا استخدام نمط Brach لاستدعاء سلسلة واحدة من الخدمات المصغرة أو عدة سلاسل من نفس النوع ، وفقًا لمتطلبات شركتك.

فوائد هندسة الخدمات المصغرة
في المستقبل المنظور ، ستتوسع الحاجة إلى الخدمات المصغرة بشكل كبير. باستخدام Microservices ، يتم تحديث البرامج القديمة. من خلال إعادة البناء ، يمكن تقسيم التطبيقات المتجانسة إلى خدمات مصغرة. يؤدي هذا إلى التحديث التدريجي للبرامج القديمة ويفضل إعادة تطوير المنتج من البداية باستخدام الخدمات المصغرة. قد يستفيد تطوير التطبيقات بشكل كبير من تصميم الخدمات المصغرة. المدرجة أدناه هي بعض الفوائد الرئيسية:
أ. إنتاجية فائقة
من الأسهل إنشاء التطبيق وصيانته إذا تم تقسيمه إلى أقسام أصغر مكتفية ذاتيًا. اعتمادًا على متطلباتها ، يمكن تطوير كل خدمة ونشرها وصيانتها بشكل مستقل باستخدام لغات البرمجة والتقنيات وبيئات البرامج المتعددة. نظرًا لأن كل مكون نمطي للتطبيق يحتوي على قاعدة بيانات أصغر ، فمن الأسهل إصدار خدمات متعددة وتوسيع نطاقها ونشرها واختبارها ، ويمكن تقسيم المهام ذات الصلة عبر فرق التطوير وتنفيذها بشكل متزامن.
ب. مرونة أفضل
كل خدمة مصغرة في بنية الخدمات المصغرة هي خدمة واحدة مصممة لخدمة ميزة في تطبيق ما وتنفيذ مهام منفصلة. ترتبط كل خدمة مصغرة بخدمات أخرى باستخدام واجهات بسيطة للتعامل مع مخاوف العمل. بعد إنشاء تصميم قائم على الخدمات المصغرة ، تصبح العملية الكاملة لاكتشاف المشكلات المتعلقة بالأداء ومعالجتها واضحة إلى حد ما.
علاوة على ذلك ، نظرًا لأن هذا الشكل من التصميم يوفر آلية معززة لعزل الأعطال مقارنةً بالوحدات النمطية الفردية ، فغالبًا ما لا تتأثر التطبيقات الأكبر بفشل واحد. لذلك ، على المدى الطويل ، تنخفض مخاطر التوقف في المستقبل بشكل كبير لأن المطورين لديهم نافذة من الوقت لإصدار تحديث أو استبدال وحدة دون الحاجة إلى إعادة تشغيل البرنامج بأكمله.
ج. قابلية التوسع الموسعة
قد تختار فرق DevOps مجموعة التكنولوجيا المثلى لكل وحدة دون القلق بشأن عدم التوافق إذا تم إنشاء كل خدمة باستخدام لغة برمجة أو تقنية مختلفة. يمكن تطوير الخدمات الفردية بشكل مستقل ، ويمكن إضافة مكونات جديدة دون توقف النظام أو إعادة نشره. بالإضافة إلى ذلك ، قد يتم تقسيم الخدمات عبر العديد من الخوادم ، مما يقلل من تأثير أداء المكونات شديدة المتطلبات. في غضون ثوانٍ ، يمكن أن تقدم الخدمات المصغرة قياسًا أفقيًا.
في الواقع ، النطاق الأفقي العالي هو الذي يجبر مؤسسات مثل Netflix و Spotify و Uber و Google على الانتقال من Monolithic إلى Microservice Architecture. ثانيًا ، إذا كانت إحدى الخدمات الصغيرة ثقيلة على وحدة المعالجة المركزية ، فيمكن كتابتها بلغة برمجة مُحسّنة لوحدة المعالجة المركزية (C / C ++ ، Rust) ، بينما يمكن كتابة الخدمات الصغيرة الأخرى بلغة مفسرة (Java ، PHP).
د. التكامل المستمر / التسليم المستمر (CI / CD)
يعتبر التسليم والتكامل المستمران عنصرين أساسيين لكل من المنهجية الرشيقة وفلسفة DevOps. يمكّن تصميم الخدمات المصغرة فريقًا متعدد الوظائف من إنشاء خدمات وتصحيحها واختبارها ونشرها وتحديثها بشكل مستقل ، مما سيؤدي إلى سرعة استكشاف الأخطاء وإصلاحها ونشرها على المدى الطويل.
ه. نمذجة
في Microservice Architecture ، يتكون الحاجز بين الخدمات المصغرة من واجهات (شبكة) مادية يصعب عبورها. وبالتالي ، فإن الخدمات المصغرة المصممة جيدًا توفر نمطًا نمطيًا "متصل بشكل غير محكم ، ومتماسك للغاية". إذا تمت مقارنة تطوير البرمجيات بالمجتمع ، فإن تعديل الخدمات المصغرة يمكن مقارنته بالقوانين الوطنية والدولية مع قوانين الشرطة / العقوبات. كما نعلم بالفعل ، يمكن للقواعد الوطنية والدولية الصارمة في كثير من الأحيان الحفاظ على النظام الاجتماعي.
F. الافراج عن الجدول الزمني
أجمل جانب في Microservice Architecture هو أنه يمكن نشر كل خدمة صغيرة على حدة. As a result, the Software Release Cycle for Microservice Applications is substantially shorter, and with CI/CD, many releases may be made each day.
Disadvantages of Microservices Architecture
أ. Increased Complexity of Communication Between the Services
When an application is broken up into smaller parts, it takes more time to send and receive messages. When handling requests between the different modules, developers have to be extra careful. Different systems might talk to each other in different ways, so there might be a need for an interpreter. This can make it harder to set up the whole system all at once. One of the biggest problems with microservices is that it might be hard to switch from a monolith to microservices because it's hard to manage.
This basically means that a lot of services made by a lot of different teams are deployed in a lot of different places, making it very hard to manage them. For example, Monolithic Architecture gives the same answer whether a Web app has a few thousand lines of code or several million lines of code (Enterprise Java or Ruby on Rails or PHP). But in Microservice Architecture, there are many possible solutions depending on the applications and use cases.
So, Microservice Architecture is doomed to fail if the wrong solution is used for the wrong application size or type (like putting a child's clothes on an adult man or the other way around). Also, it's hard to design Microservices because they have a lot more moving parts than Monoliths. Most of the time, a Microservice with bad design is worse than a Monolith.

ب. Complex Configuration
Despite being isolated and self-contained, a microservice must be regularly configured, especially when it is moved from development to test to staging to production. This arrangement may be rather intricate. Moreover, if a microservice must utilize other microservices, these bindings must be defined before deployment or even during runtime.
c. Context Boundary Translation
Despite the fact that it would be ideal if all microservices within a MOA used the same data structures and communication protocols to interact with one another, this is typically not the case.
د. More Assets in Return for More Autonomy
MOAs demand a great deal of horsepower. Remember that each MOA microservice has its own runtime environment and data storage. In some instances, even the most streamlined microservice might consume the same amount of resources as a single monolithic program.
e. Unfeasible for Small Applications
Larger applications can benefit from microservices design. However, implementation will likely be more time-consuming and difficult for smaller applications.
f. Relatively Complex Deployment
The deployment might be a difficult and complicated process. During deployment, coordination between numerous services would be required. Deploying a WAR file in a container would not be as straightforward as it sounds.
g. Distributed Debugging
The difficulty of troubleshooting a MOA including hundreds of microservices communicating in concert is one of the downsides of microservices. Tracing the course of a request into and out of a MOA is challenging due to the independence of each container. The MOA is opaque if there is no effective monitoring mechanism in place. Logging the internals of a MOA offers a limited perspective, but MOA monitoring requires a comprehensive view.
h. Contributes to Enhanced Fault Tolerance
Large applications with several services deployed have more fault tolerance in the event that any one module fails. Microservices allow applications to continue functioning even if one service fails. This is because the services are not tightly coupled.
i. Costly
An improper service partition might be expensive. For instance, if an application is improperly partitioned, the services are connected to a certain degree, and they will create numerous inter-service interactions via the network, which can degrade performance.
j. Greater Security Risks
Lastly, because microservices will reside across several environments, computers, and API requests, they provide a greater number of entry points for an attacker to compromise the system.
k. Communication Complexities
Microservices accomplish rigorous modularity and development independence via process/network barriers, as previously mentioned. The disadvantage is that services may only communicate over the physical network, resulting in increased network latency. Microservices may connect with one another in a variety of methods, including synchronous communication using REST, gRPC, and asynchronous communication using Message Queue and Message Broker, each of which has advantages and disadvantages.

Synchronous communication is simpler to build, but it might result in a Distributed Monolith. Asynchronous Communication via Messaging provides greater flexibility at the expense of increased implementation complexity. In Microservice Architecture, choosing the appropriate Communication channel based on the application is equally tough.
ل. التكوين المعقد
على الرغم من كونها معزولة ومكتفية ذاتيًا ، يجب تكوين الخدمة المصغرة بانتظام ، لا سيما عند نقلها من التطوير إلى الاختبار إلى التدريج إلى الإنتاج. قد يكون هذا الترتيب معقدًا إلى حد ما. علاوة على ذلك ، إذا كان يجب أن تستخدم خدمة مصغرة خدمات مصغرة أخرى ، فيجب تحديد هذه الارتباطات قبل النشر أو حتى أثناء وقت التشغيل.
أدوات الخدمات المصغرة
1. نظام التشغيل
أهم جانب في تطوير التطبيق هو وضع أساس متين له ، وهو أمر يتحمله نظام التشغيل. Linux هو مثال على هذا النوع من أنظمة التشغيل التي يتم استخدامها بشكل متكرر خلال عملية تطوير التطبيق. سيكون لديك حق الوصول إلى بيئة تنفيذ قائمة بذاتها عند استخدام حاويات Linux. يمنحك هذا القدرة على تنظيم مجموعة واسعة من الخدمات ، من التخزين والشبكات إلى الأمان والمصادقة.
2. لغات البرمجة
مع Emizentech ، يمكنك الآن توسيع مخزون البرمجة الخاص بك بسلاسة. هذه الأداة عملية ومحدثة. بشكل عام ، فهو مصمم للاستخدام مع جميع لغات البرمجة. بالإضافة إلى ذلك ، فهو متوافق مع الرمز الثانوي الذي يظهر على BEAM ، والذي يشار إليه أيضًا باسم Erlang Virtual Machine.
3. أدوات إدارة واختبار API (بوابات API)
تعد عملية بناء وإصدار واجهات برمجة التطبيقات ، وفرض معايير الاستخدام الخاصة بها ، وتقييد الوصول ، وتنمية مجتمع المطورين ، وجمع إحصاءات الاستخدام وتحليلها ، والإبلاغ عن الأداء ، كلها مكونات لإدارة API.
في الواقع ، تتكون منصة إدارة واجهة برمجة التطبيقات من العناصر التالية:
- ادوات المطورين
- بوابة
- إعداد التقارير والتحليلات
4. أدوات المراسلة (المراسلة وتدفق الأحداث)
من أجل إجراء الاتصالات ، يجب أن يستفيد نظام الخدمات المصغرة من خدمات مستقلة. هذا هو العامل الأساسي الذي يحدد ما تتطلبه قائمة انتظار الرسائل من مستخدميها. يعتبر كل من RabbitMQ و Apache Kafka من أكثر الحلول شيوعًا التي يتم استخدامها لغرض المراسلة.
LinkedIn مسؤول عن إنشاء التكنولوجيا المعروفة باسم Apache Kafka ، والتي ساهمت لاحقًا في مجتمع Apache.
يتم استخدام الأنماط بواسطة أداة RabbitMQ لتسهيل الاتصال عبر العديد من الخدمات المصغرة. بالإضافة إلى ذلك ، فهو يساعد في عملية توسيع نطاق التطبيقات بشكل متزامن.
5. مجموعات الأدوات
لتوضيح الأمر بشكل أكثر بساطة ، فإن مجموعة الأدوات هي مجرد مجموعة من الأدوات التي يتم استخدامها خلال تنفيذ إجراء معين. تعد مجموعة الأدوات أحد مكونات بنية الخدمات المصغرة التي تجعل من الممكن إنشاء العديد من التطبيقات. لهذا السبب ، توجد مجموعة متنوعة من مجموعات الأدوات ، يخدم كل منها هدفًا مميزًا في تطبيقه. الأدوات العديدة المتاحة للاختيار من بينها داخل Fabric8 و Seneca.
- Fabric8 عبارة عن منصة كتقنية خدمة تمكن مطوري البرامج ، بمساعدة Git ، من إنشاء نظام إدارة تكوين لتطبيقاتهم.
- يتم استخدام Seneca ، التي تعمل كعقدة ، في عملية تطوير الخدمات المصغرة الموجهة نحو الرسائل.
6. الأطر المعمارية ومجموعة أدوات شبيبة
نظرًا لأن الخدمات المصغرة هي أسلوب معماري ، فمن الضروري الانتباه إلى الإطار المعماري الذي يستخدمونه. هذه هي الأطر التي يتم استخدامها جنبًا إلى جنب مع التقنيات الحالية من أجل إنشاء أحدث التطبيقات. تعد Goa و Kong الآن أكثر الأطر المعمارية شعبية.
7. أدوات التنظيم
نظرًا للطريقة العامة التي تعمل بها الحاويات والخدمات المصغرة معًا ، يعد تنظيم الحاويات موضوعًا مهمًا للغاية يجب التفكير فيه. موصل Kubernetes و Istio هي حلول تنسيق الخدمات المصغرة الثلاثة التي تُستخدم غالبًا لتنظيم الحاوية. ومع ذلك ، هناك العديد من الأدوات الأخرى المتاحة. كجزء من النظام البيئي للبرامج مفتوحة المصدر (OSS) الذي تحافظ عليه Netflix ، يعمل الموصل كمحرك تنسيق الخدمات المصغرة. الموصل هو برنامج يتم تنفيذه في السحابة ويستخدم تطبيقًا يسمى منسق التدفق لتنفيذ أنشطة متنوعة باستخدام الخدمات المصغرة. بالإضافة إلى ذلك ، يسهل التحكم في جميع التفاعلات التي تحدث عبر الخدمات المصغرة ومشاهدتها.
8. أدوات المراقبة
بعد إنشاء تطبيق الخدمات المصغرة ، يجب التعامل مع المهام المرتبطة به. سوف تحتاج إلى أدوات مراقبة للخدمات المصغرة الخاصة بك من أجل تحقيق نفس الشيء. Prometheus و Log Stash هما تقنيتان لمراقبة الخدمات الصغيرة التي يتم استخدامها بشكل متكرر. Logstash هو برنامج ممتاز. إنها منصة تتيح لك دمج البيانات وتخزينها ومعالجتها ، وهي مفتوحة المصدر.
9. أدوات بدون خادم
أحد المكونات المهمة في ضمان البرنامج للخدمات المصغرة هو تقنية بدون خادم ، وغالبًا ما تُعرف باسم الوظيفة كخدمة. إنه يحسن كفاءة عملية تفكيك الأشياء إلى مكوناتها الأساسية. تعد كل من كلوديا و AWS Lambda أمثلة على الأدوات التي لا تحتوي على خادم والتي تُستخدم على نطاق واسع لتطوير الخدمات المصغرة. تعد عمليات تثبيت AWS Lambda و API Gateway أيضًا جزءًا من مسؤوليات كلوديا. بالإضافة إلى ذلك ، كلوديا قادرة على أتمتة أنشطة النشر والإعداد المعرضة للخطأ مع الحفاظ على وظيفتها "خارج الصندوق".
10. حاويات ، Docker ، و Kubernetes
- الحاويات: تعمل الحاويات بشكل أساسي على محاكاة نظام التشغيل المضيف (أو kernel) افتراضيًا ، مع عزل احتياجات التطبيق عن احتياجات الحاويات الأخرى التي يتم تنفيذها على نفس الكمبيوتر.
- Docker: يتكون Docker من عدة أجزاء مختلفة ، بما في ذلك وقت تشغيل الحاوية الذي يشار إليه باسم dockerd ، ومنشئ صور الحاوية المعروف باسم BuildKit ، وواجهة سطر أوامر تُستخدم للتفاعل مع المنشئ والحاويات والمحرك (يسمى عامل ميناء).
- Kubernetes هي تقنية مجانية ومفتوحة المصدر لإدارة الحاويات تجمع بين مجموعة من أجهزة الكمبيوتر في مجموعة واحدة من موارد الحوسبة. تم تطوير Kubernetes بواسطة Google. يمكّنك Kubernetes من هيكلة تطبيقاتك في شكل مجموعات من الحاويات ، والتي يتم تنفيذها بعد ذلك بواسطة محرك Docker. يعتني Kubernetes بضمان استمرار تطبيقك في العمل بالطريقة التي تحددها.
الأنماط الشائعة في هندسة الخدمات المصغرة
أ. نمط الواجهة الخلفية للواجهة الأمامية (BFF)
يوفر BFF واجهة مباشرة بين الواجهة الأمامية والخدمات المصغرة. في السيناريو المثالي ، سيكون فريق الواجهة الأمامية مسؤولاً أيضًا عن إدارة BFF. يهتم BFF واحد فقط بواجهة مستخدم واحدة. نتيجة لذلك ، سنكون قادرين على تبسيط واجهاتنا الأمامية والحصول على عرض واحد للبيانات عبر الواجهة الخلفية.
ب. أنماط الكيانات والتجميع
الكيان هو شيء مميز بناءً على هويته. على موقع ويب للتجارة الإلكترونية ، على سبيل المثال ، يمكن تحديد كائن المنتج من خلال اسم المنتج ونوعه وسعره. التجميع هو مجموعة من الأشياء التي يجب اعتبارها كوحدة واحدة. لذلك ، بالنسبة لموقع التجارة الإلكترونية على الويب ، سيكون الطلب عبارة عن تجميع (إجمالي) للأشياء (الكيانات) التي اشتراها العميل. تُستخدم هذه الأنماط لتصنيف البيانات بشكل هادف.
ج. أنماط اكتشاف الخدمة
يلعبون دورًا مهمًا في تسهيل اكتشاف الخدمات والتطبيقات. قد تختلف مثيلات الخدمة في سياق بنية الخدمات المصغرة لأسباب مثل فشل الخدمة وقابلية التوسع وإنهاء الخدمة والترقيات. توفر هذه الأنماط أدوات للاكتشاف للتعامل مع هذا الزوال. باستخدام الفحوصات الصحية وفشل الخدمة كمحفزات لإعادة موازنة حركة المرور ، قد تستخدم موازنة الحمل تقنيات اكتشاف الخدمة.
د. أنماط الخدمات المصغرة للمحول
يعدل تصميم Adaptor Microservices ، إذا لزم الأمر ، بين واجهة برمجة تطبيقات موجهة للأعمال تم إنشاؤها باستخدام تقنيات مراسلة RESTful أو خفيفة الوزن - باستخدام نفس المنهجيات المعتمدة على المجال كخدمة مصغرة نموذجية - وواجهة برمجة تطبيقات قديمة أو خدمة SOAP كلاسيكية قائمة على WS- *. التكيف مطلوب ، على سبيل المثال ، عندما يفتقر فريق التطوير إلى التحكم اللامركزي في مصدر البيانات للتطبيق.
ه. نمط تطبيق Strangler
نمط Strangler هو نمط معماري معروف لتحويل تطبيق مترابط ببطء إلى خدمات مصغرة عن طريق استبدال وظيفة معينة بخدمة جديدة.
الأنماط المضادة في هندسة الخدمات المصغرة
أ. فوضى التماسك
يجب أن تتوافق الخدمات بوضوح مع القدرة التجارية ويجب ألا تحاول إنجاز أي شيء خارج نطاقها. الفصل الوظيفي للمخاوف أمر بالغ الأهمية لإدارة العمارة ؛ خلاف ذلك ، فإنه سيدمر خفة الحركة والأداء وقابلية التوسع ، مما يؤدي إلى بنية مترابطة بإحكام مع إنتروبيا التسليم وفوضى التماسك.
ب. هندسة خدمات الطبقات
كان أحد أكثر أخطاء SOA شيوعًا هو سوء فهم كيفية إنجاز إعادة استخدام الخدمة. كانت الفرق مهتمة إلى حد كبير بالتماسك الفني بدلاً من إعادة الاستخدام الوظيفي.
ج. تعقيد
عامل مهم آخر لدعم بنية الخدمات المصغرة هو النضج التنظيمي. يجب إصلاح فرق التطوير لتحمل مسؤولية أكبر عن المجموعة الكاملة ، DevOps ، بدلاً من مجرد إرسال تذاكر باتجاه واحد لفريق البنية التحتية.
د. استراتيجية إصدار رديئة
تؤدي إستراتيجية الإصدار غير الفعالة إلى تعليمات برمجية وتبعيات لا يمكن إدارتها. نتيجة لذلك ، يجب أن يكون هناك نهج فعال لتعيين الإصدار لهندسة الخدمات المصغرة. تتمثل إحدى الطرق الأساسية في إنشاء إصدار API وتضمين الإصدار في عنوان URL للتوجيه.
ه. التصميم غير المناسب لأنماط الوصول إلى بيانات عبء العمل في الخدمات المصغرة
أنماط الوصول إلى بيانات حمل عمل الخدمات المصغرة غير الملائمة: تعتمد بنية الخدمات المصغرة على قاعدة بيانات المؤسسة. يجب فصل أنماط الوصول إلى البيانات عبر الخدمات المصغرة بشكل واضح. غالبًا ما يكون من المقبول استخدام قاعدة بيانات واحدة عبر العديد من مثيلات الخدمة ، طالما أن البيانات موجودة في جداول / مجموعات مقسمة بشكل صحيح.
F. اضطراب التبعية
اضطراب التبعية هو نمط مضاد يتطور عندما تدرك أنه يجب نشر الخدمات بترتيب معين حتى تعمل بشكل صحيح. عندما لا يكون هناك سيطرة على الفصل الوظيفي للمخاوف ، فقد تنشأ فوضى التماسك.
هناك طريقة جيدة لتجنب هذا النمط المضاد عن طريق إدخال بوابة API.
الاختلافات بين الهندسة المعمارية المتجانسة والخدمات المصغرة والعمارة الموجهة للخدمة

| الخدمات المصغرة | الخدمية | المتجانسة | |
| تصميم | يتم إنشاء الخدمات في وحدات صغيرة ويتم التعبير عنها رسميًا باستخدام واجهات برمجة التطبيقات الموجهة للأعمال. | يمكن أن يتراوح حجم الخدمات في أي مكان من خدمات التطبيقات الصغيرة إلى خدمات المؤسسات الكبيرة جدًا بما في ذلك وظائف أعمال أكثر بكثير. | تتطور التطبيقات المتجانسة إلى حجم ضخم ، وهو موقف يصعب فيه فهم التطبيق بالكامل. |
| سهولة الاستخدام | تتعرض الخدمات لبروتوكول قياسي ، مثل RESTful API ، ويتم استهلاكها / إعادة استخدامها بواسطة خدمات وتطبيقات أخرى. | الخدمات التي تم الكشف عنها باستخدام بروتوكول قياسي ، مثل SOAP ، واستهلاكها / إعادة استخدامها بواسطة خدمات أخرى - الاستفادة من البرامج الوسيطة للمراسلة. | إعادة استخدام محدودة تتحقق عبر تطبيقات متجانسة. محدود |
| قابلية التوسع | توجد الخدمات كأدوات نشر مستقلة ويمكن تحجيمها بشكل مستقل عن الخدمات الأخرى. | يمكن أن تؤدي التبعيات بين الخدمات والمكونات الفرعية القابلة لإعادة الاستخدام إلى ظهور تحديات القياس. | يمكن أن يمثل تحجيم التطبيقات المتجانسة تحديًا في كثير من الأحيان. |
| رشاقة | تسهل الوحدات الصغيرة المستقلة القابلة للنشر إدارة الإنشاء / التحرير ، وبالتالي سرعة تشغيل عالية. | يعزز مشاركة المكونات التي تزيد من التبعيات وتحد من قدرات الإدارة. | من الصعب تحقيق خفة الحركة التشغيلية في النشر المتكرر لأدوات التطبيق المتجانسة. |
| تطوير | يسمح تطوير الخدمات للمطورين بشكل منفصل باستخدام إطار عمل التطوير المناسب للمهمة المطروحة. | تساعد المكونات القابلة لإعادة الاستخدام والممارسات القياسية المطورين في التنفيذ. | يتم تنفيذ التطبيقات المتجانسة باستخدام حزمة تطوير واحدة (مثل JEE أو NET) ، والتي يمكن أن تحد من توفر "الأداة المناسبة للوظيفة". |

الأسواق الرأسية الرئيسية التي تتطلب خدمات مصغرة
الرعاية الصحية: من المتوقع أن ينمو سوق الخدمات الصغيرة للرعاية الصحية من 130 مليون دولار في 2015 إلى 519 مليون دولار بحلول عام 2025. إن الحاجة إلى طرح أسرع للخدمة ، وقبول أسرع للتقنيات الجديدة ، وكفاءة أفضل تدفع التطور في صناعة الرعاية الصحية. تبحث صناعة الرعاية الصحية عن إجابات لاحتياجات أمن البيانات والامتثال التنظيمي ، فضلاً عن كيفية التغلب على صعوبات التنفيذ.
الخدمات المصرفية والمالية والتأمين: تحدد Aspen Mesh ثلاث مزايا مهمة للخدمات المصغرة للخدمات المالية: زيادة الأمن من خلال إنشاء خدمة هوية مميزة ، وتسليم أسرع لوظائف جديدة ، وطبقة API أسهل في الإدارة.
الحكومة: بالإضافة إلى الفوائد المختلفة لبنية الخدمات المصغرة ، قد تستفيد الشركات الحكومية من قدرتها على تصميم وظائف تتوافق مع أهداف العمل ، مما يمكّن فرق تكنولوجيا المعلومات من إنشاء الخدمات أو تحسينها بناءً على طلبات الجهات المكونة.
البيع بالتجزئة: أثبتت Amazon و eBay فوائد الخدمات المصغرة لقطاع البيع بالتجزئة ، بما في ذلك الخدمات التي يمكن الوصول إليها بشكل كبير وقابلة للتطوير وإدارة الأخطاء والأخطاء بشكل أكثر فعالية.
وسائل الإعلام والترفيه: في عام 2009 ، انتقلت Netflix إلى الخدمات المصغرة ، وتعالج الخدمة حاليًا 2 مليار طلب حافة كل يوم باستخدام أكثر من 500 خدمة مصغرة. يوفر التغيير السرعة وقابلية التوسع وإمكانية الوصول.
أمثلة على الشركات التي تبنت هندسة الخدمات المصغرة
تعمل Amazon و Coca-Cola و Zalando ، من بين آخرين ، على تغيير البنى التحتية لتكنولوجيا المعلومات الخاصة بهم إلى بنية خدمات مصغرة. بالإضافة إلى ذلك ، فهم يعيدون تنظيم هياكلهم التنظيمية الداخلية ويدفعون مؤسساتهم إلى صدارة السوق. يعد تنفيذ بنية الخدمات المصغرة أمرًا ممتعًا عندما تكتسب المعرفة من أفضل الخبراء في الصناعة. فيما يلي بعض الأمثلة الأكثر فاعلية للخدمات المصغرة.
# 1. اوبر

تم تدمير مفهوم الملكية من خلال التبعيات المتجانسة المتشابكة. أصبحت الهجرة صعبة. لم يتمكن المطورون الجدد من المساهمة في المتراصة. أدت الأخطاء الصغيرة إلى نتائج كارثية. اختارت أوبر تنفيذ الخدمات المستندة إلى السحابة. طورت أوبر خدمات مصغرة للعديد من العمليات ، بما في ذلك الفواتير وإدارة الركاب والرحلات. تُستخدم بوابات API للتواصل مع الخدمات.
بالإضافة إلى ذلك ، وضعت أوبر معايير عالمية لخدماتها المصغرة. أنها توفر معايير كمية للتوثيق ، والاعتمادية ، والتسامح مع الخطأ ، وما إلى ذلك. تمت مراقبة هذه الخصائص باستخدام مؤشرات تجارية مثل زيارات الصفحة. وسرعان ما وصلت خدماتهم إلى ذروة التميز.
# 2. نيتفليكس
ثم تم ترحيل Netflix إلى بنية أساسية للبيانات الموزعة المستندة إلى مجموعة النظراء. تم استخدام AWS لتقديم أنظمة قابلة للتطوير أفقيًا وخدمات / ميزات إضافية. في عام 2009 ، بدأت Netflix نقلها ، والذي انتهى بعد ما يقرب من ثلاث سنوات. ثم حولت Netflix جميع تطبيقاتها التي تواجه المستخدم إلى خدمات مصغرة مستقلة. في عام 2012 ، تم الانتهاء من ترتيبات. بحلول عام 2015 ، تخلصت Netflix من جميع حالات انقطاع الخدمة وتمكنت من معالجة حوالي 2 مليار استعلام API يوميًا. حاليًا ، لدى Netflix أكثر من 139 مليون مستخدم في 190 دولة. اليوم ، تشغل Netflix ما يقرب من 700 نظام خدمة مصغرة بشكل منفصل.
# 3. أمازون
كان لدى أمازون كتلة متراصة كبيرة في عام 2001. في عام 2021 ، أصبح الجميع على دراية بخدمات ويب أمازون (AWS) - وهو حل داخلي أصبح خدمة حوسبة سحابية تجارية نظرًا لتفوقها. تعد الخدمات المصغرة ممتازة للتجارة الإلكترونية لأنها يمكن أن تتبع نشاط المستخدم والمشتريات وقمع المبيعات الكامل. وفقًا لكبير مديري المنتجات في Amazon
بعد ذلك ، ينتجون بيانات مفيدة لتحسين عرض المنتج وعملية البيع نفسها. تعد Amazon واحدة من أولى الشركات التي لعبت فيها الخدمات المصغرة دورًا مهمًا في تغيير المنظمة بأكملها. حقق العملاق العالمي نجاحًا مذهلاً في الوقت الذي كان فيه التصميم المترابط هو "القاعدة" لبناء أنظمة تكنولوجيا المعلومات.
توقفت جميع تعديلات التعليمات البرمجية المهمة في عملية النشر لأسابيع قبل إتاحتها للمستخدمين. استخدمت أمازون خدمات مصغرة لتبسيط وتقليل طول العملية. من خلال فصل الهياكل إلى تطبيقات فردية ، كان المطورون قادرين على تحديد مكان الاختناقات ، وطبيعة التباطؤ ، وإعادة بناء الهياكل كبنيات موجهة نحو الخدمة ، ولكل منها فريق صغير مخصص لخدمة واحدة.
أدى ما بدأ كتنظيف للنظام إلى نمو أحد اللاعبين الرئيسيين عبر الإنترنت في الهندسة المعمارية المعاصرة. كانت أمازون رائدة في مسار الأعمال الأخرى من خلال إطلاق سلسلة متعاقبة من التقنيات مفتوحة المصدر ، مثل AWS (Amazon Web Services) ، المنتشرة الآن.
# 4. موقع ئي باي
يدعم نظام eBay حوالي ألف خدمة مصغرة. تجارب الواجهة الأمامية ، مثل الويب وتطبيقات iOS و Android الأصلية ، اتصل بالخدمات الوسيطة التي تنسق المكالمات ، والتي تتواصل بعد ذلك مع الخدمات الخلفية. كل خدمة لديها مجموعة التطوير المستقلة الخاصة بها. تطورت غالبية خدمات eBay المصغرة بدون مهندس معماري ، وكان النظام دائمًا مصممًا من الأسفل إلى الأعلى. استقرت غالبية الشركات الكبيرة ، مثل eBay ، على مجموعة من الخدمات المصغرة متعددة اللغات التي تعمل وفقًا لمتطلبات العملاء وهي بالطبع تتغير دائمًا.

# 5. SoundCloud
يتم تطوير كل خدمة ونشرها بشكل مستقل ، والتواصل مع الخدمات الأخرى عبر الشبكة باستخدام معايير تبادل البيانات خفيفة الوزن مثل JSON أو Thrift. طوال فترة التحول ، لم تكن الخدمات المصغرة الجديدة قادرة على تغيير النموذج العلائقي في MySQL ، أو حتى الأسوأ من ذلك ، استخدام محرك تخزين مختلف. للظروف القصوى ، مثل المراسلة من مستخدم إلى مستخدم حيث تم استبدال النموذج المستند إلى الخيوط بنموذج يشبه الدردشة ، استخدمت الشركة cronjobs لمزامنة قواعد البيانات المنفصلة.
# 6. سبوتيفي
من أجل منع جحيم المزامنة داخل الشركة ، تم تصميم Spotify وفقًا لهندسة الخدمات المصغرة مع وجود فرق مكدس كاملة مستقلة مسؤولة. يستخدم Spotify بنية Microservice حيث يكتب مطورو البرامج كلهم في "مناطق" مغلقة بقدراتهم الفريدة. تتمتع كل خدمة مصغرة بمسؤولية فردية مباشرة ، وفي معظم الحالات ، قاعدة بيانات ومنطق لا يمكن الوصول إليه من خلال عملية أخرى.
ما نوع التحديات التي يمكن أن تساعدك الخدمات المصغرة في التغلب عليها؟
هذا هو الحل للسؤال "ما الصعوبات التي تحلها الخدمات المصغرة؟" ؛ دعونا نفحص العقبات التي ساعدت بنيات الخدمات المصغرة في التغلب عليها.
استعادة رصيد CASE 1 eBay
يستخدم eBay ما يقرب من ألف خدمة. ترسل العديد من خدمات الواجهة الأمامية استدعاءات API ، بينما تتولى خدمات الواجهة الخلفية العمليات الإدارية والمتعلقة بالشحن. استخدم موقع eBay في الأصل برنامج متآلف Perl و C ++. موقع eBay هو منتج أساسي ، كما هو الحال بالنسبة للعديد من عمالقة الإنترنت الآخرين. استمرت الحاجة إلى إضافة العديد من الميزات الإضافية إلى موقع eBay في الازدياد. بالإضافة إلى ذلك ، يجب أن يكون هذا النوع من مواقع الويب متاحًا على مدار 24 ساعة في اليوم ، سبعة أيام في الأسبوع ، حتى مع إضافة ميزات جديدة.
نظرًا للحاجة إلى تقليل وقت التوقف عن العمل ، اختارت eBay التبديل إلى بنية الخدمات المصغرة. سمح ذلك للموقع بأن يصبح أكثر استقرارًا وتعزيز التكامل غير المتزامن. تم إجراء تحسينات كبيرة على مرونة النشر ومدة دورة الإصدار. عندما تم عزل الخدمات ، ارتفعت كفاءة الأداء وأصبح التوسع أسهل.
CASE 2 Uber والتوسع السريع
بدأت خدمة Uber ، خدمة استدعاء سيارات الأجرة الأكثر شهرة ، بحزمة واحدة لخدمة الركاب في سان فرانسيسكو ، حيث تم تنفيذها في البداية. كان هذا البرنامج المرتبط بشكل وثيق قادرًا على إدارة غالبية الأنشطة التجارية ، إن لم يكن كلها ، بما في ذلك الفواتير والمدفوعات وخدمات توصيل السائق. لكن مع تطور الشركة ، بدأت الأمور في التدهور. قامت أوبر بتوسيع منطقة تغطيتها وتقديم خدمات أخرى.
مع إضافة ميزات أخرى ، أصبحت الحزمة أكثر تماسكًا. تم احتواء كل المنطق في مكان واحد ، وبدأت الصعوبات في الظهور. بعد فترة وجيزة ، تطلب تعديل بسيط إعادة نشر البرنامج بأكمله. يصبح التكامل المستمر على الفور تقريبًا مسؤولية كبيرة.
كان عدم وجود نموذج الملكية بسبب العديد من التبعيات المترابطة. لذلك ، كانت الهجرة صعبة. وحدث أيضًا أن المطورين المعينين حديثًا لم يتمكنوا من المساهمة في الوحدة المتراصة. حتى لو حدث خطأ بسيط ، كانت العواقب وخيمة. هذا عندما اتخذوا قرار تنفيذ الخدمات المصغرة. استغرقت حركتهم بعض الوقت. قاموا بتفكيك الخدمة بأكملها وترحيل التطبيق المترابط إلى بنية موجهة نحو الخدمات الصغيرة تم إنشاؤها باستخدام Python و Node.js و Apache Thrift.
CASE 3 تحسين وقت تشغيل Twitter
كانت نفس القصة القديمة: استخدم تويتر لأول مرة التصميم الأحادي ، والذي كان له معنى كبير. ومع ذلك ، عند تسجيل المزيد من الأفراد على تويتر ، ظهرت مشكلات. نما SDLC بشكل أكبر وأكثر تعقيدًا ، مع فترات بناء أطول ، وتدهورت قابليته للتوسع بشكل كبير ، مع ظهور تحذيرات من الخطأ في بعض الأحيان بسبب زيادة السعة.
لجأ Twitter إلى تغيير البنية إلى خدمات مصغرة لحل هذه المشكلة. تم إنشاء كل خدمة مصغرة لتكون معيارية ومحددة جيدًا ومستقلة. يمكنهم اختبار ونشر كل مكون بشكل فردي. يمكن أيضًا قياسها بشكل مستقل. وسرعان ما اختفت التحذيرات من الخطأ تمامًا.
CASE 4 Karma واي فاي وكود السباغيتي
يوجد أشخاص وأدوات ومتجر على Karma. في مرحلة ما ، مع توفر برنامج مترابط ، انتهى الأمر بالشفرة المتعلقة بالمستخدم في أجزاء متعلقة بالجهاز. بالإضافة إلى ذلك ، اتبعت واجهات برمجة التطبيقات الخاصة بالمخزن واجهات برمجة التطبيقات الخاصة بالجهاز. سرعان ما أصبح من الصعب تحديد ما الذي تغير ومن غيره. على الرغم من أن الهدف الأولي كان تقسيم المنولث إلى مكتبات وظيفية ، فقد وجد أن التوسع والتكيف مع إصدارات البرامج الأحدث سيكون أمرًا صعبًا. بالإضافة إلى ذلك ، لن يتمكنوا من تجربة الابتكارات المستقبلية التي سيتم تقديمها إلى السوق.
بحلول ذلك الوقت ، اختاروا استخدام بنية قائمة على الخدمات المصغرة. عندما رأوا أنه ضروري ، قاموا بفصل أجزاء من التطبيق الخلفي إلى خدمات فردية. كانت الأجزاء ضخمة في البداية ، ولكن مع مرور الوقت تم تقسيمها إلى خدمات أصغر. في النهاية ، كان لكل خدمة مصغرة مهمة واحدة وأقصى حجم يدعو للقلق.
تحسين أداء وول مارت CASE 5
بدأت مغامرة خدمات وول مارت الصغيرة بالاستحواذ على منصة DevOps من شركة صغيرة تسمى OneOps. اختاروا جعلها مبادرة مفتوحة المصدر حتى يتمكنوا من المساهمة في المجتمع.
بدأوا في استخدام تقنيات مثل قواعد بيانات Node.js و Cassandra لإنشاء خدمات صغيرة متنوعة يمكن تشغيلها ديناميكيًا عبر واجهات برمجة التطبيقات. كان الهدف هو جعل الأمر أكثر بساطة بالنسبة للمطورين الذين يعملون في أقسام الأعمال العديدة في Walmart لامتلاك تطبيقاتهم وتمكينهم من القيام بذلك. اكتشفوا أن هذا يقلل من الاعتماد على مجموعة مركزية لتكنولوجيا المعلومات.
في النهاية ، ساهمت قدرة المطورين على توسيع القدرات الخلفية لعروض التجارة الإلكترونية للمؤسسة في زيادة سرعة الأعمال.
كيف يتم تنفيذ بنية الخدمات المصغرة على Android و iOS؟
- الخطوة 1: قرر ما إذا كان هذا هو ما يحتاجه عملك حقًا.
- الخطوة 2: إذا كانت الإجابة بنعم ، فابحث عن البنية التحتية الموجودة بالفعل.
- الخطوة 3: اجعل فريقك جاهزًا لاستخدام الطريقة.
- الخطوة 4: إذا كنت تقوم بالتبديل من نظام أحادي إلى نظام خدمات مصغرة ، فتحقق من مسؤول البيانات لديك لمعرفة ما إذا كان على دراية جيدة وفهم المهمة.
- الخطوة 5: اختر اللغة وإطار العمل للتشفير.
- الخطوة 6: قم بإعداد البنية الأساسية مع الخدمات والحاويات وقوالب الآلة الافتراضية.
- الخطوة 7: قسّم قاعدة البيانات إلى العديد من قواعد البيانات الأصغر إذا كانت البنية الخاصة بك "متراصة".
- الخطوة 8: ضع بوابات API في مكانها.
- الخطوة 9: تتبع التتبع وقم بعمل خريطة له.
- الخطوة 10: اختبر باستخدام الأتمتة.
هل الخدمات المصغرة هي المستقبل؟
الهدف الأساسي لهذه المقالة هو شرح المفاهيم والمبادئ الأساسية للخدمات المصغرة. من خلال بذل الجهد لإنجاز ذلك ، من الواضح أننا نعتبر الأسلوب المعماري للخدمات المصغرة مفهومًا أساسيًا - مفهوم يجب على تطبيقات الشركة فحصه بعناية. لقد طورنا مؤخرًا عددًا من الأنظمة التي تستخدم هذه الطريقة ، ونحن على علم بالآخرين الذين يقدرون هذه الطريقة. Amazon و Netflix و The Guardian والخدمات الرقمية للحكومة البريطانية و realestate.com.au و Forward و Comparethemarket.com من بين أولئك الذين ندركهم وهم رواد الأسلوب المعماري بشكل ما.

في كثير من الأحيان ، لا تظهر التداعيات الفعلية للقرارات المعمارية إلا بعد عدة سنوات. قام فريق جيد لديه دافع قوي للنمطية في بعض الأحيان ببناء تصميم موحد تدهور بمرور الوقت. يجادل العديد من الأفراد بأن مثل هذا التدهور أقل احتمالًا مع الخدمات المصغرة نظرًا لأن حدود الخدمة واضحة ويصعب إصلاحها. ومع ذلك ، لا يمكننا تقييم نضج بنيات الخدمات المصغرة بدقة حتى يكون لدينا عدد كافٍ من الأنظمة ذات العمر الكافي.
هناك بالتأكيد أسباب لتوقع أن الخدمات المصغرة سوف تتطور ببطء. يعتمد نجاح أي مسعى لتكوين المكونات على مدى ملاءمة البرنامج للمكونات. من الصعب تحديد مكان وضع حدود المكون. يعترف التصميم التطوري بصعوبة وضع حدود صحيحة ، وبالتالي أهمية جعل إعادة صياغتها أمرًا بسيطًا. ومع ذلك ، عندما تكون المكونات الخاصة بك عبارة عن خدمات ذات اتصالات خارجية ، فإن إعادة البناء تكون أصعب بكثير مما هي عليه عند العمل مع مكتبات قيد التشغيل.
يعد نقل الكود عبر حدود الخدمة أمرًا معقدًا ، ويجب ترتيب أي تعديلات للواجهة بين المشاركين ، ويجب إنشاء طبقات توافق إضافية ، والاختبار معقد. إذا لم يتم تكوين المكونات بدقة ، فأنت تقوم فقط بنقل التعقيد من داخل أحد المكونات إلى الروابط بين المكونات. هذا لا ينقل التعقيد فحسب ، بل ينقله أيضًا إلى موقع أقل وضوحًا وأصعب من حيث التحكم فيه. عند فحص الجزء الداخلي لمكون صغير ومباشر ، من السهل التغاضي عن الروابط المعقدة بين الخدمات واستنتاج أن الأشياء أفضل مما هي عليه في الواقع.
أخيرًا ، هناك كفاءة الفريق التي يجب مراعاتها. من المرجح أن تتبنى الفرق الماهرة ممارسات جديدة. ومع ذلك ، قد لا يعمل النهج الأكثر نجاحًا لفريق من ذوي المهارات العالية دائمًا مع فريق أقل مهارة. لقد رأينا العديد من الأمثلة لفرق غير كفؤة تبني هياكل متجانسة قذرة ، لكن الأمر سيستغرق وقتًا لتحديد ما يحدث عندما يحدث هذا النوع من الفوضى مع الخدمات المصغرة. الفريق الرديء سينتج دائمًا نظامًا سيئًا ؛ من الصعب تحديد ما إذا كانت الخدمات المصغرة تعمل على تحسين الوضع أو تفاقمه في هذه الظروف.
لذلك نكتب هذا بتفاؤل حذر. نعتقد أن الخدمات المصغرة موجودة لتبقى!
لماذا تختار EmizenTech؟
يمكن أن تساعدك Emizentech في ترحيل تطبيقك من بنية متجانسة إلى بنية خدمات مصغرة. يمكننا مساعدتك في جعل تطبيق شركتك سهل الصيانة وقابل للتطوير. إذا كنت تريد أن تنمو وتطور عملك وتبحث عن طرق جديدة للقيام بذلك ، فيمكن أن تساعدك emizentech بالطريقة الصحيحة مع التأكد أيضًا من النمو على المدى الطويل. يمكنك أيضًا زيارة موقعنا على الويب لمعرفة المزيد حول الخدمات المصغرة ، ومعرفة ما إذا كانت شركتك جاهزة لها ، والتحدث عن كيفية تنفيذ هذه البنية. إنها طريقة لصنع البرامج التي تركز على تقسيم التطبيق إلى وحدات تعمل شيئًا واحدًا فقط ولها واجهات محددة جيدًا.
الخصائص المميزة لخدماتنا هي:
- بنية تعتمد على المجال لمنع فشل التطبيق
- ضمان درجة عالية من قابلية التوسع
- تصميم قاعدة بيانات لامركزية
- تمكين عزل الفشل البسيط ، و
- تمكين التسليم المستمر باستخدام ثقافة DevOps.
خواطر ختامية
اتخذ الخطوة التالية!
في هذه المدونة ، بذلنا جهدًا لاستكشاف الجوانب المتعددة لهندسة الخدمات المصغرة والإمكانيات التي تقدمها. يمكن تقسيم وظائف نظام التطبيق إلى عدد من الوحدات الوظيفية الأصغر عند استخدام نهج معماري يعرف بالخدمات المصغرة. يتم التعامل مع تنفيذ وإدارة الخدمات بشكل منفصل عن بعضها البعض. عندما يتم تقسيم الأنظمة المتجانسة إلى أجزاء أصغر باستخدام بنية الخدمات المصغرة ، يرتفع عدد المكونات الفردية بشكل كبير.
لذلك ، من الضروري أن يكون لديك إدارة فعالة للتبعيات الموجودة بينهما. عند مقارنتها بهندسة البرمجيات المتجانسة ، فمن الصحيح أن إنشاء وتنفيذ معمارية الخدمات المصغرة يطرح عددًا من التحديات ويدعو إلى نقلة نوعية. على نفس المنوال ، فإن Microservice Architecture ليست بأي حال من الأحوال رصاصة سحرية يمكنها حل مشاكل التعقيد التي تنشأ في أي وجميع أنواع الأنظمة.
عندما يتم أخذ كل شيء في الاعتبار ، نعتقد أن بنية الخدمات المصغرة هي أداة مفيدة للغاية وملائمة لتطوير البرامج المعاصرة. Microservice Architecture هي الإستراتيجية الوحيدة القابلة للتطبيق للمؤسسات الكبرى التي تقوم عادةً بإنشاء برامج معقدة لأنها الطريقة الوحيدة للتعامل بفعالية مع التعقيد والحفاظ على ميزة تنافسية في السوق. يجب استخدام بنية الخدمات المصغرة لتطوير البرامج المستدامة ، والتي قد تحقق فوائد طويلة الأجل ، ليس فقط من قبل الشركات الكبيرة ولكن أيضًا من قبل الشركات الصغيرة والمتوسطة الحجم.
من المهم ملاحظة أن المستخدمين الأوائل لبنية الخدمات المصغرة ، مثل Spotify و Netflix و LinkedIn و Amazon و Google ، كانوا قادرين على الحصول على مزايا تنافسية كبيرة على منافسيهم نتيجة اعتمادهم لبنية الخدمات المصغرة. يعد تطوير وفحص النموذج المعماري كلاهما خيارين قابلين للتطبيق للمساعدة في هذا المسعى. تعد هذه الطريقة بتبسيط الأمور وجعل الحياة أبسط للمطورين دون الإضرار بشكل سلبي بالمحصلة النهائية ، وهو أمر مهم بشكل خاص الآن حيث تدخل الشركات فترة جديدة من المنافسة الشرسة.
تهتم الغالبية العظمى من الشركات بتعزيز كفاءتها من حيث التكلفة ، وفي هذه الخلفية ، من المتوقع أن تكتسب البنية التي لا تحتاج إلى خادم شعبية أكبر على مدار السنوات القادمة. يبدو أن المدى المحتمل للخدمات المصغرة في مستقبل العالم واعد إلى حد ما.
هل يمكن للخدمات المصغرة أن تساعد عملك على المضي قدمًا؟ لا تتردد في الاتصال بنا للحصول على استشارة غير ملزمة!
شكرا للقراءة!
الأسئلة المتداولة حول هندسة الخدمات المصغرة
- لماذا تختار هندسة الخدمات المصغرة؟
يتميز تصميم الخدمات المصغرة بالعديد من المزايا مقارنة بالبنية المتجانسة ، بما في ذلك المتانة والإنتاجية والمرونة وقابلية التوسع والسرعة والديناميكية والحد الأدنى من الصيانة وما إلى ذلك.
- ما هي المكونات الخمسة لبنية الخدمات المصغرة؟
المكونات الأساسية الخمسة لبنية الخدمات المصغرة هي الخدمات المصغرة والحاويات وشبكة الخدمة واكتشاف الخدمة وبوابة API.
- هل REST API خدمة مصغرة؟
نعم ، REST API هي واحدة من أشهر واجهات برمجة التطبيقات المستخدمة لبناء تطبيقات الخدمات المصغرة.
- ما الفرق بين الخدمات المصغرة وواجهة برمجة التطبيقات؟
يتمثل الاختلاف الأساسي بين واجهات برمجة التطبيقات والخدمات المصغرة في أن الأخيرة تُستخدم لإنشاء تطبيق واحد ، بينما تتكون الأولى من مجموعة من الخدمات المستقلة والمترابطة. APIs are components of an application that are responsible for facilitating communication with other software programs. Therefore, APIs may be utilized to facilitate the creation of microservices.
- Is Kubernetes a microservice?
Yes, Kubernetes is an open-source orchestrator for deploying containerized applications (microservices).
- What language is used in microservices?
C++ is a good language for microservices in domains that require the characteristics of C++, such as runtime speed and direct memory access, and C++, like other languages, has a variety of infrastructures available to help you get started with developing microservices. C++ is a good language for microservices in domains that require the attributes of C++, such as runtime speed and direct memory access.
- لماذا تختار هندسة الخدمات المصغرة؟
>> خفة حركة متزايدة ووقت سريع للتسويق
>> قابلية التوسع الفعال وتحديث التطبيق
>> تكاليف التطوير الأمثل
>> موثوقية عالية ، واستقرار ، وقابلية للصيانة
>> المرونة في اختيار التقنيات
>> تركيز الليزر على وظائف العمل الفردية
>> استقلالية الفريق
>> النشر والاختبار الآلي
>> إدارة أفضل للموارد
>> الدين الفني المخفض / المتجنب
قد ترغب أيضًا في القراءة
- تطوير تطبيق المكدس الكامل: دليل كامل
- التجارة بدون رأس: الحل للتجارة التقليدية
- التجارة القابلة للتكوين
- تطوير الواجهة الخلفية لتطبيقات الجوال
- كيفية اختيار Tech Stack لتطوير تطبيق
