در این مقاله با سرویس مدیریت شده SaaS و راهکارهای معماری آن آشنا می شویم.در ابتدا به تعریف نرمافزار بهعنوان خدمات یا SaaS از دیدگاه NIST می پردازیم:
امکان استفاده کاربران از نرمافزارهایی است که بر روی زیرساخت مبتنی بر رایانش ابری ارائهدهنده خدمات قرارگرفتهاند و توسط آن نگهداری و مدیریت میشود. این نرمافزارها با توجه به مدل رایانش ابری بر روی سختافزارهای خارج از سازمان قرارگرفتهاند، بنابراین دسترسی کاربر به آنها از طریق شبکه خواهد بود. لازم است دسترسی به نرمافزار از طریق دستگاههای مختلف مانند کامپیوترهای شخصی، موبایلها، سیستمهای قابلانتقال و … امکانپذیر باشد. با توجه به این نیازمندی، بهترین استاندارد برای برقراری ارتباط پروتکل وب است. مدیریت زیرساخت رایانش ابری شامل شبکه، محیط پردازشی، ذخیرهسازی، سیستمعامل، سرویس و یا ویژگیهای خاص نرمافزار کاملاً بر عهده ارائهکننده خدمات خواهد بود و مشتری هیچگونه نگرانیای بابت این حوزه نخواهد داشت. دسترسی مشتری به سطح خدمات و امکان مدیریت منابع در هر زمان دلخواه، یکی از ملزومات است.درنهایت مشتری با توجه بهاندازه مصرف، هزینه پرداخت میکند.
ویژگیهای اصلی خدمات رایانش ابری که خدمات SaaS از آن تبعیت میکند عبارتاند از:
- مدیریت خدمات توسط شخص مشتری
- دسترسپذیری شبکهای بدون محدودیت
- دسترسی به مخزنی از منابع
- قابلیت کشسانی [Elasticity] سریع
- قابلیت نظارت و اندازهگیری خدمات
معماری استاندارد سرویس مدیریت شده SaaS در محیط رایانش ابری:
دسته عمدهای از راهحلهای SaaS طبق معماری چند اجارگی پیاده میشوند. با کمک این مدل، تنها یک نسخه نرمافزار و تنها یک پیکربندی (محاسبات، ذخیرهسازی، شبکه، سیستمعامل) برای همه مشتریان (مستأجران) استفاده میشود. جهت پشتیبانی از مقیاسپذیری، نرمافزار بر روی چندین ماشین نصب میگردد (مقیاسپذیری افقی). در بعضی موارد، ویرایش دیگر نرمافزار در محیط جدیدی ارائه میشود تا کاربران قابلیت انتخاب نرمافزار ویرایش جدید و قدیم را داشته باشند.
در بعضی موارد، با توجه به نیازمندی و ساختار نرمافزار، از چند اجارگی و تکنولوژیهای دیگر (مانند مجازیسازی) استفاده نمیشود تا بتوان حجم زیادی از کاربران را بر روی تعداد پایینی سختافزار قدرتمند نگهداری کرد و از هزینه مدیریت و نگهداری زیرساخت کاست. اگرچه مبحث چند اجارگی یکی از الزامات SaaS است اما هنوز بر روی محدوده، روش و چگونگی آن بحث و مشاجره است.
در حقیقت اینگونه نرمافزارها بهصورت سرویس گرا پیاده میشوند. بنابراین در هر زمان دلخواه، سیستم قابلیت گسترش یا کاهش خواهد داشت، بدون اینکه کاربر نهایی از رخداد این عمل مطلع شود. نکته مهم این است که معماری سیستم در نرمافزارهای SaaS باید با توجه به نیاز، قابلیت پشتیبانی از پیکها و بارهای زیاد آنی را داشته باشد و نرمافزار باید بهاندازه کافی بهینهشده باشد تا نگرانیای بابت کارایی آن نداشته باشیم و بر روی توزیع بار و مقیاسپذیری آن تمرکز کنیم.
مدل بلوغ سیستم مدیریت شده SaaS
برای تغییر قالب یک نرمافزار جهت پشتیبانی از معماری SaaS چهار روش وجود دارد که به آنها مدلهای بلوغ SaaS نیز گفته میشود.
- Ad hoc/Custom
این روش همانند فضای کلاسیک است که هر مشتری در فضای خود (سرور خود) نرمافزار خود را نگهداری میکند و میتواند پیکربندی مخصوص به خود را داشته باشد. به دلیل سادگی، اکثر تولیدکنندگان خدمات SaaS از این لایه شروع کردهاند. در حقیقت از طریق یکروال “Copy and paste” به ازای هر مشتری، نرمافزار به او ارائه میشود. این مدل ازلحاظ امنیت و کنترل در حالت مناسبی قرار دارد، اگرچه قابلیت مقیاسپذیری، بهروزرسانی، نگهداری آن، ارائهکننده خدمات را دچار مشکل میکند.
- Configurable/Shared Core Functions
در این حالت، برخلاف حالت پیش، تولیدکننده با در نظر گرفتن یک کد برنامهنویسی یکسان برای همه مشتریان، به هر مشتری امکان پیکربندی جداگانه نیز میدهد اما هنوز هر مشتری در فضای مخصوص به خود (سرور خود) قرارگرفته است. مشتری تا جایی که به کد اصلی برنامه مربوط نیست امکان تغییر و سفارشیسازی دارد.
در حقیقت، نرمافزار، توابع و روالهای اصلی و طراحیها در لایه Core Functions تکرار میشوند. این کار نهتنها به بلوغ معماری تکنیکال کمک کرده، بلکه نقش مهمی را در مبحث استانداردسازی روالهای کسبوکار بازی میکند و هزینه سربار پشتیبانی از چندین روال کسبوکار متفاوت یا توابع و طراحیهای مجزا را از بین میبرد. لازم به ذکر است که اکثر ارائهکنندگان خدمات SaaS هنوز در این لایه قرارگرفتهاند.
- Multitenant and Configurable
ارائهکننده خدمات، نرمافزار را تنها در یک فضا (یک سرور) برای تمامی مشتریان اجرا میکند و همه مشتریان از آن خدمات میگیرند، البته با در نظر داشتن اینکه هر مشتری بتواند با کمک روالهای در نظر گرفتهشده، تااندازهای که ارائهکننده در نظر گرفته تغییر پیکربندی و سفارشیسازی کند. قوانین احراز هویت و امنیتی این اطمینان را به مشتری میدهد که اطلاعات هر مشتری از اطلاعات مشتری دیگر بهصورت جداگانه نگهداری میشود و از دید مشتری هیچ نشانهای از اشتراکگذاری منابع وجود ندارد. این روش باعث میشود تا لزوم وجود یک سرور به ازای هر مشتری از بین برود و از منابع پردازشی استفاده بهینهتری شود و درنتیجه هزینه کاهش یابد. عیب چشمگیر این روش، مقیاسپذیری محدود آن است.
- Multitenant Efficients
ارائهکننده خدمات، مشتریان را بر روی مجموعهای از سرورهای یکسان که توسط یک توزیعکننده بارLoad] Balancer] به شبکه متصل شدهاند نگهداری میکند. اطلاعات هر مشتری بهطور جداگانه نگهداری میشود و همینطور از طریق meta data قابل پیکربندی، هر مشتری میتواند مجموعهای از ویژگیهای دلخواه خود را پیاده کرده و سفارشیسازی کند.
به بیان سادهتر، این معماری دقیقاً شبیه مورد قبل است، با این تفاوت که یک توزیعکننده بار، قابلیت مقیاسپذیری و گسترش خدمات را به وجود آورده. به این معنی که دیگر یک فضای مخصوص یک مشتری خاص وجود ندارد و پیکربندی هر مشتری، به همراه سفارشیسازی او و بقیه تنظیماتش، در یک محیط مرکزی نگهداری شده و فراخوانی میشود.
شکل بعد دستهبندی این نرمافزارها را بهصورت مشخصتر نشان میدهد
معماری سطح بالا
کلید دستیابی به مزایای اقتصادی سرویس مدیریت شده SaaS، پیادهسازی معماریای است که از دو پارامتر “شخصیسازی توسط پیکربندی” و “دیوارک بندی هوشمند دادهها” پشتیبانی میکند. بدون این دو عنصر، سطح پیادهسازی خدمات سرویس مدیریت شده SaaS از لایه اول یعنی Adhoc/Custom جلوتر نمیرود.
معماری بنیادین SaaS بسیار شبیه به معماری نرمافزارهای سرویس گرا [SOA or Service Oriented Architecture] است، البته با اضافه کردن دولایه جدید:
- Meta data services
این نوع خدمات، به مشتریان امکانات اولیه شخصیسازی و پیکربندی ارائه میکند تا بتوانند نرمافزار را با توجه به نیازمندیهای خود تغییر دهند. این مسئله طیف زیادی از موارد را شامل میشود که میتوان آنها را از چهره ظاهری نرمافزار و نشان (لوگو) مشتری، قواعد کسبوکار و گردش کار تا کنترل دسترسی دادهها بسط داد.
- Security Services
از دید ارائهکننده خدمات SaaS وظیفه ساختن کاربران بر عهده هر فضا (سرور) خواهد بود که به این روال، نمایندگی اجرا [Delegated Administration] میگویند. نمایندگی اجرا حالتی است که در آن مشتری مسئول ساختن کاربران خود است اما ارائهکننده خدمات مسئولیت اعتبار سنجی آنها را به عهده میگردد. اصولاً دسترسی به منابع و توابع کسبوکار در یک نرمافزار مبتنی بر SaaS، توسط نقشهایی مدیریت میشود که به یک موقعیت شغلی در داخل سازمان متصل هستند. به هر نقش مجوزهایی داده میشود که از طریق آن میتواند کاربران خود را مدیریت کند.
معماری مقیاسپذیر در نرمافزارهای SaaS نرمافزارهای سازمانی، به نرمافزارهایی گفته میشود که درآنواحد توسط کاربران زیادی مورداستفاده قرار میگیرند. درصورتیکه تاکنون درگیر ساخت چنین نرمافزارهایی شده باشید با مشکل بزرگ ساخت معماری مقایسه پذیر دستوپنجه نرم کردهاید. برای یک نرمافزار SaaS، مقیاسپذیری اهمیت بیشتری نیز دارد، چراکه در این حالت، چندین مشتری وجود دارد که هرکدام تعداد کاربران بسیار زیادی دارند. با توجه به این نیازمندی، نرمافزار باید قابلیت مقیاسپذیری و گسترش سریع، با توجه به نیاز داشته باشد. بنابراین در معماری این نرمافزارها باید موارد زیر را در نظر داشت:
- قابلیت بدون حالت [Stateless]
به این معنی که اطلاعات یا در سمت کاربر نگهداری میشود، و یا در منابع ذخیرهسازیای که توسط تمام سرورهای نرمافزار قابلدسترسی است. قابلیت بدون حالت به این معنی است که هر تراکنش را بتوان بدون نگرانی محل اجرای آن، انجام داد. تراکنشهای یک کاربر ممکن است در طول ارتباط خود با نرمافزار توسط چندین فضا پردازش و مدیریت شود، بدون اینکه کاربر از این مسئله مطلع شود.
- قابلیت تفکیکپذیری [Modularity]
درصورتیکه بتوان با توجه به نقشهایی که هر قسمت از نرمافزار دارد، آن را تفکیک کرد، میتوان به ویژگی مقیاسپذیری نزدیکتر شد. با این کار، در صورت بالا رفتن باریک قسمت، تعداد ارائهکننده آن نوع خدمات را افزایش میدهیم.
- قابلیت همکاری منطقی [Semantic interoperability] و به هم پیچیدگی کمتر [Low coupling]
لازم است ماژولهای نرمافزار، بتوانند با یکدیگر بهطور منطقی ارتباط برقرار کنند. درصورتیکه این ارتباط مستقیم و یکبهیک باشد و به هم پیچیدگی زیادی داشته باشیم، امکان مقیاسپذیری و توسعه را از دست میدهیم.
- عملکرد پایگاه داده
فعالیتهایی که در بانک داده صورت میگیرد باید بهگونهای باشد که همزمانی افزایش پیداکرده و قفلگذاری [Exclusive Locking] کاهش پیدا کند. بهعنوانمثال، لازم نیست رکوردهایی که در حال “خواندن” هستند، قفل شوند.
پایگاههای داده در نرمافزارهای سرویس مدیریت شده SaaS
با توجه به مدل بلوغی که برای پیادهسازی SaaS در نظر گرفتهشده، الگوی[Schema] پایگاه داده نیز متفاوت است. این الگوها عبارتاند از:
مدل Adhoc/custom و Configurable: پایگاه داده و الگوی اشتراکی
مدل Configurable و Multitenant Efficiency، پایگاه داده اشتراکی، الگوی مجزا
مدلand Multitenant Scalable Configurable، پایگاه داده مجزا
نمونه مثال معماری سرویس مدیریت شده SaaS
بهعنوانمثال برای معماری یک نرمافزار SaaS، میتوان به Vivantio servicedesk اشاره کرد. این نرمافزار، خدمات پیشخوان به کاربران خود ارائه میکند. شماتیک معماری این نرمافزار بهصورت زیر است:
ویژگیهای خاص سرویس مدیریت شده SaaS
- قابلیت پیکربندی و سفارشیسازی توسط مشتری
همانند نرمافزارهای کلاسیک، سفارشیسازی نیز در نرمافزارهای SaaS وجود دارد. به زبان دیگر، یک مشتری میتواند محیط نرمافزار خود را تغییر داده و عملکرد آن را پیکربندی کند. هر مشتری میتواند تنظیمات خود را داشته باشد، بنابراین بانک دادهای وجود دارد که تنظیمات دلخواه مشتریان را نگهداری میکند. محدوده خصوصیسازی نرمافزار، توسط پارامترهای از پیش تعریفشدهای که در هنگام پیادهسازی و ساخت نرمافزار مشخصشدهاند، تعریف میشود.
بهعنوان مثالی از سفارشیسازی، میتوان به یکی از عمومیترین نیازهای مشتریان، یعنی تنظیم لوگو و نشان شرکت در نرمافزار اشاره کرد. مشتری باید بتواند از طریق یک محیط کنترلی، لوگوی خود را در نرمافزار مورداستفاده وارد کند. اگرچه، مشتری نمیتواند در قالب صفحات تغییری اعمال کند، مگر آنکه این پارامتر در محدوده خصوصیسازی گنجیده شده باشد و نیازمندیهای مربوط به انجام آن قبلاً پیشبینیشده باشد.
- قابلیت بهروزرسانی با تناوب بیشتر
نرمافزارهای مبتنی برسرویس مدیریت شده SaaS اصولاً با تناوب بیشتری به نسبت نرمافزارهای کلاسیک بهروز میشوند. این تناوب میتواند از هفتگی تا ساعتی متغیر باشد که در حالت کلاسیک این مسئله با هزینههای زیادی امکانپذیر بود. مواردی که این مسئله را امکانپذیر میکند عبارتاند از:
نرمافزار بهصورت مرکزی نگهداری میشود. بنابراین نسخه جدید بدون تغییری از جانب مشتری، بر روی فضای موجود بازنشانی میشود.
نرمافزار تنها بر روی یک سکو با یک پیکربندی مشخص که تحت مدیریت ارائهکننده خدمات است پیاده میشود، که باعث سرعت بخشیدن به روال توسعه نرمافزار میشود.
تولیدکننده نرمافزار بهتمامی اطلاعات مشتریان دسترسی دارد که باعث تسریع طراحی و آزمایشها میگردد.
تولیدکننده نرمافزار قادر است رفتار کاربران را تشخیص داده و قسمتهای پراهمیتتر را تقویت کند.
- پروتکلهای یکپارچهسازی
ازآنجاییکه یک نرمافزار SaaS قادر نیست به سامانههای داخلی یک شرکت دسترسی پیدا کند (بانکهای داده یا سرویسهای داخلی)، از یک واسط ارتباطی نرمافزاری[API] که بر روی شبکه فعالیت میکند استفاده میشود. از این طریق میتوان نرمافزار SaaS را بهصورت امنی بر روی شبکه به سامانههای داخلی یک سازمان متصل کرد. اصولاً این واسط از پروتکلهای HTTP, REST, SOAP یا JSON پشتیبانی میکند.
حضور نرمافزارهای SaaS و دیگر سرویسهای اینترنتی و استانداردسازی تکنولوژی واسط ارتباطی نرمافزاری آنها، باعث به وجود آمدن تعریفی به نام ترکیب[Mashups] شد. ترکیبها، نرمافزارهای سبکی هستند که اطلاعات و عملکرد چندین سرویس را باهم آمیخته و یک سرویس ترکیبی به وجود میآورند. ترکیبها در حقیقت نقطه تفاوت نرمافزارهای SaaS با نرمافزارهای کلاسیک است که باعث میشود این نرمافزارها نتوانند بهسادگی با سرویسهای خارج از دیواره آتش سازمان ارتباط برقرار کرده و یکپارچه شوند.
- قابلیت همکاری دستهجمعی
با الهام از موفقیت شبکههای اجتماعی، و دیگر عملکردهای شبیه که Web 2.0 نامیده میشوند، بسیاری از نرمافزارهای SaaS این امکان را به کاربران میدهند که اطلاعات خود را با دیگران به اشتراک بگذارند. بهعنوانمثال بسیاری از نرمافزارهای مدیریت پروژه که در حالت SaaS ارائه میشوند، ویژگیهایی برای همکاری دستهجمعی کاربران ارائه میکنند تا بتوانند بر روی کارها و وظائف، یادداشتی بگذارند و مستندات را داخل و خارج از سازمان به اشتراک بگذارند.
محرکهای سرویس مدیریت شده SaaS
تغییرات عمده به وجود آمده در بازار و تکنولوژی نرمافزاری باعث پذیرش و گسترش راهحلهای مبتنی بر SaaS شد. این تغییرات عبارتاند از: رشد روزافزون استفاده از واسطهای مبتنی بر وب در نرمافزارها به همراه ازدیاد روشهای مربوط (بهعنوانمثال، طراحی وب)، بهطور مداوم نیاز به نرمافزارهای قدیمی مبتنی بر مدل کلاینت/سرور را کاهش داد. متعاقباً درامد تولیدکنندگان از نرمافزارهایی که بیشتر فعالیتها را بر روی کامپیوتر کلاینت انجام میدهند [Fat clients] کاهش یافت (به دلیل نیاز به پشتیبانی مداوم) و این راه را برای تولیدکنندگان نرمافزاریای که از تکنولوژی سطح بالاتر استفاده میکنند و محصولهای مدرنتری تولید میکنند، باز کرد. در حقیقت در این قسمت بود که تعریف کلاینتهای هوشمندSmart Clients صورت گرفت.
- استانداردسازی محصولات مبتنی بر وب (HTML, JavaScript, CSS, HTTP)، افزایش محبوبیت آنها، و ظهور چهارچوبهای نرمافزارهای مبتنی بر وب مانند Ruby on Rails یا زبانهایی مانند PHP بهتدریج هزینه توسعه راهحلهای جدید مبتنی بر SaaS را کاهش داد و به تولیدکنندگان جدید اجازه داد تا نرمافزارهای قابلرقابت با نرمافزارهای کلاسیک بسازند.
- افزایش اتصالهای پهن باند به اینترنت امکان دسترسی از راه دور به نرمافزارها را با سرعتی قابلرقابت با نرمافزارهای کلاسیک به وجود آورد.
- استانداردسازی پروتکل HTTPS بهعنوان یکی از اعضاء نرمافزارهای مبتنی بر وب، امنیت موردنیاز برای عمده کاربردهای روزانه را تأمین کرد.
- نفوذ و پذیرش گسترده پروتکلهای یکپارچهسازیای مانند REST و SOAP، باعث امکانپذیر شدن یکپارچهسازی نرمافزارهای مبتنی بر خدمات ابری خارج از سازمان از طریق شبکه با نرمافزارهای موجود داخل سازمان شد.
مشکلات پیادهسازی
بعضی محدودیتها سرعت پذیرش نرمافزارهای SaaS را کاهش دادهاند و از استفاده آن در بعضی موارد جلوگیری کردهاند. بهعنوانمثال میتوان به موارد زیر اشاره کرد:
- معماری چند اجارگی، که باعث بهرهوری هزینه برای ارائهدهندگان خدمات SaaS میشود، امکان سفارشیسازی نرمافزار برای مشتریهای بزرگ را از بین میبرد. این مسئله مانع استفاده سازمانهای بزرگ از این نوع نرمافزارها میشود که نیاز به خصوصیسازی مطلوب در نرمافزار دارند.
- بعضی نرمافزارهای کسبوکار، نیاز به یکپارچهسازی با اطلاعات کنونی مشتری دارند. زمانی که اطلاعات حجم بالایی داشته باشند و یا از حساسیت زیادی برخوردار باشند، (بهعنوانمثال اطلاعات خصوصی پرسنل) یکپارچهسازی آنها با نرمافزارهایی که خارج از سازمان نگهداری میشوند هزینهبر و پرمخاطره است و یا با قوانین حکومتی در تناقض است.
- تغییر ارائهدهنده خدمات، ممکن است با انتقال حجم عظیمی از اطلاعات در اینترنت همراه باشد.
مقاله پیشنهادی : فاکتورهای مهم در انتخاب Cloud Provider
این مقاله را به اشتراک بگذارید