پیش از ظهور فناوری رایانش ابری، برای پیادهسازی هر نرمافزار، سرورها از اجزای اصلی مورد نیاز بودند. علاوه بر خرید سرور، تجهیزات دیگری مانند کابلکشی، دستگاههای کولینگ، رک، دسترسی مداوم به اینترنت و … برای نگهداشت سرورها مورد نیاز بود و این موضوع معمولا زمان و هزینه زیادی را به سازمانها تحمیل میکرد. ظهور رایانش ابری باعث شد به دنیایی از فناوریها بدون دغدغهی زیرساخت وارد شویم. استفاده از فناوری زیرساخت به عنوان خدمت (IaaS) تغییرات بزرگی برای بسیاری از افراد و کسب و کارها ایجاد کرد. از این طریق این امکان فراهم شد که بدون هزینه اضافه برای تهیه و نگهداشت زیرساختها با پرداخت حق اشتراک از این خدمات بهره برد.
در نگاه اول ممکن است فکر کنید این فناوری چیزی بسیار متفاوت از حالت سنتی استفاده از زیرساخت است. اما اینطور نیست، بلکه فقط در مدل بکارگیری زیرساخت تفاوت ایجاد شده است. عبارت serverless هرگز به این معنی نبوده که دیگر به هیچ سروری نیاز نیست بلکه به این معنی است که دیگر دغدغهای بابت تامین و نگهداری از زیرساخت وجود ندارد. این عبارت برای اولین بار زمانی استفاده شد که زیرساختها و فرایندهای مربوط به آن در جای دیگری خارج از سازمان مدیریت میشد، امروز مفهوم متفاوتتری درباره آن وجود دارد، در این حالت تمام موضوعات مربوط به زیرساخت به شرکت ارائهدهنده خدمات ابری برونسپاری میشود.
در این مقاله به معرفی محاسبات بدون سرور، مزایا و معایب آن، کاربردها و تفاوتی که با سایر مدلهای رایانش ابری دارد، میپردازیم. اگر علاقمند به دنیای فناوریهای دیجیتال هستید، خواندن این مقاله را به شما توصیه میکنیم.
محاسبات بدون سرور (serverless computing) چیست؟
محاسبات بدون سرور یک مدل اجرای محاسبات ابری است که به توسعهدهندگان نرمافزار اجازه میدهد بدون نیاز به تهیه یا مدیریت زیرساختهای back-end، برنامهها و سرورهای مورد نظر خود را بسازند و اجرا کنند.
با serverless computing، توسعهدهندگان نرمافزار تمام تمرکز خود را روی نوشتن بهترین کد front end میگذارند و تمام زیرساخت مورد نیازشان را به ارائه دهنده سرویس ابری واگذار میکنند. درواقع Cloud provider مسئولیت اجرای کد و افزایش یا کاهش زیرساخت مورد نیاز برحسب تقاضای برنامه نویس را برعهده دارد. همچنین با استفاده از محاسبات بدون سرور، ارائهدهنده خدمات ابری مسئولیت مدیریت و نگهداری از زیرساخت، مانند بهروزرسانی سیستم عامل (OS)، مدیریت امنیت، نظارت بر سیستم و ظرفیت برنامهریزی را برعهده دارد.
نکته قابل توجه درخصوص محاسبات بدون سرور این است که توسعهدهندگان نرمافزار هیچگاه برای کل ظرفیت مورد نیاز خود هزینه پرداخت نکرده و خدمات بک اند را از فروشندگان سرویسهای ابری برحسب میزان استفاده خریداری میکنند؛ به این معنا که فقط برای سرویسهای مورد استفاده هنگام اجرای کد هزینه پرداخت میکنند.
از طرفی آمارهای دیگری وجود دارد که نشان میدهد 50% از سختافزارها در بازه زمانی 5 ساله مستهلک میشوند، همچنین هارد دیسکها غالبا عمر استفاده دارند و اگر به موقع تعویض نشوند ممکن است با سوختن ناگهانی علاوه بر هزینهای که برای سازمان خواهند داشت، کار شرکت را برای مدتی با اختلال مواجه کنند اما در شرکتهای ارائهدهنده خدمات ابری به دلیل کنترلهای پیوستهای که بر زیرساختها وجود دارد کاربر هرگز با چنین مسائلی درگیر نمیشود.
هدف اصلی محاسبات بدون سرور، سادهتر کردن کار برنامهنویسان برای اجرای کدهای خود روی پلتفرمهای ابری است.
بدون سرور بهمعنای نبود سرور نیست!
این محاسبات برخلاف نامی که دارند، از سرورهای زیادی استفاده میکنند! درواقع اصطلاح Serverless توصیفکننده تجربه برنامهنویس از این سرورهاست. این سرورها برای برنامهنویس قابل مشاهده نیستند و از مدیریت و تعامل مستقیم با آنها بینیاز است.
در معماری بدون سرور، برخلاف نامی که دارد، سرورهای متعددی وجود دارد که کاربران میتوانند برحسب نیاز خود، از آنها استفاده کنند.
مزایا و معایب محاسبات بدون سرور
از مزایای محاسبات بدون سرور میتوان به موارد زیر اشاره کرد:
- مقرون بهصرفه بودن: کاربران و توسعهدهندگان نرمافزار، تنها برای زمانی که کدهای خود را اجرا میکنند، هزینه میپردازند و برای خرید کل سرورها پرداختی ندارند.
- استقرار آسان: برنامهنویسان با استفاده از این محاسبات میتوانند زمان استقرار نرمافزارهای خود را از هفته و ماه، به ساعت و روز کاهش دهند.
- مقیاسدهی خودکار: توسعه دهندگانی که از معماری بدون سرور استفاده میکنند نگران افزایش مقیاس کدهای خود نیستند زیرا ارائه دهندگان خدمات بدون سرور، در صورت تقاضا تمام نیازمندیهای آنها را فراهم میکنند. همچنین ارائه دهندگان زیرساخت ابری میتوانند زمانی که کدها اجرا نمیشوند، منابع مربوط به آن را افزایش یا کاهش دهند.
- افزایش بهرهوری توسعهدهندگان نرمافزار: با استفاده از محاسبات ابری، برنامه نویسان میتوانند بخش زیادی از زمان خود را، بهجای درگیر شدن با سرورها و زمان اجرای کدها، صرف نوشتن کد و توسعه نرمافزار خود کنند.
- برنامهنویسی با هر زبان: محاسبات بدون سرور،فضایی چندزبانه است که به برنامهنویسان امکان کد زنی با هر زبان و چارچوبی را میدهد؛ مانند جاوا، پایتون، جاوااسکریپت و هر زبانی که خواستار آن هستند.
همچنین مهمترین معایب محاسبات بدون سرور عبارتند از:
- وابستگی به ارائه دهنده خدمات ابری: با استفاده از محاسبات بدون سرور، تعویض ارائه دهنده خدمات ابری ممکن است دشوار باشد؛ زیرا نحوه ارائه خدمات بدون سرور از یک فروشنده به فروشنده دیگر ممکن است متفاوت باشد.
- ناکارآمدی برای برنامههای طولانی مدت: استفاده از serverless computing برای اجرای بلندمدت یک برنامه ناکارآمد است. درواقع گاهی اوقات اجرای کدهای طولانی مدت میتواند بسیار بیشتر از اجرای کد روی یک VM یا سرور اختصاصی هزینه داشته باشد.
- تاخیر: اغلب اولین استفاده از یک پلتفرم مقیاسپذیر serverless، زمانبر است که بهعنوان شروع سرد شناخته میشود.
- محدودیتهای استفاده: ارائهدهندگان سرویس ابری ممکن است محدودیتهای سختی در مورد نحوه تعامل با اجزای خود داشته باشند که به نوبه خود، بر انعطافپذیری و سفارشیسازی سیستمهای موردنیاز تأثیر میگذارد.
نقش ارائهدهندگان خدمات ابری در محاسبات بدون سرور چیست؟
در یک مدل serverless، یک ارائهدهنده خدمات ابری به اجرای سرورهای فیزیکی پرداخته و منابع موردنیاز کاربران را بهشکل پویا، به آنها تخصیص میدهد.
محاسبات بدون سرور معمولا به دو شکل ارائه میشوند: بک اند به عنوان سرویس (BaaS) و عملکرد به عنوان سرویس (FaaS).
BaaS به برنامهنویسان امکان دسترسی به مجموعهای از خدمات و برنامههای سوم شخص را میدهد. برای مثال، یک ارائه دهنده خدمات ابری ممکن است خدماتی مانند احراز هویت، رمزگذاری، پایگاههای اطلاعاتی ابری، و دادههای معتبر را ارائه دهد.
با BaaS، عملکردهای سرور ازطریق API فراخوانی میشوند
درحالت کلی، زمانی که برنامهنویسان از محاسبات بدون سرور صحبت میکنند، منظورشان FaaS است. با استفاده از FaaS، توسعهدهندگان نرمافزار همچنان با منطق server-side به نوشتن کدهای خود میپردازند، اما این کدها در فضایی به نام container اجرا میشود که بهطور کامل، توسط یک ارائه دهنده خدمات ابری مدیریت میشود. این containerها:
- ادغام دادهها را سادهتر میکنند،
- کدها را در زمان کوتاهی اجرا میکنند،
- رویدادمحور هستند و در زمان نیاز، بهشکل خودکار اجرا میشوند،
- کاملا توسط ارائهدهنده خدمات ابری مدیریت میشوند و پرداخت هزینه آنها برمبنای استفاده است.
برخلاف BaaS، FaaS کنترل بیشتری را برای برنامهنویسان فراهم میکند که بهجای تکیه بر دستورات از پیش نوشته شده، برنامههای سفارشی ایجاد کنند.
محاسبات بدون سرور و سایر مدلهای بک اند ابری
تفاوتهای مختلفی بین محاسبات بدون سرور و سایر مدلهای بک اند ابری مانند زیرساخت به عنوان سرویس (IaaS) و پلتفرم به عنوان سرویس (PaaS) وجود دارد که در ادامه به آنها اشاره میشود.
تفاوت محاسبات بدون سرور و IaaS
در مدل محاسبات ابری IaaS ، توسعهدهندگان نرمافزار، ظرفیت موردنیاز خود را پیشخرید میکنند، درصورتی که در محاسبات بدون سرور اختصاص ظرفیت بر حسب تقاضا انجام میشود. این بدان معناست که در IaaS، سازمانها برای اجزای سروری که همیشه روشن هستند تا اجزای اصلی برنامههایشان را اجرا کنند، به فروشندگان ابر عمومی هزینه پرداخت میکنند.
در نتیجه، مدیر سرور یک سازمان، مسئولیت تخمین میزان ظرفیت متوسط موردنیاز شرکت در هر ماه، برای انتخاب یک طرح مقرونبهصرفه که نیازهای سازمان را برآورده میکند، را برعهده دارد.
از طرف دیگر، معماری بدون سرور فقط در زمان مورد نیاز و برای اجرای یک کد فعال میشود. ارائه دهنده خدمات ابر عمومی ، منابع مورد نیاز برای اجرای آن عملیات را تخصیص داده و سازمان متقاضی پس از اتمام اجرای کد، پرداخت هزینه را متوقف میکند.
تفاوت محاسبات بدون سرور و PaaS
افزایش و کاهش مقیاس برای برنامههای بدون سرور آسان است، زیرا به تقاضا بستگی داشته و نیازی به مداخله توسعهدهنده ندارد؛ برنامهنویس باید پارامترهای مقیاسبندی را تنظیم کند. به طور کلی، PaaS نسبت به محاسبات بدون سرور، کنترل بهتری روی محیطهای استقرار خود در اختیار توسعهدهندگان نرمافزار قرار میدهد.
با استفاده از محاسبات بدون سرور، توسعهدهندگان نرمافزار فقط برمبنای استفاده، هزینه پرداخت میکنند درحالی که با PaaS، هزینه خدمات ماهانه پرداخت میشود و به میزان استفاده بستگی ندارد. دربرخی موارد، PaaS بسیار قابل پیشبینیتر بوده و ممکن است هزینه کمتری داشته باشد.
کاربردهای محاسبات بدون سرور
از کاربردهای محاسبات بدون سرور میتوان به موارد زیر اشاره کرد:
- محاسبات مبتنی بر رویداد: برای سناریوهایی که دسترسی دستگاههای مختلف به انواع فرمتهای داده مانند ویدئو، فایلهای متنی و تصاویری که از طریق تلفن همراه و یا رایانه بارگذاری شدهاند.
- پردازش دادههای اینترنت اشیا (IOT): محاسبات بدون سرور، راهی برای ترکیب و تجزیه و تحلیل دادهها از دستگاههای مختلف و سپس راهاندازی دستورهای موردنظر فراهم میکند و روشی بسیار کاربردی و ارزانتر برای مدیریت اینترنت اشیا ارائه میدهد.
- اجرای دستورات بک اند برای نرم افزارهای موبایل و وب: یک عملکرد serverless میتواند یک درخواست را از فرانت اند یک وب سایت یا اپلیکیشن دریافت کرده، اطلاعات مورد نیاز را بازیابی و تحویل دهد.
- فرآیندهای پس زمینه با حجم بالا: محاسبات بدون سرور را میتوان برای انتقال دادهها به حافظه بلندمدت؛ تبدیل، پردازش و تحلیل دادهها و انتقال شاخصها به یک سیستم تحلیلگر مورد استفاده قرار داد.
- پشتیبانی از میکروسرویسها: پشتیبانی از معماری بدون سرور یکی از رایجترین کاربردهای محاسبات بدون سرور است. اگرچه توسعهدهندگان نرمافزار میتوانند از PaaS برای ساخت و اجرای میکروسرویسها استفاده کنند، استفاده از محاسبات بدون سرور به خاطر مقیاسدهی خودکار، اجرای سریع و مدل قیمتگذاری مفید واقع میشود.
- ساخت RESTful API: محاسبات بدون سرور، ساخت API های RESTful را آسانتر میکند که توسعهدهندگان میتوانند در صورت تقاضا، آن را افزایش دهند.
- ادیت ویدئو و تصویر: محاسبات بدون سرور به توسعهدهندگان این امکان را میدهد تا رمزگذاری ویدیو را برای دستگاههای مختلف و اندازه تصاویر را بهشکل پویا تغییر دهند.
- نوشتن برنامههای چندزبانه: یکی از اولین عواملی که هنگام توسعه نرمافزار باید در نظر گرفته شود، زبان برنامهنویسی است. از آنجا که محاسبات بدون سرور یک محیط چندزبانه است، توسعهدهندگان نرمافزار میتوانند زبانها یا فریم ورکهای مختلفی را انتخاب کنند؛ از جمله پایتون، Node.js، جاوا و جاوا اسکریپت.
محاسبات بدون سرور به سبب مقرونبهصرفه بودن و امکاناتی که در اختیار توسعهدهندگان نرمافزار قرار میدهند، کاربردهای متعددی در حوزه نرمافزار دارند
طبق گزارش Mordor Intelligence، انتظار میرود تا سال 2026، بازار محاسبات بدون سرور با رشد بیش از 23 درصد همراه باشد. پیشرفت در فناوریهای محاسبات سازمانها را قادر میسازد تا با یکپارچگی در یک محیط بدون سرور، حضور خود در بازار را تقویت کنند. درواقع مزایای محاسبات بدون سرور مانند توسعه و استقرار بیقید و شرط و مقیاسپذیری داخلی، نقش مهمی در پذیرش سریع محاسبات بدون سرور و در نتیجه رشد بازار ایفا میکند.
منابع:
- techtarget.com
- cloudflare.com
- redhat.com
- ibm.com