بازگشت به کتابخانهکتابخانه15.1چندمستأجری (Multi-Tenancy)
طراحی سیستم نرم‌افزاریSYSTEM DESIGNاز صفر تا تسلط
v1.0.0
01مبانی و تصویر بزرگ
02Scalability و ظرفیت
03لایه داده
04Cache، Queue و جریان
05معماری نرم‌افزار
06قابلیت اطمینان و عملیات
07متد طراحی
08Case Study های واقعی
09سیستم‌های توزیع‌شده عمیق
10مهندسی تولید: داده، امنیت و کارایی
11تمرین پیشرفته و کیس‌استادی‌های مکمل
12زیر کاپوت دیتابیس و معماری داده
13وب بلادرنگ و پروتکل‌های مدرن
14سیستم‌های توزیع‌شده پیشرفته
15SaaS ،SRE ،امنیت و شبکه پیشرفته
16طراحی سیستم در عصر AI
17Case Study های تکمیلی
LESSON 15.1فصل ۱۵SaaS ،SRE ،امنیت و شبکه پیشرفته

چندمستأجری (Multi-Tenancy)

  • ~۱۴ دقیقه
  • ۴ پرسش
  • متن را انتخاب کن تا هایلایت شود

محصول B2B یعنی صدها مشتری سازمانی (tenant) روی یک سیستم: داده‌شان باید کاملاً جدا بماند، یکی نباید بقیه را کند کند، و مشتری بزرگ گاهی «زیرساخت اختصاصی» می‌خواهد. این سه نیروی متضاد، معماری SaaS را می‌سازند.

طیف ایزولاسیون

مدلساختارقوتقیمت
Poolهمه tenant ها در منابع مشترک؛ جدایی با tenant_id در هر کوئریارزان‌ترین، ساده‌ترین عملیاتریسک noisy neighbor؛ یک WHERE فراموش‌شده = نشت داده
Bridgeاشتراکی برای اغلب + اختصاصی برای مشتریان بزرگ/حساستطبیق با قراردادهادو مدل برای نگه‌داشت
Siloهر tenant استک/دیتابیس خودشایزولاسیون و compliance مطلقهزینه و پیچیدگی عملیاتی ×N

الگوهای کلیدی

  • هر سطر داده tenant_id دارد و enforce کردنش باید ماشینی باشد: Row-Level Security در Postgres یا میان‌افزار اجباری — اعتماد به «یادم می‌ماند WHERE بزنم» ممنوع.
  • Noisy Neighbor: tenant بزرگ نباید صفحه بقیه را کند کند — سهمیه per-tenant (rate limit فصل ۴)، صف‌های جدا برای کارهای سنگین، و معماری سلولی (Cell-Based): هر سلول یک استک کامل برای برشی از tenant ها؛ انفجار یک سلول، بقیه را نمی‌برد (مدل AWS).
  • Sharding بر اساس tenant_id طبیعی است؛ ولی tenant نهنگ را جدا کن (shard اختصاصی) تا توازن حفظ شود.
  • Data Residency: مقررات گاهی داده مشتری اروپایی را در اروپا می‌خواهد — region را به tenant بچسبان؛ این با home region فصل ۹ خواه خوشحال است.
  • Metering از روز اول: مصرف هر tenant (درخواست، ذخیره، محاسبه) را ثبت کن — هم مبنای billing است هم رادار سوءاستفاده.
DIAGRAMمعماری سلولی
Router — tenant → cell
Cell 1 — استک کامل
Cell 2 — استک کامل
Cell N

به زبان ساده

Multi-tenancy یعنی صدها مشتری روی یک سیستم؛ داده‌ها باید با tenant_id جدا بمانند و یک مشتری پرمصرف نباید بقیه را کند کند.

مثال واقعی

مثل ساختمان اداری: همه ساختمان را شریک‌اند (ارزان)، اما کلید دفتر هر شرکت جداست و اگر یکی مهمانی پرسر و صدا گرفت، مدیر ساختمان (سهمیه و سلول) جلویش را می‌گیرد.

دانش‌سنجی

آزمون درس

۴ Q
01
خطرناک‌ترین حالت مدل Pool؟
02
معماری Cell-Based چه مشکلی را حل می‌کند؟
03
tenant خیلی بزرگ در Pool مشترک بقیه را کند می‌کند. اولین اقدام‌ها؟
04
Data Residency در طراحی یعنی؟