خلاصه اجرایی

معماری Multi-Tenant به چند شرکت اجازه می‌دهد از یک SaaS استفاده کنند بدون اینکه داده‌هایشان با هم ترکیب شود. در این مقاله مدل‌های دیتابیس، امنیت، Tenant Isolation و Scale را بررسی می‌کنیم.

# معماری Multi-Tenant در SaaS چیست؟ طراحی امن چندمستاجری برای نرم افزار SaaS

یکی از مهم‌ترین تصمیم‌ها هنگام طراحی یک محصول SaaS، انتخاب معماری Multi-Tenant مناسب است.

فرض کنید نرم افزار شما توسط ۵۰۰ شرکت استفاده می‌شود.

هر شرکت دارای:

  • کاربران
  • مشتریان
  • پروژه‌ها
  • فایل‌ها
  • گزارش‌ها

است.

تمام این شرکت‌ها از یک Product استفاده می‌کنند.

اما یک Rule غیرقابل مذاکره وجود دارد:

هیچ Tenant نباید بتواند Data Tenant دیگر را مشاهده یا تغییر دهد.

همین مسئله پایه معماری چندمستاجری است.

Multi-Tenant چیست؟

Multi-Tenancy مدلی است که چند Customer مستقل از یک Application مشترک استفاده می‌کنند.

هر Customer یا Organization یک Tenant محسوب می‌شود.

مثلاً SaaS مدیریت آموزشگاه:

Tenant A:

آموزشگاه تهران

Tenant B:

آموزشگاه شیراز

Tenant C:

آموزشگاه کرج

هرکدام:

  • مدیر
  • مدرس
  • دانشجو
  • کلاس

خود را دارند.

اما Application اصلی مشترک است.

Tenant چیست؟

Tenant معمولاً یک مرز تجاری و امنیتی است.

می‌تواند:

  • شرکت
  • سازمان
  • کلینیک
  • فروشگاه
  • مدرسه

باشد.

تمام Dataهای عملیاتی باید به Tenant مرتبط باشند.

چرا Multi-Tenancy مهم است؟

بدون طراحی درست، مشکلات جدی ایجاد می‌شوند:

  • نشت Data
  • گزارش اشتباه
  • Permission ناقص
  • Backup دشوار
  • Query کند
  • Scale نامناسب

در SaaS، اشتباه Multi-Tenancy فقط Bug ساده نیست؛ می‌تواند Incident امنیتی جدی باشد.

تفاوت Multi-Tenant و Multi-User

این دو مفهوم یکسان نیستند.

Multi-User

چند User در یک System.

Multi-Tenant

چند Organization مستقل در یک System.

یک Tenant می‌تواند صدها User داشته باشد.

مثال Data Model

فرض کنیم Entity پروژه داریم.

ساختار ساده:

Project

  • id
  • name
  • tenant_id

هر Query باید Context Tenant را رعایت کند.