SOA مقابل الخدمات المصغرة – الفرق بينهما
الفرق الرئيسي بين SOA والخدمات المصغرة
- تركز SOA على إمكانية إعادة استخدام خدمة التطبيقات، بينما تركز الخدمات المصغرة بشكل أكبر على الفصل.
- SOA متجانسة بطبيعتها، في حين أن الخدمات الصغيرة عبارة عن مكدس كامل.
- تم تصميم تطبيقات SOA لأداء العديد من مهام الأعمال، ولكن تم تصميم الخدمات الصغيرة لأداء مهمة عمل واحدة.
- تتضمن SOA مشاركة تخزين البيانات بين الخدمات، بينما في الخدمات الصغيرة، يمكن أن تحتوي كل خدمة على مخزن بيانات مستقل.
- تم تصميم SOA لمشاركة الموارد عبر الخدمات، بينما تم تصميم Microservices لاستضافة الخدمات التي يمكن أن تعمل بشكل مستقل.
- في الخدمية Archiأصبحت التكنولوجيا وDevOps والتسليم المستمر شائعة ولكنها لم تصبح سائدة بعد، في حين أن الخدمات المصغرة لديها تركيز قوي على DevOps والتسليم المستمر.
- SOA هي بنية أقل قابلية للتوسع، في حين أن Microservices هي بنية قابلة للتوسع بشكل كبير.

ما هي الهندسة المعمارية الموجهة نحو الخدمة (SOA)؟
SOA هو نمط معماري في تصميم برامج الكمبيوتر. في هذا النوع من التطبيقات، توفر المكونات خدمات لمكونات أخرى عبر بروتوكول اتصالات، عادةً عبر شبكة. مبادئ التوجه نحو الخدمة مستقلة عن أي منتج أو بائع أو تقنية. الشكل الكامل لـ SOA هو الهندسة المعمارية الموجهة نحو الخدمة
تجعل بنية SOA من السهل على مكونات البرامج عبر الشبكات المختلفة العمل مع بعضها البعض. تميل خدمات الويب التي تم إنشاؤها وفقًا لبنية SOA إلى جعل خدمات الويب أكثر استقلالية.
ما هي الخدمات المصغرة؟
Microservices هو نمط معماري موجه نحو الخدمة حيث يتم بناء التطبيقات كمجموعة من وحدات الخدمة المستقلة الأصغر حجمًا. وهو نهج هندسة برمجيات يركز على تحليل التطبيق إلى وحدات ذات وظيفة واحدة مع واجهات محددة جيدًا.
يمكن نشر هذه الوحدات وتشغيلها بشكل مستقل بواسطة فرق صغيرة تمتلك دورة حياة الخدمة بالكامل.
يشير المصطلح "micro" إلى حجم الخدمة الصغيرة التي يجب إدارتها بواسطة فريق تطوير واحد (من 5 إلى 10 مطورين). في هذه المنهجية، يتم تقسيم التطبيقات الكبيرة إلى أصغر وحدات مستقلة.
الفرق بين SOA والخدمات المصغرة
فيما يلي الاختلافات بين SOA والخدمات المصغرة:
| SOA (موجهة نحو الخدمة Archiبنية) | Microservices |
|---|---|
| الخدمية يحتوي النموذج على طبقة تخزين بيانات واحدة تتم مشاركتها بواسطة جميع الخدمات في هذا التطبيق. | تُخصص تطبيقات الخدمات الصغيرة في الغالب قاعدة بيانات أو أي نوع آخر من وحدات التخزين للخدمات التي تحتاج إليها. |
| يستخدم الاتصال بين الخدمات المختلفة في تطبيق SOA أساليب بسيطة ومباشرة. | تستخدم الخدمات المصغرة واجهات برمجة تطبيقات معقدة. |
| التركيز على زيادة إمكانية إعادة استخدام خدمة التطبيق إلى الحد الأقصى. | أكثر تركيزا على الانفصال. |
| يتطلب التغيير المنهجي تعديل المونوليث. | التغيير المنهجي يساعدك على إنشاء خدمة جديدة. |
| أصبحت DevOps والتسليم المستمر شائعة ولكنها لم تصبح سائدة بعد. | التركيز القوي على DevOps والتسليم المستمر |
| متجانسة في الطبيعة | مكدس كامل في الطبيعة |
| يدعم بروتوكولات الرسائل المتعددة. | يستخدم بروتوكولات خفيفة الوزن مثل HTTP أو REST أو Thrift APIs. |
| وهي مصممة لمشاركة الموارد عبر الخدمات. | وهو مصمم لاستضافة الخدمات التي يمكن أن تعمل بشكل مستقل. |
| يتضمن في كثير من الأحيان مشاركة المكونات | عادةً، لا يتضمن مشاركة المكونات |
| يتضمن مشاركة تخزين البيانات بين الخدمات | يمكن أن تحتوي كل خدمة على مخزن بيانات مستقل. |
| أفضل للتكاملات واسعة النطاق | أفضل للتطبيقات الصغيرة والمعتمدة على الويب. |
| التواصل من خلال ESB | التواصل من خلال طبقة API |
| يعتمد على تقاسم الموارد | يعتمد على السياق المحدد للاقتران. |
| Less المرونة في النشر | النشر السريع والسهل. |
| كومة التكنولوجيا الخاصة بـ SOA أقل مقارنةً بـ Microservice. | يمكن أن تكون حزمة تكنولوجيا الخدمات الصغيرة كبيرة جدًا. |
| وحدات الأعمال تعتمد. | وحدات الأعمال مستقلة عن بعضها البعض. |
| يتكون تطبيق SOA من خدمتين أو ثلاث خدمات. | يمكن أن يحتوي تطبيق الخدمات المصغرة على عشرات الخدمات. |
| تم تصميم تطبيقات SOA لأداء العديد من المهام التجارية. | لقد تم تصميمها لأداء مهمة عمل واحدة. |
| النشر هو عملية تستغرق وقتا طويلا. | النشر بسيط ويستغرق وقتًا أقل. |
| يتم تخزين مكونات منطق الأعمال داخل بروتوكولات سلكية بسيطة لمجال خدمة واحدة (HTTP مع XML JSON) ويتم تشغيل واجهة برمجة التطبيقات (API) مع SDKs/العملاء. | يمكن أن يعيش منطق الأعمال عبر ناقل خدمة المؤسسة في المجالات مثل طبقات منفصلة بين الخدمات. |
| يستخدم ناقل خدمة المؤسسة (ESB) للاتصال | ويستخدم نظام المراسلة الأقل تفصيلاً ومباشرة |
| حجم البرنامج أكبر من أي برنامج تقليدي | حجم البرنامج صغير في الخدمات المصغرة |
| متعدد الخيوط مع حملات علوية متعددة للتعامل مع الإدخال/الإخراج | يتم استخدام الخيوط المفردة في الغالب مع ميزات Event Loop لمعالجة الإدخال/الإخراج غير المقفلة |
| التغيير المنهجي اللازم لتعديل متراصة | في الخدمات المصغرة، التغيير المنهجي هو إنشاء خدمة جديدة |
| التركيز على تعظيم إمكانية إعادة استخدام خدمة التطبيق. | التركيز على الانفصال. |
| الحوكمة والمعايير المشتركة. | حكم مريح، مع التركيز بشكل أكبر على تعاون الناس وحرية الاختيار. |
| تستغرق عملية النشر وقتًا طويلاً. | النشر سهل وأقل استهلاكا للوقت. |
| Less هندسة قابلة للتطوير. | هندسة قابلة للتطوير بدرجة كبيرة. |
ما هو الخدمية Archiتكنولوجيا؟
الهندسة المعمارية الموجهة نحو الخدمة هي أسلوب من أساليب تصميم البرمجيات. تنقسم الهندسة المعمارية إلى قسمين
- الجوانب الوظيفية و
- جوانب جودة الخدمة.
دعونا نرى كليهما بالتفصيل:

الجوانب الوظيفية
الجانب الوظيفي يحتوي على:
النقل: يقوم هذا المكون بنقل طلبات الخدمة من مستهلك الخدمة إلى مزود الخدمة واستجابات الخدمة منهم إلى مستهلك الخدمة.
بروتوكول اتصالات الخدمة: يتيح لمقدم الخدمة والمستهلك التواصل مع بعضهما البعض.
الخدمة Descriptأيون: يوضح الخدمة والبيانات المطلوبة لاستدعائها.
الخدمة: إنها خدمة فعلية.
طريقة العمل: يمثل هذا المكون مجموعة الخدمات التي يتم استدعاؤها في تسلسل محدد مسبقًا مرتبط بقواعد محددة لتلبية متطلبات العمل.
سجل الخدمة: يحتوي هذا السجل على وصف البيانات التي يستخدمها مقدمو الخدمة لنشر خدماتهم.
جوانب جودة الخدمة
جودة الخدمة تحتوي على:
- سياسة: إنها مجموعة من البروتوكولات التي بموجبها يقوم مقدمو الخدمة بإنشاء الخدمات وتقديمها للمستهلكين.
- الأمن: وهو يمثل مجموعة البروتوكولات اللازمة لعملية تحديد الهوية والترخيص.
- الصفقة: فهو يوفر ضمان نتائج متسقة.
- الإدارة: يساعدك هذا المكون من SOA على تحديد مجموعة السمات المستخدمة لإدارة الخدمات.
ما هي الخدمة المصغرة Archiتكنولوجيا؟
إنه أسلوب تطوير معماري يسمح ببناء تطبيق كمجموعة من الخدمات المستقلة الصغيرة المطورة لمجال الأعمال.
لنأخذ مثالاً لتطبيق تجارة إلكترونية تم تطويره باستخدام بنية الخدمات المصغرة. في هذا المثال، تركز كل خدمة مصغرة على قدرة تجارية واحدة. كل من البحث والتقييم والمراجعة والدفع لها مثيل (خادم) وتتواصل مع بعضها البعض.

في هذا متجانسة Archiفي البنية، تجتمع جميع المكونات في وحدة واحدة. لكن في الخدمات المصغرة Archiوهي مقسمة إلى وحدات فردية (خدمة صغيرة) تتواصل مع بعضها البعض.
يعد الاتصال بين الخدمات الصغيرة بمثابة اتصال عديم الحالة حيث يكون كل زوج من الطلبات والاستجابة مستقلاً. وبالتالي، يمكن للخدمات الصغيرة التواصل بسهولة. في الخدمة المصغرة Architecture، يتم توحيد البيانات. تحتوي كل خدمة Microservice على مخزن بيانات منفصل.
ميزات الخدمية
فيما يلي ميزات مهمة لـ SOA
- تستخدم SOA واجهات تعمل على حل مشكلات التكامل الصعبة في الأنظمة الكبيرة.
- تتواصل SOA مع العملاء ومقدمي الخدمات والموردين باستخدام مخطط XML.
- يستخدم SOA مراقبة الرسائل لتحسين قياس الأداء واكتشاف الهجمات الأمنية.
- نظرًا لأنه يعيد استخدام الخدمة، فإن التكلفة أقل قليلاً لتطوير البرامج وإدارتها.
مميزات الخدمات المصغرة
فيما يلي الميزات الأساسية للخدمات المصغرة:
- في وحدات الخدمات المصغرة تكون مترابطة بشكل فضفاض
- إدارة المشروع، ويمكن أيضا أن تكون وحدات.
- تكلفة قابلية التوسع هزيلة
- من السهل جدًا استخدام تقنيات متعددة كميزات متعددة في التطبيق.
- إنها خدمة مثالية للأنظمة المتطورة حيث لا يمكنك توقع أنواع الأجهزة التي قد تصل يومًا ما إلى تطبيقك.
مزايا الخدمية
فيما يلي إيجابيات/فوائد SOA
- يعد تحرير وتحديث أي خدمة أمرًا سهلاً
- تتمتع الخدمات بنفس بنية الدليل، مما يسمح للمستهلكين بالوصول إلى بيانات الخدمة من نفس الدليل في كل مرة.
- تتواصل الخدمات مع التطبيقات الأخرى باستخدام لغة مشتركة مما يعني أنها مستقلة عن النظام الأساسي
- عادةً ما تكون الخدمات صغيرة الحجم مقارنة بالتطبيق الكامل. ولذلك، فمن الأسهل تصحيح الأخطاء واختبار الخدمات المستقلة.
- تسمح SOA بإعادة استخدام خدمة النظام الحالي، وبناء النظام الجديد بالتناوب.
- إنها تقدم إمكانية إضافة خدمات جديدة أو ترقية المرافق الحالية لتلبية متطلبات العمل الجديدة.
- يمكنك تحسين أداء الخدمة ووظائفها وترقية النظام بسهولة.
- يمكن لـ SOA ضبط أو تعديل البيئات الخارجية المختلفة
- يمكن للشركات تطوير التطبيقات دون استبدال التطبيقات الموجودة.
- إنه يقدم تطبيقات موثوقة يمكنك من خلالها اختبار الخدمات المستقلة وتصحيح أخطائها مقارنة بعدد كبير من التعليمات البرمجية.
الاستفادة من الخدمات الصغيرة
فيما يلي إيجابيات/فوائد استخدام الخدمات الصغيرة:
- نمط معماري أسهل يسهل على المطورين فهمه
- يعد IDE أسرع مما يجعل المطورين أسرع وأكثر إنتاجية
- تبدأ حاوية الويب بشكل أسرع؛ وهذا يساعد على تسريع عملية النشر والتطورات.
- فهو يسمح للفريق بتطوير خدماتهم ونشرها وتوسيع نطاقها بشكل مستقل عن جميع الفرق الأخرى.
عيوب الخدمية
فيما يلي سلبيات/عيوب استخدام بنية الخدمة الموجهة:
- يجب التحقق من صحة جميع المدخلات قبل إرسالها إلى الخدمة
- SOA هي خدمة مكلفة من حيث الموارد البشرية والتطوير والتكنولوجيا.
- تحتاج بعض خدمات الويب إلى إرسال واستقبال الرسائل والمعلومات بشكل متكرر، لذلك تصل إلى مليون طلب يوميًا بسهولة.
- يتطلب SOA تكلفة استثمارية عالية
- هناك حمل أكبر عندما تتفاعل خدمة مع خدمة أخرى، مما يؤدي إلى زيادة وقت الاستجابة
- خدمة SOA ليست مناسبة لتطبيقات GUI (واجهة المستخدم الرسومية)، لذا ستصبح أكثر تعقيدًا عندما تحتاج SOA إلى تبادل كثيف للبيانات.
عيوب الخدمات الصغيرة
فيما يلي سلبيات/عيوب الخدمات الصغيرة:
- تم تطويره لبناء تطبيقات متجانسة، لذا فهو لا يوفر دعمًا صريحًا للتطوير.ping التطبيقات الموزعة.
- الاختبار أكثر صعوبة
- يجب على المطورين تنفيذ آلية الاتصال بين الخدمات.
- يتطلب تنفيذ حالات الاستخدام التي تشمل خدمات متعددة التنسيق بين الفرق.
- تعد الخدمة المصغرة مكلفة، حيث تحتاج دائمًا إلى الاحتفاظ بمساحة خادم مختلفة لمهام العمل المختلفة
التي Archiالتكنولوجيا أفضل؟
تُعد SOA طريقة معمارية مثالية لتطبيقات الأعمال الكبيرة والمعقدة. وهي الأنسب للبيئات التي تتطلب التكامل مع العديد من التطبيقات المتنوعة.
ومع ذلك، فإن التطبيقات القائمة على سير العمل والتي لديها تدفق معالجة محدد جيدًا تشكل تحديًا في التنفيذ بمساعدة أنماط بنية SOA. وبالتالي فإن التطبيقات الصغيرة ليست مثالية أيضًا لـ SOA لأنها لا تتطلب مكونات مراسلة وسيطة. من ناحية أخرى، فإن نمط الخدمة المصغرة مناسب تمامًا للأنظمة المستندة إلى الويب الأصغر حجمًا والمقسمة جيدًا.
