Monolith أم Microservices؟ اختر حسب تكلفة التشغيل
قد تسمح Microservices بنشر قدرات أعمال مستقلة، لكنها تضيف تحديات تتبع موزع وفشل شبكي ونشر واتساق بيانات. قد يكون Monolith منظمًا البداية الأكثر ملاءمة.
Read in English
محتويات هذا الدليل
اختر حدودًا يستطيع الفريق تشغيلها
تساعد العمارة الجيدة المؤسسة على تغيير النظام وتشغيله بوضوح. يجمع التطبيق الأحادي مكونات النظام في وحدة نشر واحدة، بينما تفصل الخدمات المصغرة قدرات يمكن تشغيلها بصورة مستقلة. الاسم وحده لا يثبت وضوح قواعد العمل أو سهولة الصيانة أو القدرة على التعافي.
السؤال المفيد للمدير التقني هو: أي استقلال نحتاجه فعلًا، وما تكلفته؟ لا تستبدل تطبيقًا يعمل لمجرد أن عمارة أخرى تبدو أحدث. وفي المقابل، ادرس الفصل إذا احتاجت قدرة محددة إلى نشر أو توسع أو ملكية تشغيل مستقلة بدليل واضح.
تتبع معاملة افتراضية واحدة
لنفترض موزعًا لديه إدخال طلبات وحجز مخزون وإصدار فواتير. يمكن للتطبيق الأحادي المنظم فصل هذه المسؤوليات بواجهات داخلية واضحة، مع بقائها ضمن إصدار واحد. وقد تنفذ المعاملة داخل حد قاعدة بيانات واحد إذا ناسبه التصميم.
عند فصلها إلى خدمات، تظهر استدعاءات شبكية أو رسائل غير متزامنة. قد يصل الطلب إلى المخزون بينما تتوقف الفوترة. يحتاج النظام حينها إلى حالة تقدم جزئي وإعادة آمنة وشرح صادق للمستخدم. لم تختفِ المعاملة؛ انتقلت مسؤولية تنسيق نتيجتها إلى التطبيق والتشغيل.
تصف إرشادات Microsoft الخدمات حول قدرات أعمال محددة وتوضح تعقيد النظام كأحد المقايضات. وتناقش إرشادات البيانات الملكية والاتساق بين الخدمات. لا يحدد المرجعان حجم شركة أو مرورًا ثابتًا يجعل الفصل ضروريًا تلقائيًا.
افصل التنظيم عن عدد العمليات
يمكن لوحدة نشر واحدة أن تملك وحدات واضحة وواجهات داخلية وقيودًا على الوصول المباشر إلى بيانات الوحدات الأخرى. يساعد ذلك على الصيانة والفصل مستقبلًا دون تحمل تكلفة الأنظمة الموزعة فورًا.
وبالعكس، قد تظل خدمات متعددة شديدة الترابط إذا عدلت الجداول نفسها واحتاجت إلى النشر معًا. ابدأ بملكية القواعد والسجلات؛ خلاف الفريق حول من يغير حالة الطلب لن يحله رسم صناديق أكثر في المخطط.
احسب عبء التشغيل صراحة
حدد لكل خدمة مقترحة مالكها ومسار نشرها وبيانات دخولها ومراقبتها وسجلاتها واستعادتها والمسؤول عن أعطالها. اشرح مصادقة المتصل والتعامل مع توقف التبعيات. قد يكون الإصدار المشترك أنسب لفريق صغير حتى تتجاوز الحاجة تكلفة الفصل.
- ما القدرة التي يجب نشرها دون تنسيق مع بقية النظام؟
- هل توجد قياسات تبين اختلاف احتياجات الموارد؟
- ما البيانات التي تحتاج اتساقًا فوريًا، وما الذي يحتمل التأخير؟
- من يتتبع طلبًا يمر عبر عدة خدمات؟
- كيف تُستعاد معاملة جزئية دون تعديل يدوي عشوائي؟
استقلال النشر يحتاج عقودًا متوافقة وعملية تغيير. يمكن لخدمة منشورة منفردة أن تكسر عميلًا يعتمد على حقل أو انتقال حالة غير موثق.
اجعل اتساق البيانات قرار أعمال
قد يحتاج وعد المخزون إلى قرار مؤكد قبل قبول الطلب، بينما يحتمل تقرير إداري التأخير. وضح ما يمكن أن يكون قديمًا وحدود التأخير المقبولة وما يحدث إذا لم يصل التحديث. وصف «اتساق لاحق» وحده لا يشرح ذلك.
حدد مصدر الحقيقة لكل سجل. وإذا احتاجت خدمات أخرى نسخًا، فوثق النشر والمطابقة. لا تنشئ نسخًا مستقلة قابلة للكتابة من العميل أو الطلب ثم تفترض أن المزامنة ستحسم التعارض.
انقل قدرة مبررة واختبر فشلها
عند الحاجة للفصل، اختر حدًا بملكية بيانات مفهومة وفائدة واضحة. قدم واجهة متوافقة وانقل حملًا محدودًا، مع انتقال قابل للرجوع حيث يمكن. وقد يكفي بدلًا من الفصل تنظيم وحدة داخل التطبيق أو معالجة اختناق مقاس.
في مثال الموزع، أوقف الفوترة بعد الحجز وافحص النتيجة: هل يرى المشغل العمل غير المكتمل؟ وهل يستأنف دون فاتورة مكررة أو حجز مفقود؟ قس جهد النشر والتشخيص أيضًا. تناقش عمارة برمجيات المؤسسات حدود العمل وقدرة التشغيل، لا العدد المرغوب من الخدمات.
مراجع أساسية وتوسع في القراءة
اربط الفكرة باحتياج شركتك.
وضح أهدافك والأنظمة الحالية والقيود المهمة قبل اختيار الحل.
الحلول البرمجية
