ما الفرق بين البنية المتجانسة وبنية الخدمات المصغرة؟


ما الفرق بين البنية المتجانسة وبنية الخدمات المصغرة؟

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

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

الاختلافات الرئيسية: الخدمات المتجانسة مقابل الخدمات المصغرة

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

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

بعد ذلك، نناقش المزيد من الاختلافات بين الأمرين.

القراءة عن واجهات برمجة التطبيقات (API) »

عملية التطوير

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

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

النشر

يُعد نشر التطبيقات المتجانسة أكثر وضوحًا من نشر الخدمات المصغرة. يقوم المطورون بتثبيت قاعدة التعليمات البرمجية للتطبيق بالكامل والتبعيات في بيئة واحدة. 

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

اقرأ حول التخزين في الحاويات »

إصلاح الأخطاء

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

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

التعديلات

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

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

القياس

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

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

التأثير التشغيلي: البنية المتجانسة مقابل بنية الخدمات المصغرة

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

الابتكار بشكل أسرع

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

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

الحد من المخاطر

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

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

تسريع وقت الوصول إلى السوق

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

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

تقليل إجمالي تكلفة الملكية

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

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

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

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

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

عندما تقرر الاختيار بين تطوير بنية الخدمات المصغرة والبنية المتجانسة، يمكنك مراعاة العوامل التالية.

حجم التطبيق

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

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

اطّلع على كيفية استخدم Netflix خدمة Lambda»

كفاءة الفريق

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

البنية التحتية

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

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

كيفية الانتقال من البنية المتجانسة إلى بنية الخدمات المصغرة

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

ضع خطة

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

ابحث عن شريك على السحابة

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

اعتماد ممارسات DevOps

احرص على تطبيق ثقافة DevOps في مؤسستك واستخدم أدوات التكامل المستمر والنشر المستمر (CI/CD) لدعم جهود الترحيل. DevOps هي ممارسة برمجية تسمح بدورة حياة تطوير أقصر باستخدام أدوات التشغيل الآلي. 

اقرأ عن DevOps »

أنشئ الخدمات المصغرة

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

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

الفئة

البنية المتجانسة

بنية الخدمات المُصغّرة

التصميم

قاعدة تعليمات برمجية أحادية بوظائف متعددة ومترابطة.

مكونات البرامج المستقلة ذات الوظائف المستقلة التي تتصل مع بعضها باستخدام واجهات API.

تطوير

يتطلب قدرًا أقل من التخطيط في البداية، ولكنه يزداد تعقيدًا عند فهمه والمحافظة عليه.

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

النشر

تم نشر التطبيق بالكامل باعتباره كيانًا واحدًا.

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

إصلاح الأخطاء

تتبع مسار التعليمات البرمجية في البيئة نفسها.

يتطلب أدوات متقدمة لتصحيح الأخطاء لتتبع تبادل البيانات بين الخدمات المصغرة المتعددة.

التعديل

تؤدي التغييرات الصغيرة إلى مخاطر أكبر لأنها تؤثر على قاعدة التعليمات البرمجية بأكملها.

يمكنك تعديل الخدمات المصغرة الفردية دون التأثير على التطبيق بأكمله.

المقياس

يجب عليك توسيع نطاق التطبيق بأكمله، حتى لو واجهت بعض المناطق الوظيفية فقط زيادة في الطلب.

يمكنك توسيع نطاق الخدمات المصغرة الفردية حسب الحاجة، ما يوفر تكاليف التوسع الإجمالية. 

الاستثمار

انخفاض الاستثمار الأولي على حساب زيادة الجهود الجارية وجهود الصيانة.

استثمار إضافي للوقت والتكلفة لإعداد البنية التحتية المطلوبة وبناء كفاءة الفريق. ومع ذلك، يتم توفير التكاليف على المدى الطويل والصيانة والقدرة على التكيف.

كيف يمكن لـ AWS دعم متطلبات بنية الخدمات المصغرة الخاصة بك؟

يمكنك إنشاء تطبيقات حديثة على Amazon Web Services (AWS) تتضمن أنماط تصميم معيارية، ونماذج تشغيلية بلا خوادم، وعمليات تطوير agile. نحن نقدم منصة كاملة لإنشاء خدمات مصغرة متاحة بشكلٍ كبير من أي نطاق وأي حجم.

على سبيل المثال، يمكنك استخدام خدمات AWS هذه لإعداد بنية الخدمات المصغرة وصيانتها:

  • خدمة الحاويات المرنة بـ Amazon (Amazon ECS) لإنشاء خدمات مصغرة آمنة وعزلها وتشغيلها في حاويات مُدارة لتبسيط العمليات وتقليل النفقات الإدارية.
  • AWS Lambda لتشغيل خدماتك المصغرة دون توفير خوادم وإدارتها.
  • AWS App Mesh لمراقبة الخدمات المصغرة والتحكم فيها
  • AWS X-Ray لمراقبة تفاعلات الخدمات المصغرة المعقدة وتصحيح أخطائها

بادر باستخدام الخدمات المصغرة على AWS عن طريق إنشاء حساب AWS اليوم.