DomiraTechnology & Digital Development استشارة مجانية

تعدد المستأجرين: قرار معماري يصعب تغييره لاحقا

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

فهرس المقالة
  1. ثلاثة نماذج
  2. فرض العزل
  3. التخصيص بلا تشعيب
  4. الجار الصاخب
  5. الترقيات والترحيل
خلاصة سريعة
  • العزل يفرض في مستوى البيانات لا في مستوى الكود وحده.
  • قاعدة مشتركة أوفر وأسهل تشغيلا، ومنفصلة أقوى عزلا وأغلى.
  • كل استعلام يجب أن يقيد بمعرف المستأجر بلا استثناء.
  • التخصيص لعميل واحد في الكود يفسد المنتج للجميع.

ثلاثة نماذج

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

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

فرض العزل

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

واختبر ذلك صراحة: اختبار آلي يحاول الوصول لبيانات مستأجر آخر ويجب أن يفشل. وهذا الاختبار يجب أن يشغل مع كل تغيير.

التخصيص بلا تشعيب

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

الجار الصاخب

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

الترقيات والترحيل

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

أسئلة شائعة

أي نموذج نختار في البداية؟

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

كيف نتعامل مع طلب عزل كامل من عميل؟

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

ما أخطر خطأ في التنفيذ؟

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

برامج SaaS بنموذج الاشتراك ننفذ ما قرأته عنه هنا — بنطاق مكتوب وتكلفة واضحة قبل أي سطر كود.
تفاصيل الخدمة
كلمات مفتاحية
  • تعدد المستأجرين
  • multi-tenancy
  • معمارية SaaS
  • عزل البيانات
  • قابلية التوسع
  • أمن البيانات
  • تصميم الأنظمة
  • منتجات SaaS