با گسترش خدمات ابری و مدلهای SaaS، معماری نرمافزاری به یکی از ارکان کلیدی موفقیت پلتفرمهای مقیاسپذیر تبدیل شده است. سازمانها در تلاشاند تا با کمترین هزینه، بیشترین بهرهوری از منابع مشترک را داشته باشند. در این میان، معماری multi-tenant بهعنوان راهکاری بهینه و انعطافپذیر مطرح شده که در ادامه بررسی جامع آن انجام خواهد شد.
معماری multi-tenant چیست؟
معماری Multi-Tenant یا "چند مستاجری"، نوعی ساختار نرمافزاری است که در آن یک نسخه از اپلیکیشن نرمافزاری، همزمان به چندین مشتری سرویس میدهد. به هر مشتری در این ساختار، Tenant (مستاجر) گفته میشود. مستاجران میتوانند تا حدی بخشهایی از اپلیکیشن مانند رنگ رابط کاربری یا قوانین تجاری را شخصیسازی کنند اما امکان تغییر در کد اپلیکیشن برای آنها وجود ندارد.
در معماری چند-مستأجری، چندین نسخه از اپلیکیشن درون یک محیط مشترک اجرا میشوند. چنین ساختاری به این دلیل کارآمد است که مستاجران از نظر فیزیکی در یک سیستم یکپارچه قرار دارند اما از نظر منطقی جدا میمانند. یعنی تنها یک نسخه از نرمافزار روی سرور اجرا میشود و به چندین مستاجر سرویس میدهد. بنابراین، هر اپلیکیشن در معماری چند مستاجری میتواند تنظیمات، دادهها، مدیریت کاربران و سایر ویژگیها را به صورت مشترک استفاده کند.
اپلیکیشنهای چند مستاجری میتوانند کاربران، ظاهر رابط کاربری، قوانین و ساختار دیتابیس (Database Schema) را با یکدیگر به اشتراک بگذارند. کاربران قادر خواهند بود قوانین و ساختار دیتابیس را تا حدودی طبق نیاز خود تنظیم کنند.
تصویر(1)
اهمیت معماری multi-tenant
چند مستاجری مفهومی قدیمی است و ریشههای آن به معماریهای کلاسیک مینفریم برمیگردد؛ جایی که اپلیکیشنها و کاربران زیادی از یک سختافزار مشترک استفاده میکردند. با ظهور مجدد و پذیرش گسترده مجازیسازی سختافزاری مدرن و امکان به اشتراکگذاری منابع سختافزاری بین چندین نسخه از نرمافزار (مانند ماشینهای مجازی و اپلیکیشنهای آنها)، باعث شد تا قابلیتهای چند مستاجری اهمیت بیشتری پیدا کند. این روش به سرعت در دیتاسنترهای محلی و سایر زیرساختها مانند کولوکیشن و سایر خدمات اشتراکی IT، رواج یافت و به کاربران اجازه داد از یک زیرساخت سختافزاری محدود یا مشترک استفاده کنند.
در سالهای اخیر، معماری multi tenant به شکل گستردهای برای رایانش ابری مورد استفاده قرار گرفته است. این معماری در هر دو محیط ابر عمومی (Public Cloud) و ابر خصوصی (Private Cloud) رایج می باشد و امکان تفکیک دادههای هر مستاجر از سایرین را فراهم میکند. به عنوان مثال، در یک ابر عمومی با ساختار چند مستاجری، سرورهای یکسانی برای میزبانی چندین کاربر استفاده میشوند. به هر کاربر یک فضای منطقی جداگانه و در حالت ایدهآل، ایمن اختصاص داده میشود تا ضمن اجرای اپلیکیشنهای خود، دادهها را ذخیره کند.
معماری چند مستاجری نقش مهمی در مقیاسپذیری ابرهای عمومی و خصوصی نیز ایفا میکند و همین موضوع باعث شده که این معماری به یک استاندارد تبدیل شود. این ساختار میتواند بازگشت سرمایه (ROI) بهتری برای سازمانها ایجاد کند و سرعت نگهداری و بروزرسانی اپلیکیشنها را برای مستاجران بهبود دهد.
تصویر(2)
انواع معماری multi tenant
سه مدل اصلی برای معماری multi tenant وجود دارد که هر کدام سطح متفاوتی از پیچیدگی و هزینه را دارند. این مدلها معمولاً بر اساس رابطه میان اپلیکیشن و پایگاه داده تعریف میشوند:
1- یک اپلیکیشن، یک دیتابیس
در این مدل ساده، یک دیتابیس با ساختار مشترک (Shared Schema) بین تمام مستاجران استفاده میشود. این مدل، کمهزینهترین حالت بین سه مدل اصلی است زیرا منابع به صورت مشترک بین کاربران توزیع میشوند. یک نسخه از اپلیکیشن و دیتابیس، همزمان به چند مستاجر سرویس میدهد. این ساختار به مقیاسپذیری آسانتر کمک میکند اما ممکن است هزینههای عملیاتی بالاتری داشته باشد و همچنین اثر همسایه پر سر و صدا (Noisy Neighbor) باعث افت عملکرد شود.
2- یک اپلیکیشن، چند دیتابیس
در این مدل، اپلیکیشن همچنان به صورت یک نسخه اجرا میگردد اما برای هر مستاجر، یک دیتابیس مجزا با ساختار جداگانه در نظر گرفته میشود. این مدل هزینه و پیچیدگی بیشتری دارد و مقیاسپذیری آن نیز دشوارتر است اما وقتی که دادههای هر مستاجر نیاز به قوانین خاص (مثلاً طبق موقعیت جغرافیایی) دارند، این ساختار بسیار مفید خواهد بود. همچنین، دیتابیسهای جداگانه میتوانند از اثرات منفی همسایگان دیگر جلوگیری کنند.
3- چند اپلیکیشن، چند دیتابیس
در این مدل، دادهها درون چندین دیتابیس ذخیره میشوند و اپلیکیشنها نیز به صورت جداگانه برای هر مستاجر اجرا میگردند. این ساختار از نظر هزینه، مدیریت و نگهداری پیچیدهترین مدل است اما بالاترین سطح امنیت و جداسازی را فراهم میکند. در این معماری، میتوان مستاجران را براساس معیارهای خاصی، به طور کامل از هم تفکیک کرد.
تصویر(3)
معایب و مزایای معماری multi-tenant
معماری چند مستاجری، چه برای ارائهدهنده سرویس و چه مستاجران، مزایا و معایبی به همراه دارد. برخی مزایای معماری multi-tenant عبارتند از:
- هزینه آن نسبت به معماریهای دیگر میزبانی مستاجران کمتر است.
- مدلهای پرداخت انعطافپذیرتری ارائه میدهد، مانند پرداخت به اندازه مصرف (Pay-for-what-you-use) یا پرداخت در ازای استفاده (Pay-as-you-go).
- مستاجران نیازی به نگرانی درباره بروزرسانیها ندارند زیرا این بروزرسانیها توسط ارائهدهنده انجام میشوند.
- مستاجران لازم نیست نگران سختافزاری باشند که دادههایشان روی آن میزبانی میشود.
- ارائهدهندگان تنها نیاز به نظارت و مدیریت یک سیستم واحد دارند.
- معماری چند-مستأجری به سادگی قابلیت مقیاسپذیری دارد.
اما در کنار این مزایا، معایبی هم وجود دارد که باید مدنظر قرار گیرد:
- اپلیکیشنهایی که از سوی سرویس دهنده ارائه میشوند، معمولاً انعطافپذیری کمتری نسبت به معماریهای دیگر مانند تک-مستاجری دارند.
- معماری چند-مستأجری به طور کلی پیچیدهتر از معماری تک-مستاجری است زیرا نیاز به مجازیسازی و مدیریت بیشتری برای جداسازی و ایمنسازی هر مستاجر دارد.
- اپلیکیشنها نیاز به احراز هویت و کنترل دسترسی دقیقتری دارند تا امنیت حفظ شود.
- مستاجران ممکن است با مشکل «همسایه پر سر و صدا» روبرو شوند، که باعث کند شدن عملکرد برای سایر مستاجران میشود.
- قطعی سرویس نیز ممکن است به مشکلی جدی تبدیل شود، خصوصا اگر یک اختلال در سرور روی چندین کاربر تأثیر بگذارد.
نمونههایی از معماری چند-مستأجری
معماری چند مستاجری در بسترهای مختلفی به کار گرفته میشود. رایجترین مثالها عبارتند از:
چند مستاجری در سختافزار — ماشین مجازی (VM) و کانتینر
مجازیسازی سختافزار این امکان را فراهم میکند که چند ماشین مجازی یا کانتینر به صورت همزمان روی یک سرور اجرا شوند. هر ماشین مجازی میتواند یک اپلیکیشن یا سرویس جداگانه را اجرا کند که توسط ذینفع، واحد سازمانی یا مشتری متفاوتی مدیریت میشود. این نوع از چند مستاجری در دیتاسنترهای مدرن و محیطهای کولوکیشن به شکل گستردهای استفاده میگردد و یکی از پایههای اصلی رایانش ابری است.
معماری multi-tenant در ابر عمومی
کاربران در ابر عمومی، منابع و سرویسها را برای ایجاد زیرساخت موردنیاز اپلیکیشنهای خود به کار می گیرند اما تمامی منابع زیرساختی (مانند سختافزار و پهنای باند شبکه) به صورت مشترک استفاده میشوند. ابر عمومی میتواند منابع اختصاصی به مشتریان ارائه دهد اما این مورد بیشتر استثنا است.
چند مستاجری در ابر خصوصی
ابر خصوصی از مفاهیم چند مستاجری مشابه ابر عمومی استفاده میکند اما فقط به یک سازمان یا گروه خاص اختصاص دارد. در مقابل، ابر عمومی خدمات را به چندین مشتری یا گروه ارائه میکند.
چند مستاجری در مدل SaaS
این نوع چند مستاجری در دسته رایج معماری ابر عمومی قرار میگیرد زیرا ارائهدهندگان "نرمافزار به عنوان سرویس" (SaaS) معمولاً در دسته ارائهدهندگان ابری قرار میگیرند. برای مثال، یک ارائهدهنده SaaS میتواند تنها یک نسخه از اپلیکیشن و دیتابیس خود را اجرا کند و به چندین مشتری از طریق وب، خدمات ارائه دهد. در این حالت، دادههای هر مستاجر به صورت ایزوله نگه داشته میشود و برای سایر مستاجران قابل مشاهده نیست. چند مستاجری میتواند در سیستمهای چندلایه نیز پیادهسازی شود.
معماری multi-tenant بدون سرور
رایانش بدون سرور، یک سرویس ابری است که با استفاده از رویدادها، کد کاربران را بارگذاری و اجرا میکند و پس از اجرا، زیرساخت مربوطه را آزاد میسازد. چند اپلیکیشن میتوانند از یک تابع مشترک استفاده کنند و این تابع روی هر زیرساخت سختافزاری مشترک و موجود، اجرا شود.
تصویر(4)
مقایسه معماری چند مستاجری و تک مستاجری
معماری multi-tenant بیشتر شبیه به مدل سنتی «یک سرور برای یک اپلیکیشن» است که در دیتاسنترها پیش از فراگیر شدن مجازیسازی رایج بود. در معماری single-tenant، هر مستاجر نسخهای اختصاصی از اپلیکیشن SaaS را دارد اما در مدل چند-مستاجری، خدمات به صورت اشتراکی ارائه میشوند. از آنجا که در معماری single-tenant، مستاجران درون زیرساخت یا محیط فیزیکی جداگانهای قرار دارند، به زیرساختهای مشترک وابستگی ندارند و به همین دلیل، این مدل امکان شخصیسازی بیشتری خواهد داشت.
با این حال، معماری چند مستاجری بیشتر مورد استفاده قرار میگیرد زیرا اکثر دیتاسنترهای محلی، سرویسهای SaaS و دیگر خدمات ابری، با این ساختار کار میکنند. در مقایسه با مدل تک مستاجری، معماری Multi-tenant ارزانتر است، بهرهوری منابع بیشتری دارد، هزینههای نگهداری آن پایینتر است و ظرفیت محاسباتی بیشتری فراهم میکند. همچنین، در معماری چند مستاجری، ارائهدهنده تنها یک بار نیاز به انجام بروزرسانی دارد اما در مدل تک مستاجری، باید چندین نسخه جداگانه از نرمافزار را بروزرسانی نماید.
مشتریانی که به دنبال کنترل و انعطافپذیری بیشتری هستند (مثلاً به دلایل امنیتی یا رعایت مقررات خاص) معمولاً معماری تک مستاجری را ترجیح میدهند.
جمع بندی
معماری Multi-Tenant رویکردی کارآمد برای میزبانی همزمان چندین کاربر یا سازمان در یک سیستم نرمافزاری است. این معماری با کاهش هزینهها، بهینهسازی منابع و مقیاسپذیری بالا، گزینهای محبوب در توسعه SaaS محسوب میشود. با این حال، چالشهایی مانند حفظ امنیت دادهها، مدیریت پیکربندیها و انعطافپذیری را نیز به همراه دارد.