رایانش ابری (Cloud Computing)، تغییرات عظیمی را در دنیای برنامهها ایجاد کرده است. این امر باعث میشود محدودیتهای طولانی مدت در توسعهی برنامهها از بین برود.
اگر بگوییم بیشتر نوآوریهای IT در دهه گذشته توسط رایانش ابری ایجاد شده، اغراق آمیز نیست. اخیرا، یک فناوری جدید مبتنی بر ابر با نام رایانش ابری بدون سرور (Serverless Computing) ظهور کرده که توانایی تغییر اکوسیستم فناوری موجود را دارد.
در این مقاله به رایانش ابری بدون سرور و مزایای آن پرداختهایم.
رایانش ابری بدون سرور چیست؟
در گذشته اگر فردی قصد ایجاد برنامههای تحت وب را داشت، بدون سخت افزارهای مورد نیاز برای کار کردن یک سرور، امکان پذیر نبود. تامین سخت افزارهای مورد نیاز، علاوه بر دست و پا گیر بودن، نیازمند صرف هزینههای زیادی است.
بعدها فضای ابری به وجود آمد، و این امکان وجود داشت تا در آن تعدادی سرور و یا فضای مورد نیاز سرور را در اختیار گرفت. شرکتهایی که این امکانات را اجاره میکنند، جهت اطمینان از اینکه مصرف ترافیک، بیش از حد مجاز ماهیانه آنها نشود و یا موجب آسیب به برنامههای آنها نگردد، تصمیم میگیرند فضای بیشتر و یا سرورهای بیشتری را در نظر بگیرند.
البته در چنین شرایطی، از بیشتر فضای سرور که هزینهی آن پرداخت شده، نمیتوان استفادهی درستی کرد و معمولا به هدر میرود.
ارائه دهندگان فضای ابری برای حل این مشکل، مدلهای مقیاسپذیری خودکار را معرفی نمودهاند. در حالت مقیاس پذیری خودکار نیز، ترافیکهای بسیار سنگین ناخواسته مانند حملات دیداس منجر به هزینهی بسیار بالایی میگردد.
Serverless یا مدل بدون سرور؛ یک مدل اجرایی از رایانش ابری است که در آن ارائه دهندگان خدمات ابر، تهیهی سرورها و تخصیص آنها به شرکتها را به صورت پویا و همیشگی مدیریت میکنند. در ضمن قیمت گذاری آن بر اساس تعداد آیتمهایی است که اجرا میشود نه ظرفیت از پیش خریداری شده.
چرا بهتر است از مدل بدون سرور استفاده کنیم؟
رایانش بدون سرور در مقایسه با زیرساختهای سنتی مبتنی بر ابر و یا سرور محور مزایای زیادی دارد. ساختار بدون سرور، با کمک مقیاس پذیری، انعطاف پذیری و سرعت بیشتر خود، منجر به کاهش هزینهها میگردد.
با استفاده از این ساختار، دیگر جایی برای نگرانی ارائه دهندگان خدمات در رابطه با تهیه، خرید و مدیریت سرورهای backend نمیماند. با این حال نمیتوان گفت رایانش ابری بدون سرور برای تمامی توسعه دهندگان برنامههای تحت وب مناسب است.
رایانش ابری بدون سرور میتواند فرایند استقرار کد بر روی محصول را ساده نماید. مقیاس پذیری، برنامهریزی ظرفیت و عملیات نگهداری ممکن است توسط توسعه دهنده پنهان شده باشد.
کد بدون سرور (Serverless code) میتواند همراه با کدهای مستقر در سبکهای سنتی، مانند میکروسرویسها استفاده شود. به همین ترتیب میتوان برنامهها را کاملا بدون سرور نوشت و به هیچ عنوان از سرورهای تهیه شده استفاده نکرد.
تفاوت رایانش ابری سنتی و بدون سرور
تفاوت رایانش ابری سنتی و بدون سرور در این است که شما به عنوان یک مشتری، هزینهی منابعی که به ندرت مورد استفاده قرار میگیرند را پرداخت نمیکنید.
خدمات رایانش ابری بدون سرور، دستورات شما را به عنوان ورودی انجام میدهد، منطق را در دستور کار خود قرار میدهد، به شما خروجی میدهد و سپس خاموش میشود. به عبارت دیگر شما تنها هزینهی منابعی که در طول اجرای دستورات استفاده میکنید، پرداخت مینمایید.
مزایای رایانش ابری بدون سرور (serverless computing)
- هزینه پایین
رایانش بدون سرور به طور معمول بسیار مقرونبهصرفه میباشد. قابل ذکر است ارائه دهندگان خدمات سنتی مبتنی بر ابر غالبا مجبور به پرداخت هزینههای فضای استفاده نشدهی کاربر و یا زمانهایی که از CPU استفاده نمیشود، میباشند.
- بی نیاز از مدیریت سرور
با این که رایانش بدون سرور در واقع در سرورها انجام میشوند، اما ارائه دهندگان خدمات مربوطه مجبور نیستند که با سرورها سروکار داشته باشند. در واقع میتوان گفت آنها توسط فروشندگان اداره میشوند.
این امر منجر به کاهش سرمایهگذاری در DevOps میگردد که علاوه بر کاهش هزینهها، به ارائه دهندگان خدمات این امکان را میدهد که برنامههای خود را بدون محدودیت در ظرفیت سرور، ایجاد نموده و گسترش دهند.
- مقیاس پذیری ساده
ارائه دهندگان خدمات رایانش بدون سرور، با استفاده از ساختار Serverless دیگر نگران خطمشیهای خود نسبت به افزایش کد نیستند و بر اساس تقاضا آنها را اداره میکنند.
بنابراین، یک برنامهی بدون سرور قادر به مدیریت تعداد غیرمعمول درخواستها خواهد بود، درست همان طور که به یک درخواست واحد از یک کاربر رسیدگی میکند. یک برنامهی سنتی با مقدار ثابت فضای سرور به محض این که با افزایش ناگهانی ترافیک روبرو شود، از کنترل خارج میگردد.
- استفاده و بهروزرسانی ساده و سریع
با استفاده از زیرساختهای بدون سرور برای انتشار نسخهی فعال یک برنامه، نیازی به آپلود کد بر روی سرورها یا انجام تنظیمات backend نیست. ارائه دهندگان خدمات بدون سرور میتوانند به سرعت بیتها را آپلود نموده و یک محصول جدید منتشر کنند. در ضمن میتوانند همهی کدها را به یکباره آپلود کنند زیرا این برنامه مجموعهای از توابع مختلف است.
- ساده سازی کد backend
از آنجا که برنامه در یک سرور مبدا میزبانی نمیشود، کد آن از هر جایی قابل اجرا میباشد. بنابراین بسته به فروشنده، امکان اجرای برنامه بر روی سرورهای نزدیک به کاربر وجود دارد. این امر منجر به کاهش زمان تاخیر شده زیرا درخواستهای کاربر مجبور نیستند کل مسیر را تا سرور مبدا طی کنند.
- چرخش سریعتر
ساختار بدون سرور، میتواند زمان ورود به بازار را به طور قابل توجهی کاهش دهد. ارائه دهندگان خدمات رایانش بدون سرور به جای نیاز به یک فرایند پیچیده جهت اصلاح خطاها و ویژگیهای جدید، میتوانند کدها را به تدریج اضافه و اصلاح کنند.
تفاوت رایانش Serverless و Container
هم رایانش بدون سرور و هم Container هر دو ارائه دهندگان خدمات را قادر میسازند تا برنامههایی با انعطافپذیری بیشتر در مقایسه با برنامههایی که بر روی سرورهای سنتی میزبانی میگردند یا ماشینهای مجازی ایجاد کنند.
در ضمن انتخاب نوع ساختار را ارائه دهنده بر اساس نیازهای برنامه، تعیین میکند. اما به طور کلی میتوان گفت برنامههای بدون سرور مقیاسپذیرتر و مقرونبهصرفهتر میباشند.
Containerها محیط کمتری را برای اجرا فراهم میکنند، سریعتر هستند و بیشتر از سخت افزار استفاده میکنند. اما نمیتوانند روند اساسی برنامهها را تغییر دهند.
ارائه دهندگان خدمات ابری با استفاده از امکانات بدون سرور، مسئولیت اطمینان از لود شدن (Load) و اجرای کد برنامهها را بر عهده گرفته و این اطمینان را میدهد که منابع کافی رایانش برای اجرای کد شما بدون توجه به این که چه مقدار پردازش نیاز دارد، در دسترس میباشد.
نتیجه گیری
Serverless یک مدل از اجرای رایانش ابری است که در آن ارائه دهندگان خدمات ابری، به صورت کاملا پویا تخصیص و تهیه سرورها را مدیریت میکند. رایانش بدون سرور، مزایای زیادی در مقایسه با مدل استاندارد ابر دارد، مانند هزینههای کمتر، مقیاسپذیری ساده، استفاده سریع و غیره.