جميع المقالات

بنية SaaS متعددة المستأجرين: دروس من منصات حقيقية

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

بقلم أمير نصارقراءة 4 دقائق
المحتويات

تخدم تطبيقات SaaS متعددة المستأجرين عملاء كثيرين من قاعدة شيفرة واحدة، مع ضمان أن يرى كل عميل بياناته وهويته البصرية فقط. بنينا منذ 2022 منصات بهذا الأسلوب، منها نظام لإدارة المنشآت ومنصة تعلم عربية تعمل فيها مراكز التدريب بهوية مستقلة. هذه أبرز القرارات التي شكلت تلك المشاريع.

احسم نموذج تعدد المستأجرين أولًا

هناك ثلاثة أنماط شائعة للفصل، ويؤثر اختيار أحدها في التشغيل والصيانة والخصوصية.

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

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

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

أخطر أخطاء الأنظمة متعددة المستأجرين استعلام ينسى مرشح المستأجر. لا تجعل السلامة رهينة ذاكرة كل مطور؛ يمكن لنطاق عام في Laravel على النماذج التابعة للمستأجر أن يضيف المرشح تلقائيًا، كما يساعد نموذج أساس واضح على تقليل الاستثناءات غير المقصودة.

اختبر العزل صراحةً

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

انتبه إلى المواضع التي لا تصل إليها النطاقات

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

الهوية والنطاقات ميزتان في المنتج

يتوقع عملاء العلامة البيضاء شعارهم وألوانهم، وأحيانًا نطاقهم الخاص. خزّن إعدادات الهوية كبيانات لكل مستأجر، وحدد المستأجر من المضيف الوارد، ووفّر نطاقًا فرعيًا احتياطيًا. خطط للشهادات مبكرًا لأن النطاقات الخاصة تحتاج إصدار HTTPS وتجديده آليًا.

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

الفوترة والحدود والخطط

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

التشغيل عند التوسع

قوائم المهام والعدالة

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

الترحيلات والإصدارات

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

النسخ الاحتياطي وتصدير البيانات

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

قائمة قصيرة قبل التطوير

  1. أي نموذج يناسب احتياجات العزل والتكلفة الآن، وما الذي يستدعي الانتقال إلى غيره؟
  2. كيف نحدد المستأجر: بالنطاق الفرعي أم الخاص أم بمسار URL؟
  3. كيف تمر هوية المستأجر عبر النطاقات العامة ومفاتيح الذاكرة ومسارات الملفات والمهام؟
  4. ما الذي يمكن تخصيصه: الهوية واللغة والمزايا والحدود؟
  5. كيف نصدر بيانات مستأجر واحد وننسخها ونحذفها بأمان؟

كتابة الإجابات قبل بدء التطوير توفر إعادة العمل لاحقًا. إذا كنت تخطط لمنتج SaaS وتحتاج مراجعة معمارية، استكشف خدماتنا أو تحدث إلى فريق نارمار؛ يسعدنا اختبار افتراضاتك قبل أن تصبح شيفرة.

شارك المقال

تخطط لمشروع مشابه؟

حدّثنا عن مشروعك، وسنعود إليك خلال يوم عمل واحد بالخطوات التالية وتقدير واقعي للتكلفة.

تحدّث مع مهندسينا

استلم مقالنا القادم في بريدك الإلكتروني

خلاصات عملية حول البرمجيات وAI وأنظمة ERP للشركات في مرحلة النمو. بلا رسائل مزعجة، ويمكنك إلغاء الاشتراك بنقرة واحدة.

  • Laravel
  • Inertia
  • React

لوحات معلومات فورية باستخدام Inertia وReact في Laravel

تبدو لوحة المعلومات حية عندما تتحدث البيانات المناسبة في الوقت المناسب. قارن إعادة التحميل الجزئي والاستطلاع والخصائص المؤجلة والبث في بنية Laravel وInertia وReact.

قراءة 5 دقائق