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