المعمارية متعددة المستأجرين في SaaS: ثلاث مقاربات ومعايير الاختيار
كيف تُفصل بيانات كل عميل عن غيره في منتج SaaS؟ مقارنة بين مقاربات المخطط المشترك والمخطط المنفصل وقاعدة البيانات المنفصلة من حيث العزل والتكلفة والتشغيل.
Alpمدة القراءة: 2 د
في منتجات SaaS يخدم تطبيق واحد عددًا كبيرًا من العملاء. يُسمّى كل عميل "مستأجرًا" (tenant) ويجب ألا يرى بياناته أحد سواه. وكيفية فصل بيانات المستأجرين قرار معماري يؤثر لسنوات في تكلفة المنتج وأمانه وعبء تشغيله.
ثلاث مقاربات أساسية
1. قاعدة بيانات مشتركة ومخطط مشترك
تُحفظ بيانات جميع المستأجرين في الجداول نفسها؛ ويحمل كل صف حقلًا يبيّن المستأجر الذي ينتمي إليه. وتُصفّى كل الاستعلامات وفق هذا الحقل. وهي المقاربة الأبسط إعدادًا وتشغيلًا والأكفأ في استخدام الموارد.
وخطرها أن استعلامًا واحدًا نُسيت فيه التصفية قد يعرض بيانات مستأجر آخر. ويُخفَّف هذا الخطر بجعل التصفية إلزامية على مستوى قاعدة البيانات بدل تركها لكود التطبيق؛ فمثلًا تُستخدم لهذا الغرض ميزة الأمان على مستوى الصفوف في PostgreSQL.
2. قاعدة بيانات مشتركة ومخطط منفصل لكل مستأجر
يتشارك المستأجرون خادم قاعدة البيانات نفسه، لكن جداول كلٍّ منهم تُحفظ في مخطط منفصل. العزل أقوى، واستعادة بيانات مستأجر واحد من النسخة الاحتياطية تصبح أسهل. في المقابل، كلما ازداد عدد المستأجرين صعُب تطبيق تغييرات المخطط على جميع المخططات.
3. قاعدة بيانات منفصلة لكل مستأجر
لكل مستأجر قاعدة بياناته الخاصة. العزل في أعلى مستوياته؛ فالاستخدام الكثيف من مستأجر لا يؤثر في الآخرين، ويمكن تلبية طلبات مثل حفظ البيانات في منطقة معينة. وثمن ذلك تكلفة بنية تحتية أعلى وعبء تشغيلي ناتج عن إدارة عدد كبير من قواعد البيانات.
المقارنة
| المعيار | مخطط مشترك | مخطط منفصل | قاعدة بيانات منفصلة |
|---|---|---|---|
| عزل البيانات | منطقي | أقوى | الأقوى |
| التكلفة لكل مستأجر | الأدنى | متوسطة | الأعلى |
| تغيير المخطط | دفعة واحدة | لكل مخطط | لكل قاعدة بيانات |
| النسخ الاحتياطي والاستعادة الخاصان بالمستأجر | صعب | سهل | الأسهل |
| عدد كبير من المستأجرين الصغار | مناسب جدًا | محدود | غير مناسب |
| عدد قليل من المستأجرين المؤسسيين الكبار | قد يكون كافيًا | مناسب | مناسب جدًا |
ما الذي يحدد الاختيار؟
- نوعية العملاء: هل ستخدمون آلاف الشركات الصغيرة أم عددًا قليلًا من المؤسسات الكبيرة؟
- متطلبات العقود والتشريعات: هل يشترط العملاء حفظ بياناتهم منفصلة ماديًا؟
- مستوى التخصيص: هل سيغيّر المستأجرون الإعدادات فقط، أم سيطلبون حقولًا وسير عمل خاصة بهم؟
- قدرة الفريق: هل لديكم القدرة التشغيلية على مراقبة عدد كبير من قواعد البيانات وتحديثها؟
النموذج المختلط
يمكن أيضًا استخدام المقاربات معًا. ومن الترتيبات الشائعة حفظ عملاء الباقات المعيارية في مخطط مشترك وتقديم قاعدة بيانات منفصلة للعملاء المؤسسيين. ولكي يكون ذلك ممكنًا يجب أن تُحمَل معلومة المستأجر في كل طبقة من طبقات التطبيق منذ البداية.
ما يجب التفكير فيه خارج قاعدة البيانات
- الهوية والصلاحيات: يجب أن يُعرف على وجه اليقين المستأجر الذي تنتمي إليه كل جلسة؛ وإذا كان المستخدمون يستطيعون الانضمام إلى أكثر من مستأجر، فيجب تصميم الانتقال بينها بصورة آمنة.
- تقاسم الموارد: يجب ألا يُبطئ الاستخدام الكثيف من مستأجر واحد الآخرين. ولهذا الغرض تُستخدم حدود الطلبات وحصص لكل مستأجر للمهام التي تعمل في الخلفية.
- الملفات والتخزين المؤقت: يجب تحقيق العزل لا في قاعدة البيانات وحدها، بل في تخزين الملفات والتخزين المؤقت وفهرس البحث أيضًا.
- المراقبة: يجب أن تتضمن سجلات الأخطاء والأداء معلومة المستأجر؛ وإلا بقي سؤال "أي عميل تأثر؟" بلا جواب.
المخطط المشترك هو البداية الصحيحة لمعظم منتجات SaaS؛ والمهم أن يُصمَّم على نحو لا يمنع الانتقال إلى قاعدة بيانات منفصلة مستقبلًا.
للتخطيط معًا لمعمارية منتجكم، يمكنكم الاطلاع على خدمتنا في تطوير منتجات SaaS.