Logo

الخدمات الصغيرة مقابل البُنى الأحادية: اختيار المعمارية الصحيحة

  • الرئيسية
  • المدونة
  • الخدمات الصغيرة مقابل البُنى الأحادية: اختيار المعمارية الصحيحة
Images
Images

الخدمات الصغيرة مقابل البُنى الأحادية: اختيار المعمارية الصحيحة

مقدمة

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

الرواية السائدة على مدار العقد الماضي كانت في معظمها لصالح الخدمات الصغيرة، دعمًا بقصص النجاح البارزة لـ Netflix وAmazon وUber. لكن رواية مضادة أكثر دقة ظهرت مؤخرًا مع دفاع شركات مثل Shopify وStack Overflow عن فضائل المعماريات الأحادية المنظمة جيدًا.

تعريف المعماريتين

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

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

الحجج لصالح البُنى الأحادية

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

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

الحجج لصالح الخدمات الصغيرة

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

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

التكاليف الخفية للخدمات الصغيرة

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

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

اتخاذ الخيار المعماري الصحيح

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

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

خاتمة

نقاش الخدمات الصغيرة مقابل البُنى الأحادية هو في نهاية المطاف صرف للاهتمام عن السؤال الأجوهر: أي معمارية تُمكّن فرقك على أفضل وجه من تسليم القيمة لعملائك في حجمك التنظيمي الحالي ومرحلة نضج منتجك؟ والجواب سيتغير مع الزمن.

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