إذا كنت تعمل في مجال تكنولوجيا المعلومات أو مجال الحوسبة السحابية ، فمن المحتمل أنك على دراية بنقاش البنية الموجهة نحو الخدمة (SOA) مقابل الخدمات المصغرة. في النهاية، يتحدث الجميع عن الخدمات المصغرة والتطبيقات الرشيقة هذه الأيام.
للوهلة الأولى، يبدو النهجان متشابهين، وفي بعض النواحي، يبدو الأمر كذلك. يتضمن كلاهما بيئات سحابة أو سحابة هجينة لتطوير ونشر التطبيقات بسرعة وبأسلوب رشيق، ويمكن لكليهما التوسع لتلبية السرعة والمتطلبات التشغيلية للبيانات الكبيرة. كلاهما يقسم التطبيقات الكبيرة والمعقدة إلى عناصر صغيرة ومرنة يسهل التعامل معها. ويختلف كلاهما عن البنية التقليدية المتجانسة في أن كل خدمة لها مسؤوليتها الخاصة.
ومع ذلك، حتى مع وجود هذه القواسم المشتركة الرئيسية، فإن الفحص الدقيق للنهجين يكشف عن اختلافات مهمة.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيصلك محتوى الاشتراك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك من هنا. لمزيد من المعلومات، راجع بيان خصوصية IBM.
البنية الموجهة نحو الخدمة (SOA) هي نهج على مستوى المؤسسة لتطوير البرامج لمكونات التطبيقات التي تستفيد من مكونات البرامج أو الخدمات القابلة لإعادة الاستخدام. في بنية برامج SOA، تتكون كل خدمة من التعليمات البرمجية وتكامل البيانات المطلوبة لتشغيل وظيفة عمل معينة - على سبيل المثال، التحقق من رصيد العميل أو تسجيل الدخول إلى موقع ويب أو معالجة طلب رهن عقاري.
توفر واجهات الخدمة اقترانًا فضفاضًا، مما يعني أنه يمكن استدعاؤها مع معرفة قليلة أو معدومة بكيفية تنفيذ التكامل تحتها. بسبب هذا الاقتران الفضفاض وطريقة نشر الخدمات، يمكن لفرق التطوير توفير الوقت عن طريق إعادة استخدام العناصر في التطبيقات الأخرى عبر المؤسسة. هذه فائدة ومخاطرة في نفس الوقت. نتيجةً للوصول المشترك إلى ناقل خدمات المؤسسة (ESB)، إذا ظهرت مشاكل، يمكن أن تؤثر أيضاً على الخدمات الأخرى المتصلة.
بيانات XML هي عنصر أساسي للحلول القائمة على بنية SOA. يمكن استخدام تطبيقات SOA المستندة إلى XML لإنشاء خدمات الويب، على سبيل المثال.
ظهرت البنية الموجهة نحو الخدمة (SOA) في أواخر التسعينيات وتمثل مرحلة مهمة في تطور تطوير التطبيقات وتكاملها. قبل أن يصبح SOA خياراً متاحاً، كان ربط التطبيق بالبيانات أو الوظائف في نظام آخر يتطلب تكامل النقطة إلى النقطة كان على المطورين إعادة إنشائه لكل مشروع تطوير جديد. إن تعريض هذه الوظائف من خلال SOA يلغي الحاجة إلى إعادة إنشاء التكامل العميق في كل مرة.
توفر البنية الموجهة نحو الخدمة (SOA) أربعة أنواع مختلفة من الخدمات:
تتكون كل خدمة من ثلاثة عناصر:
يمكن دمج خدمات البنية الموجهة نحو الخدمة (SOA) لإنشاء خدمات وتطبيقات عالية المستوى.
مثل البنية الموجهة نحو الخدمة (SOA)، تتكون بنى الخدمات المصغرة من عناصر مقترنة بشكل فضفاض وقابلة لإعادة الاستخدام ومتخصصة تعمل غالباً بشكل مستقل عن بعضها البعض. تستخدم الخدمات المصغرة أيضًا درجة عالية من التماسك، والمعروفة باسم السياق المحدود. يشير السياق المحدود إلى العلاقة بين العنصر وبياناته ككيان أو وحدة قائمة بذاتها مع القليل من التبعيات. بدلاً من اعتمادها على مستوى المؤسسة، تتواصل الخدمات المصغرة عادةً عبر واجهة برمجة التطبيقات (APIs) لبناء التطبيقات الفردية التي تؤدي وظيفة معينة من وظائف الأعمال. هذا النهج يجعلها أكثر مرونة وقابلية للتطوير والمرونة، خاصةً في مجالات محددة من الأعمال. عادة ما تكون Java هي لغة البرمجة المفضلة لتطوير الخدمات المصغرة. يمكن أيضًا استخدام لغات برمجة أخرى، مثل Golang و Python.
الخدمات المصغرة هي نهج بنائي سحابي أصلي، وغالباً ما تعمل في حاويات، مما يجعلها أكثر قابلية للتوسع وقابلية للحمل لإنشاء خدمات مستقلة. يمكن للفرق استخدام الخدمات المصغرة لتحديث التعليمات البرمجية بسهولة أكبر، واستخدام مجموعات مختلفة لمكونات مختلفة وتوسيع نطاق العناصر بشكل مستقل عن بعضها البعض. يقلل هذا الأسلوب من الهدر والتكلفة المرتبطة بالاضطرار إلى توسيع نطاق التطبيقات بأكملها لأن ميزة واحدة قد تواجه الكثير من الحمل. نظرا لاستقلاليتها، تنتج الخدمات المصغرة خدمات أكثر تحملاً للأخطاء مقارنة بالبدائل.
تحقق من الفيديو التالي للحصول على مزيد من المعلومات حول بنية الخدمات المصغرة:
يأتي الفرق الرئيسي بين النهجين في النطاق. ببساطة، تحتوي البنية الموجهة نحو الخدمة (SOA) على نطاق مؤسسي، بينما تحتوي بنية الخدمات المصغرة على نطاق تطبيق.
تصبح العديد من المبادئ الأساسية لكل نهج غير متوافقة عندما تهمل هذا الاختلاف. إذا قبلت الاختلاف في النطاق، فقد تدرك بسرعة أن الاثنين يمكن أن يكمل كل منهما الآخر، بدلاً من التنافس.
فيما يلي بعض حالات الاستخدام التي يلعب فيها هذا الاختلاف دوره:
في البنية الموجهة نحو الخدمة (SOA)، تعد قابلية إعادة استخدام عمليات التكامل هي الهدف الأساسي، وعلى مستوى المؤسسة، يعد السعي لتحقيق مستوى معين من إعادة الاستخدام أمرًا ضروريًا. تزيد قابلية إعادة الاستخدام ومشاركة العنصر في بنية SOA من قابلية التوسع والكفاءة.
في بنية الخدمات المصغرة، يؤدي إنشاء عنصر خدمة مصغرة يتم إعادة استخدامه في وقت التشغيل خلال التطبيق إلى تبعيات تقلل من المرونة والرشاقة. تفضل عناصر الخدمات المصغرة عموماً إعادة استخدام التعليمات البرمجية عن طريق نسخ البيانات المكررة وقبولها للمساعدة في تحسين الفصل.
تتوفر الخدمات القابلة لإعادة الاستخدام في SOA في جميع أنحاء المؤسسة باستخدام بروتوكولات متزامنة في الغالب مثل واجهات برمجة التطبيقات RESTful.
ومع ذلك، داخل تطبيق الخدمات المصغرة، تقدم الاستدعاءات المتزامنة تبعيات في الوقت الفعلي، مما يؤدي إلى فقدان المرونة. قد تتسبب هذه التبعيات أيضًا في حدوث زمن الانتقال، مما يؤثر على الأداء. ضمن التطبيق، يُفضل استخدام أنماط التفاعل القائمة على الاستدعاء غير المتزامن، مثل تحديد مصادر الأحداث، حيث يتم استخدام نموذج النشر/الاشتراك لتمكين عنصر الخدمة المصغرة من البقاء على اطلاع دائم بالتغييرات التي تحدث للبيانات في عنصر آخر.
إن الهدف الواضح من توفير الخدمات في البنية الموجهة نحو الخدمة (SOA) هو أن تحصل جميع التطبيقات على البيانات وتغييرها بشكل متزامن مباشرةً من مصدرها الأساسي، مما يقلل من الحاجة إلى الحفاظ على أنماط مزامنة البيانات المعقدة.
في تطبيقات الخدمات المصغرة، من الناحية المثالية، تتمتع كل خدمة مصغرة بوصول محلي إلى جميع البيانات التي تحتاجها لضمان استقلاليتها عن الخدمات المصغرة الأخرى - بل وعن التطبيقات الأخرى - حتى لو كان ذلك يعني بعض الازدواجية في البيانات في الأنظمة الأخرى. وبالطبع، تضيف هذه الازدواجية تعقيدًا إضافيًا، لذا يجب موازنتها مع المكاسب في المرونة والأداء، ولكن هذا أمر مقبول كحقيقة في تصميم الخدمات المصغرة.
بالنسبة لعدد من المؤسسات، تعد البنية الموجّهة نحو الخدمة (SOA) نقطة انطلاق لتحل محل الكتلة المتراصة، مما يوفر بيئة أكثر مرونة ورشاقة. يمكن تطوير خدمات SOA واستخدامها في بيئة كبيرة، ولكنها لا تلبي الاحتياجات المحددة للشركات الفردية التي ترغب في معالجة العمليات التجارية ضمن نطاقها. يمكن استخدام عمليات التطوير لمساعدة المؤسسة على الانتقال من بنية SOA إلى الخدمات المصغرة لتلبية احتياجاتها المحددة.
أنماط البنى المختلفة لكل منها مزاياها، فكيف يمكنك تحديد تلك التي تناسب أغراضك؟ بشكل عام، يعتمد ذلك على حجم وتنوع بيئة التطبيق الخاصة بك.
يمكن لكل من البنية الموجّهة نحو الخدمة (SOA) والخدمات المصغرة استخدام الأتمتة لتسريع عمليات الأعمال. تميل البيئات الأكبر حجماً والأكثر تنوعاً إلى الميل نحو البنية الموجهة نحو الخدمة (SOA)، والتي تدعم التكامل بين التطبيقات غير المتجانسة وبروتوكولات المراسلة عبر ناقل خدمة المؤسسة (ESB). لا تتطلب البيئات الأصغر، بما في ذلك تطبيقات الويب وتطبيقات الأجهزة المحمولة، طبقة اتصال قوية كهذه، ومن الأسهل تطويرها باستخدام بنية الخدمات المصغرة.
وسوف يشير البعض إلى أن النقاش حول البنية الموجّهة نحو الخدمة (SOA) في مقابل الخدمات المصغرة أكثر تعقيداً، وهذا صحيح. هناك الكثير مما يجب أن يقال عن هذا الأمر. للحصول على شرح تقني أكثر تفصيلاً لهذه الفروق الدقيقة، نشجعك على الخوض في مقالات مركز التعلم حول البنية الموجّهة نحو الخدمة (SOA) والخدمات المصغرة، والتي توفر قدرًا كبيرًا من المعلومات المتعمقة. ومع ذلك، من منظور الأعمال، فإن النطاق هو الفارق المهم.
لمعرفة المزيد حول كيفية بناء التطبيقات الرشيقة، قم بتنزيل نسختك المجانية من الكتاب الإلكتروني لبنية التطبيقات الرشيقة.
خدمة مُدارة بالكامل ومستأجر واحد لتطوير تطبيقات Java وتسليمها.
استخدم أدوات وبرمجيات عمليات التطوير لإنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها عبر أجهزة وبيئات متعددة.
إن تطوير تطبيقات السحابة يعني البناء مرة واحدة، والتكرار بسرعة، والنشر في أي مكان.