سیستم های SaaS مانند JetBrains Space، YouTrack و TeamCity Cloud بر اساس مفهوم Multi-Tenancy ساخته شدهاند. بسیاری از خدمات دیگری که هر روز از آن ها استفاده می کنید احتمالاً همینطور هستند. این سرویس ها به جای ایجاد یک سرور اختصاصی برای هر مشتری، اغلب منابع سرور را به اشتراک میگذارند در حالی که پیکربندی، داده ها و حساب های کاربری آن سرویس را جدا می کنند. همه مشتریان می توانند مانند اجاره خانه، به صورت اشتراکی از اتاق های آن استفاده کنند، اما آن ها مجموعه جداگانه ای از خدمات خود را دارند.
در این آموزش، معنی Multi-Tenancy را بررسی میکنیم و با استفاده از Asp.net Core و EF Core به پیاده سازی آن می پردازیم.
Multi-Tenancy چیست؟
multi-tenancy یا چند اجاره ای معماری است که در آن یک پایگاه کد به چندین مشتری خدمات می دهد و در عین حال جداسازی داده ها را حفظ می کند. برای مشتریان، به نظر می رسد که آنها نسخه مخصوص به خود را از نرم افزار در حال اجرا دارند، در حالی که برنامه واقعاً فقط دارای یک استقرار است.
بسیاری از برنامه های تجاری برای کار با چندین مشتری طراحی شده اند. در این معماری بسیار مهم است که داده ها را ایمن کنید تا داده های مشتری "نشت" یا توسط سایر مشتریان و رقبای بالقوه دیده نشود. این برنامه ها به عنوان "multi-tenancy" طبقه بندی می شوند زیرا هر مشتری با مجموعه داده های خاص خود Tenant یا مستاجر برنامه در نظر گرفته می شود.
Tenant یا مستاجر یک اصطلاح فراگیر است و تیم ها معنای آن را برایشان تعریف می کنند. Tenant می تواند یک کاربر، یک سازمان یا سایر گروه های منطقی باشد.
هدف نهایی multi-tenancy کاهش چشمگیر یک ناحیه از پیچیدگی است.
روش های پیاده سازی Multi-Tenancy
به صورت کلی دو روش برای پیاده سازی multi-tenancy وجود دارد:
1. پایگاه داده های متعدد و جداسازی فیزیکی Tenant ها
این روش ما را قادر میسازد منابع محاسباتی را با استفاده از یک برنامه واحد بین Tenant های خود به اشتراک بگذاریم و تضمین می کنیم در سطح دیتابیس، هر Tenant یک نمونه خاص از داده را دارد.
مزایا :
- امنیت بیشتر
- سهولت سفارشی سازی برای هر مستاجر
- سهولت نگهداری ( Backup و Restore ) برای هر مستاجر
معایب:
- برای نگهداری سخت افزار قوی مورد نیاز است
- این روش هزینه بیشتری برای تجهیزات ( Backup و Restore ) برای هر مستاجر دارد
2. پایگاه داده واحد و جداسازی منطقی Tenant ها
این روش مانند مورد روش قبلی است، تنها تفاوت این است که ما تمام داده های Tenant های خود را در یک دیتابیس واحد ذخیره می کنیم.
مزایا :
- میتواند مستاجران بیشتری رادر هر سرور پشتیبانی کند
- قابلیت بروز رسانی آسان در یک جا برای همه مستاجران
- مدیریت آسان دیتابیس و خطا و Backup و Restore
معایب:
- امنیت بیشتری مورد نیاز است تا مطمئن شوید هیچکس به اطلاعات سایر مستاجران دسترسی ندارد.
- میتواند روی کارایی کوئریها تاثیر بگذارد چون تعداد رکوردها زیاد است.
- بروزرسانی و سفارشی کردن فقط برای یک مستاجر سخت است
اینکه کدام گزینه را انتخاب می کنید بیشتر به نیازهای شما بستگی دارد. برخی از صنایع مانند مراقبت های بهداشتی به درجه بالایی از جداسازی داده ها نیاز دارند و استفاده از پایگاه داده برای هر Tenant ضروری است.
ما در این آموزش به پیاده سازی نوع دوم معماری Multi-Tenant یعنی استفاده از یک پایگاه داده مشترک در Asp.net Core با استفاده از EF Core خواهیم پرداخت.
برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید