إن الاختلافات بين الهندسة المعمارية المتجانسة والخدمات المصغرة متعددة ومعقدة. فكل منهما يقدم فوائد فريدة ولا يمكن ادعاء تفوق أي منهما على الآخر.
النهج الأحادي هو النموذج التقليدي للبرمجيات. تعكس الخدمات المصغرة تطوير البرمجيات في وقت لاحق، ولكن هذا لم يجعل الهندسة المعمارية المتجانسة عتيقة.
لنفترض أنك بدأت العمل في شركة ناشئة في مجال التكنولوجيا وتم تكليفك بتنفيذ خطة تكنولوجيا المعلومات للشركة الجديدة. أنت تواجه سلسلة من القرارات، ولكن لا يوجد قرار أساسي أو بعيد المدى مثل الاستقرار على بنية متجانسة أو بنية خدمات مصغرة. لا ينبغي أن يتم اختيار بنية البرمجيات من فراغ أو من دون فهم واضح لاحتياجات المؤسسة الأولية والنهائية لمعالجة البيانات لأن أي نهج بنائي يتم اختياره سيكون له تأثيرات عميقة في قدرة المؤسسة على تنفيذ أهدافها التجارية بشكل هادف.
لذا، فإن المخاطر هنا كبيرة. ولأنك المدير الجديد لقسم تكنولوجيا المعلومات، فهو أيضًا قرار مهم بالنسبة إليك على المستوى الشخصي—وهو قرار قد يقودك إلى طريق ذهبي من التقدم الوظيفي الذي لا يوصف، إذا اخترت بحكمة.
أيهما ستختار؟ أولاً، دعنا نلبي خياراتك.
كما ذكرنا، فإن البنية الأحادية هي نموذج تطوير البرمجيات التقليدي. وفيه تقوم قاعدة برمجية واحدة بتنفيذ وظائف متعددة (أي وظائف العمل). تتحكم نواة الكمبيوتر في جميع الوظائف. في التطبيقات المتجانسة، يتم الاحتفاظ بجميع التعليمات البرمجية المطلوبة لهذا التطبيق بأكمله داخل موقع مركزي.
عادةً ما تحتوي التطبيقات المتجانسة على المكونات التالية:
يحقق استخدام الهندسة المعمارية المتجانسة العديد من الفوائد:
يثير استخدام العمارة المتجانسة أيضًا مشكلات محتملة:
أما نموذج تطوير البرمجيات الآخر - الخدمات المصغرة - فهو أسلوب هندسي السحابة الأصلية. مع الخدمات المصغرة، يعتمد التطبيق على عناصر أو خدمات فردية متعددة ومقترنة بشكل فضفاض. تحتوي تطبيقات الخدمات المصغرة على مجموعة تقنيات خاصة بها، وهي عبارة عن مجموعة من التقنيات التي تعمل معًا لإنجاز مهمة معينة.
تتمثل الميزة الأساسية للخدمات المصغرة في كيفية تحديث النظام بسهولة لمعالجة القدرات داخل التطبيق من دون التأثير على النظام بأكمله. يمكن أن يترجم هذا إلى توفير كبير في كل من الوقت والعمالة.
مزايا الخدمات المصغرة عديدة. فهي تستوعب كلاً من نمو الأعمال المستمر والتغيرات التكنولوجية الجديدة:
توفر الخدمة المصغرة فوائد واضحة، لكن تعقيدها يثير بعض المشكلات، ومنها:
قبل أن نجري مقارنة مباشرة بين البنية المتجانسة وبنية الخدمات المصغرة، يجدر بنا استعراض بعض التفاصيل التاريخية لتوفير سياق أوسع.
في بعض النواحي، من الصعب إرجاع أصل الهندسة المعمارية المتجانسة إلى تاريخ واحد؛ فكلما كانت التقنية أكثر تعقيدًا، كان من الصعب تحديد تاريخ تسليم تلك التكنولوجيا بدقة. وهكذا هو الحال مع الهندسة المعمارية المتجانسة، التي بدأ تطويرها في منتصف القرن العشرين.
لطالما كانت شركة International Business Machines (IBM®) لاعبًا رئيسيًا في هذا التطور المبكر. وفقًا للمساهم في DZone Pier-Jean Malandrino، "... أدت شركات مثل IBM دورًا أساسيًا في تحديد بنية البرمجيات المبكرة من خلال تطويرها لأجهزة الكمبيوتر المركزي في ستينيات وسبعينيات القرن العشرين".1
لم تكن البنيات المتجانسة مثالية—فغالبًا ما كانت تُكتب بلغات فائقة الدقة وكان الهدف منها أن تقرأها آلة واحدة. نظرًا إلى أن آلة واحدة فقط تحتوي على النظام بأكمله، فقد تم ربط جميع عناصر الكمبيوتر بشكل وثيق. كان التوسع إما غير موجود أو بالكاد ممكنًا، وعادة ما يتطلب إعادة بناء النظام بالكامل.
بدلاً من ذلك، إذا بدت البنية الأحادية بدائية بعد فوات الأوان، فهذا يرجع جزئيًا إلى أنها كانت موجودة أولاً، قبل أي نظام آخر لهندسة البرمجيات. وقد ثبت أنه مفيد باستمرار، وحتى مرن، بمرور الوقت. إن حقيقة أن البنى الأحادية لا تزال تُستخدم بعد سبعة عقود من طرحها تتحدث كثيرًا عن صناعات لا يبقى فيها عادةً سوى التغيير المستمر.
لقد صمدت الهندسة المعمارية الأحادية لكنها لم تعد اللعبة الوحيدة في المدينة، ولم تكن كذلك لبعض الوقت. مع تقدم ثمانينيات القرن الماضي، شهدت هندسة البرمجيات اندفاعًا نحو النمطية واستخدام لغات البرمجة الموجهة للكائنات. بحلول تسعينيات القرن العشرين، أصبح المسرح مهيأً للأنظمة الموزعة التي قد تستفيد من التطورات الأخيرة في الحوسبة الشبكية.
وقد أدى هذا في نهاية المطاف إلى تطوير الخدمات المصغرة، والتي دخلت حيز الاستخدام على نطاق واسع بعد بداية الحوسبة السحابية وتقنيات النقل بالحاويات في العقد الأول من القرن الحادي والعشرين. تم إنشاء بنية الخدمات المصغرة لتحسين النموذج الأحادي من خلال تهيئته للتوسع السريع والأنظمة اللامركزية.
الآن، في عام 2020، يدور تطوير البرمجيات إما من بنية أحادية أو بنية الخدمات المصغرة. استنادًا إلى ما اعتدنا على توقعه من التغيير التقني، قد يكون تفكيرنا المبدئي هو افتراض أن التقنية التي وصلت مؤخرًا هي الأفضل، وفي بعض الظروف، هذا هو الحال بالتأكيد.
ومع ذلك، فإن الإدلاء بهذا النوع من التصريحات الشاملة أمر خطير، ويرجع ذلك إلى حد كبير إلى أنه ببساطة غير صحيح. لا يزال هناك العديد من حالات الحوسبة التي تستفيد من بساطة نموذج البنية المتجانسة.
لكلا البنيتين البرمجيتين مزايا وعيوب، وتحتاج الشركات إلى تقييم كلا النوعين بعناية والنظر في احتياجاتها المتوقعة لتطوير التطبيقات قبل اعتماد نظام دون الآخر.
كيف تقارن بين البنية المتجانسة وبنية الخدمات المصغرة عند النظر إليها من منظور المراحل التشغيلية الرئيسية؟
هناك عدد غير محدود تقريبًا من حالات الاستخدام التي يمكن تحقيقها باستخدام إما بنية أحادية أو بنية الخدمات المصغرة. فيما يلي بعض من أكثرها انتشارًا.
إن أي تنفيذ واسع النطاق للبنية المتجانسة أو بنية الخدمات المصغرة سيكون مضللاً حتمًا إذا تم الانتهاء من تصميمه في فراغ فعال، من دون النظر أولاً إلى الجزء الأهم من المعادلة—الاحتياجات الخاصة بشركتك التقنية الناشئة.
بصفتك مديرًا لتكنولوجيا المعلومات، فإن هذا هو النشاط الأكثر حساسية عند التخطيط لقرارات البنية التحتية للبرمجيات. من الضروري معرفة وقت استخدام النمط المعماري، وكذلك فهم النظام الأنسب بناءً على الاستخدامات المطلوبة.
يُعتد تمرين التحليل الذاتي قيمًا للغاية لأن مهمتك لا تقتصر على اختيار النظام المعماري الأمثل لمؤسستك فحسب، بل أيضًا تقدير النظام المعماري الذي ستحتاجه شركتك في الأشهر والسنوات القادمة. في بعض النواحي، يتم تكليفك بمهمة التنبؤ بالمستقبل.
ومن ثمًّ، في حين أن الهندسة المعمارية المتجانسة قد تبدو مثالية تمامًا لشركتك الناشئة، فإن الأمر متروك لك لتوقع النمو المستقبلي. وإذا كان من المتوقع التوسع الشامل، فقد يكون من الحكمة المضي قدمًا والاستثمار في بنية الخدمات المصغرة. هناك العديد من المتغيرات التي يجب أخذها في الحسبان:
تؤدي كل الروابط إلى صفحات خارج ibm.com.
1 "تطوُّر هندسة البرمجيات: من الأحادية إلى الخدمات المصغَّرة وما بعدها"، بيير جان مالاندرينو، DZone، 11 نوفمبر 2023.
2 “Retail e-commerce sales worldwide from 2014 to 2027,” Statista, May 2024
خدمة مُدارة بالكامل ومستأجر واحد لتطوير تطبيقات Java وتسليمها.
استخدم أدوات وبرمجيات عمليات التطوير لإنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها عبر أجهزة وبيئات متعددة.
إن تطوير تطبيقات السحابة يعني البناء مرة واحدة، والتكرار بسرعة، والنشر في أي مكان.