مدیریت زیرساخت، چالشی است که باعث میشود این روزها، سازمانها کمتر مایل به استفاده از معماریهای سنتی بهعنوان زیرساخت محصولات نرمافزاری خود باشند. در گذشته توسعهدهندگان برای ارائه نرمافزارها فشار زیادی را متحمل میشدند و بهجای تمرکز بر توسعه و ایجاد کد، بخش زیادی از وقت خود را صرف مدیریت و مراقبت از زیرساخت میکردند. علاوه بر آن، باید نگهداری سیستمعامل و فرآیند میزبانی وب سرور مورد نیاز برای برنامه را نیز انجام میدادند. از آنجایی که رایانش ابری[1]، اکوسیستم کاملی برای ساخت، توسعه و ارائه خدمات فناوری اطلاعات فراهم میکند، به توسعهدهندگان این امکان را میدهد تا بدون دردسر مدیریت زیرساخت، برنامهها را توسعه دهند. محاسبات بدون سرور[2] یک مفهوم نسبتا جدید در معماری نرمافزار است که مرحله بعدی در توسعه رایانش ابری محسوب میشود. سازمانهایی که مشتاق استفاده از فناوریهای نوظهور برای دستیابی به پویایی، کارایی بهینه، چابکی و صرفهجویی در هزینه هستند، بهسرعت بهسوی استفاده از این نوع معماری گام برمیدارند. در این مقاله نگاهی مختصر به محاسبات بدون سرور، کاربردها[3]، مزایا و معایب آن خواهیم داشت.
کلیدواژهها: محاسبات بدون سرور، رایانش ابری، مقیاسگذاری خودکار[4]، عملکرد بهعنوان خدمت[5]
محاسبات بدون سرور چیست؟
محاسبات بدون سرور، نوعی از محاسبات ابری است که قطعا بدون سرور نیست. سرورهایی وجود دارند، اما نکته این است که ارائهدهندگان خدمات[6] یا مصرفکنندگان رایانش ابری، نگران برنامهریزی یا مدیریت سرور و ویژگیهای آن نیستند. این بدان معنا است که توسعهدهندگان سرویس، هنگام اجرای کد، مجبور نیستند برای تأمین و نگهداری سیستم و زیرساخت برنامه زحمت بکشند. یا میتوانیم بگوییم بهعنوان زیرساخت، ارائهدهندگان خدمات ابری این کار را انجام خواهند داد و توسعهدهندگان سرویس باید عملکرد را به ارائهدهندگان بدهند تا یا «در صورت درخواست» یا «بر اساس رویداد»، اجرا شوند. این منطق، تجارت واقعی را به آنها ارائه میدهد و ارائهدهنده ابر، کل مدیریت سرور را رسیدگی کرده و منطق تجارت را بر اساس تقاضا اجرا خواهد کرد.
بهعبارت دیگر، یک ارائهدهنده بدون سرور به کاربران امکان نوشتن و استقرار[7] کدها را بدون هیچگونه نگرانی در مورد زیرساختهای اساسی میدهد. شرکتی که از یک فروشنده بدون سرور، خدمات بکاند[8] دریافت میکند، بر اساس استفاده آنها شارژ میشود و مجبور نیست مقدار مشخصی از پهنای باند یا تعداد سرورها را رزرو و پرداخت کند؛ زیرا سرویس مقایسگذار، خودکار است. بدان معنی که با توجه به میزان مصرف منابع توسط سرویس مشتری، اختصاص منابع به آن برنامه بهشکل خودکار انجام میشود و توسعهدهندگان برنامه نگران این نیستند که آیا زیرساخت کافی برای رسیدگی به حجم درخواستها وجود دارد یا خیر.
محاسبات بدون سرور، ترکیبی از دو مؤلفه، بکاند بهعنوان خدمت[9](BaaS) و عملکرد بهعنوان خدمت (FaaS) است. شکل اصلی این معماری که نمایش داده میشود FaaS است، بنابراین محاسبات بدون سرور، «عملکرد بهعنوان خدمت (FaaS)» یا «رویداد مبتنی بر عملکرد[10]» در نظر گرفته میشود. این بر اساس کدی است که توسط توسعهدهنده برای تخصیص دقیق منابع نوشته شده و منابع مربوط به پلتفرم با شروع یک رویداد ازپیش تعریفشده، تخصیص داده میشود.
محاسبات بدون سرور، نوعی از محاسبات ابری است که قطعا بدون سرور نیست. سرورهایی وجود دارند، اما نکته این است که ارائهدهندگان خدمات یا مصرفکنندگان رایانش ابری، نگران برنامهریزی یا مدیریت سرور و ویژگیهای آن نیستند.
موارد استفاده محاسبات بدون سرور
محاسبات بدون سرور برای برنامههای همزمان و مستقل از وضعیت11 که میتوانند بلافاصله شروع شوند، ایدهآل است. همچنین برای مواردی که شاهد افزایش تقاضای غیرمنتظره و غیرقابلپیشبینی هستیم و همچنین برای برنامههایی که شامل جریان دادههای ورودی، چتباتها، فعالیتهای برنامهریزیشده یا منطق کسبوکار هستند، مناسب است. در ادامه به برخی از بهترین موارد استفاده از محاسبات بدون سرور اشاره شده است:
محاسبات ناشی از رویداد[12]: در برنامههای تجاری پردازش چندرسانهای، اغلب حجم عظیمی از فایلها برای پردازش در خدمات ذخیرهسازی شئ[13] بارگذاری میشوند. نیازمندیها ممکن است مانند کدگذاری، نهاننگاری[14] و واکشی دادهها باشد. این سناریوی تجاری شامل انواع دستگاهها مانند رایانههای رومیزی یا PDA یا تلفنهای همراه است که به بارگذاری انواع مختلف فایلهای محتوای چندرسانهای مانند تصاویر، فیلمها و فایلهای متنی دسترسی دارند. محاسبات ناشی از رویداد، راهحلی برای رفع بسیاری از مشکلات فنی این حوزه خواهد بود.
پخش زنده ویدئو: در سناریوهای پخش مستقیم فیلم، گره ترکیبکننده پخش[15]، جریان صوتی و تصویری را از میزبانها دریافت میکند. دادههای جمعآوریشده را میتوان بر اساس محاسبه عملکرد، ترکیب کرد. سرانجام، جریان ویدئویی ترکیبشده باید به شبکه تحویل محتوا[16] تحویل شود.
محاسبات بدون سرور برای برنامههای همزمان و مستقل از وضعیت که میتوانند بلافاصله شروع شوند، ایدهآل است. همچنین برای مواردی که شاهد افزایش تقاضای غیرمنتظره و غیرقابلپیشبینی هستیم. بهترین موارد استفاده از محاسبات بدون سرور شامل محاسبات ناشی از رویداد، پخش زنده ویدئو، پردازش دادههای اینترنت اشیا و سیستم تحویل مشترک است.
پردازش دادههای اینترنت اشیا[17]: چارچوب اینترنت اشیا به یک طراحی محاسبات عملکردی نیاز دارد که بتواند دادههای وضعیت را از انواع دستگاههای هوشمند متصل دریافت کند. همچنین، برای انتقال دادههای پردازششده به دستگاههای دیگر یا ذخیرهسازی در پایگاه داده، به یک معماری محاسباتی مبتنی بر رویداد کارآمد نیاز دارد.
سیستم تحویل مشترک[18]: یک گروه جهانی از رستورانها یا یک شرکت مبتنی بر محصول، ممکن است به یک سیستم اطلاعرسانی رویداد به پرسنل مسئول تحویل کالا نیاز داشته باشد تا از نزدیکترین فروشنده برای تحویل محصول استفاده کند. اگرچه محاسبات مبتنی بر رویداد در بسیاری از موارد قابلاستفاده است، اما برای همه راهحل مناسبی نیست. اگر درخواستها دارای نوسانات قابل توجهی در مورد 4 نباشند، ممکن است محاسبات عملکردی یک انتخاب نادرست برای طراحی راهحل باشد.
مزایا و معایب محاسبات بدون سرور
محاسبات بدون سرور میتواند بهرهوری توسعهدهنده را افزایش و هزینههای عملیاتی را کاهش دهد. با بارگیری کارهای معمول تأمین و مدیریت سرورها، توسعهدهندگان وقت بیشتری برای تمرکز روی برنامههای خود دارند و آنها را قادر میسازد از انجام کارهای اجرایی پرهیز کرده و بر منطق اصلی تجارت تمرکز کنند. از دیگر مزایایی که میتوان به آن اشاره کرد، مسئله مقیاسپذیری پویا[19] است. به این معنا که در آن مقیاس، زیرساختها در عرض چند ثانیه بهشکل پویا بالا و پایین میشوند تا مطابق با خواستههای هر بارکاری[20] باشند. از بعد زمانی نیز برنامههای بدون سرور، وابستگی عملیات را به چرخه توسعه کاهش میدهند و توانایی تیمهای توسعه را برای ارائه عملکرد بیشتر در زمان کمتر، افزایش میدهند. همچنین در بخش مصرف منابع نیز میتوان به این نکته مثبت اشاره کرد که تغییر به سمت فناوریهای بدون سرور به سازمانها کمک میکند تا استفاده کارآمدتری از منابع داشته باشند.
در بخش معایب نیز میتوان به این نکته اشاره کرد که عدم اجرا روی سرور و یا کنترل منطق سمت سرور خود، میتواند اشکالاتی داشته باشد. ارائهدهندگان ابر ممکن است محدودیتهای جدی در مورد نحوه تعامل اجزای خود داشته باشند که بهنوبه خود بر میزان انعطافپذیری و سفارشیسازی سیستمهای شخصی تأثیر میگذارد.
مانند هر مورد دیگری در فناوری، باید عامل امنیتی را نیز در نظر گرفت. وقتی صحبت از محاسبات بدون سرور میشود، مسئولیت امنیت به عهده شرکت خدماتدهنده است نه مصرفکننده. مشتریها گاهی اوقات اطمینان دارند که خواستههای امنیتی خود را به شرکتی که صاحب سرور است منتقل میکنند، اما سرورهای بزرگ با چندین ورودی، ممکن است آسیبپذیرتر شوند و اگر حملهای اتفاق بیفتد، مشتریان در برابر آن ناتوان هستند و در عوض برای ارائه، اصلاح و بازیابی، به ارائهدهنده خدمات اعتماد میکنند.
شرکتهای برتر ارائهکننده محاسبات بدون سرور
بر اساس گزارشی که Cloud Native در 14 آگوست سال 2020 منتشر کرده، سرویس لامبدا[21] مربوط به AWS از پرکاربردترین ارائهکنندگان راهحل بدون سرور است که 46 درصد از توسعهدهندگان از آن استفاده کردهاند. سرویسهای Google Cloud و Azure در این حوزه نیز به ترتیب 38 و 29 درصد توسط توسعهدهندگان استفاده شده است [4]. برتری لامبدا از این واقعیت ناشی میشود که اولین محصول بدون سرور در بازار بود.
بهطورکلی این سه رقیب برتر در حال نزدیک شدن به هر دو معیار «آگاهی» و «مقبولیت» استفادهکنندگان هستند و دیگر فروشندگان را پشت سر گذاشتهاند.
دیدگاه مشتریان به محاسبات بدون سرور
شرکت O’Reilly گزارشی در نوامبر سال 2019 منتشر کرده، این گزارش یک نظرسنجی درزمینه پذیرش محاسبات بدون سرور است که بیش از 1500 پاسخدهنده از طیف وسیعی از موقعیتهای جغرافیایی، شرکتها و صنایع در آن شرکت کردهاند. 40 درصد از شرکتکنندگان، مطابق شکل 1، محاسبات بدون سرور را پذیرفتهاند و 60 درصد آنها نپذیرفتهاند [6].

شکل 1: درصد پذیرش محاسبات بدون سرور در میان سازمانهای پاسخدهندگان نظرسنجی [6]
دستاوردهای کلیدی این نظرسنجی شامل موارد زیر است:
- 40 درصد از پاسخدهندگان در سازمانی کار میکنند که بهگونهای محاسبات بدون سرور را پذیرفتهاند. کاهش هزینههای عملیاتی و مقیاسگذاری خودکار از مهمترین مزایای بدون سرور است که توسط این گروه ذکر شده است.
- نگرانیهای اصلی 60 درصد از پاسخدهندگانی که شرکتهایشان محاسبات بدون سرور را نپذیرفتهاند، در مورد امنیت و ترس از ناشناختگی است.
- حدود 50 درصد پاسخدهندگانی که سه سال قبل، محاسبات بدون سرور را پذیرفتهاند، اجرای خود را موفق یا بسیار موفق میدانند که این میزان در مقایسه با 35 درصد از کسانی که یک سال یا کمتر از آن، محاسبات بدون سرور را پذیرفتهاند و اجرای موفق یا بسیار موفق را تجربه کردند، نشان میدهد تجربه بدون سرور موفقیتآمیز است.
دیدگاهی که سازمانها پس از پذیرش محاسبات بدون سرور به مزایای این معماری داشتند در نمودار زیر قابل مشاهده است:

شکل 2: سابقه پذیرش محاسبات بدون سرور در میان سازمانهای پاسخدهندگان نظرسنجی [6]
همانطور که در نمودار شکل 3 مشخص است، «کاهش هزینههای عملیاتی» مزیت شماره یک گزارش شده است. به نظر میرسد بهجای خرید رک سرورهایی که نیاز به کنترل ترافیک بالقوه دارند و بیشتر اوقات بیکار هستند، ثابت شده که روش محاسبات بدون سرور بهمنظور «پرداخت بر اساس استفاده» برای سازمان مفید است.

شکل 3: مزایای بدون سرور در میان پاسخدهندگان نظرسنجی [6]
دلایلی که سازمانها، محاسبات بدون سرور را نپذیرفتهاند در نمودار زیر قابلمشاهده است:

شکل 4: دلایلی که پاسخدهندگان نظرسنجی محاسبات بدون سرور را نپذیرفتهاند [6]
نتیجهگیری
ازآنجا که در محاسبات بدون سرور، وظایف مرتبط با تأمین و مدیریت زیرساخت برای توسعهدهنده نامحسوس است، این روش، توسعهدهندگان را قادر میسازد تا تمرکز خود را بر منطق تجارت افزایش دهند و ارزش بیشتری را به هسته اصلی تجارت تحویل دهند. همچنین این رویکرد به تیمها کمک میکند تا بهرهوری خود را افزایش داده و محصولات را سریعتر به بازار عرضه کنند و به سازمانها نیز این امکان را میدهد تا منابع را بهینه کرده و بر نوآوری متمرکز شوند.
درحالی که محاسبات بدون سرور مزایای بیشماری را به همراه دارد، اما برخی از نکات منفی برای عده خاصی از توسعهدهندگان و تیمها وجود دارد که در این مقاله به برخی از آنها اشاره شد. درنتیجه استفاده از محاسبات بدون سرور بسته به نوع محصولی که ارائه میشود میتواند مناسب یا نامناسب باشد.
منابع
[1] Rajan, R. A. P. (2020). A review on serverless architectures-function as a service (FaaS) in cloud computing. TELKOMNIKA, 18(1), 530-537.
[2] Jiang, L. Pei, Y., & Zhao, J. (2020). Overview Of Serverless Architecture Research. In Journal of Physics: Conference Series (Vol. 1453, No. 1, p. 012119). IOP Publishing.
[3] cloudflare. Retrieved from cloudflare: https://www.cloudflare.com/learning/serverless/what-is-serverless/
[4] cncf. (2020, August 14). Retrieved from https://www.cncf.io/wp-content/uploads/2020/08/CNCF-The-State-of-Cloud-Native-Development_Q419.pdf
[5] Lange, K. (2021, February 25). Retrieved from bmc: https://www.bmc.com/blogs/serverless-computing/
[6] Magoulas , R., & Guzikowski, C. (2019, November 12). Retrieved from oreilly: https://www.oreilly.com/radar/oreilly-serverless-survey-2019-concerns-what-works-and-what-to-expect/
[7] microsoft. Retrieved from microsoft: https://azure.microsoft.com/en-us/overview/serverless-computing/
[8] redhat. Retrieved from redhat: https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless
[9] xenonstack. (2019, Mar 21). Retrieved from xenonstack: https://www.xenonstack.com/insights/serverless-computing/
پینوشت
[1] cloud Computing
[2] serverless Computing
[3] Applications
[4] auto-scaling
[5] Function-as-a-service (FaaS)
[6] service providers
[7] deployment
[8] backend
[9] Back-end-as-a-service (BaaS)
[10] function-driven event
[11] stateless
[12] event-triggered computing
[13] Object Storage Services [OSS]
[14] watermarking
[15] broadcasting synthesizing node
[16] Content Delivery Network [CDN]
[17] IoT
[18] shared delivery system
[19] Dynamic scalability
[20] workload
[21] Lambda


