Serverless computing چیست؟

پیش از ظهور فناوری رایانش ابری، برای پیاده‌سازی هر نرم‌افزار، سرور‌ها از اجزای اصلی مورد نیاز بودند. علاوه بر خرید سرور، تجهیزات دیگری مانند کابل‌کشی، دستگاه‌های کولینگ، رک، دسترسی مداوم به اینترنت و … برای نگهداشت سرورها مورد نیاز بود

 

Serverless computing چیست؟

پیش از ظهور فناوری رایانش ابری، برای پیاده‌سازی هر نرم‌افزار، سرور‌ها از اجزای اصلی مورد نیاز بودند. علاوه بر خرید سرور، تجهیزات دیگری مانند کابل‌کشی، دستگاه‌های کولینگ، رک، دسترسی مداوم به اینترنت و … برای نگهداشت سرورها مورد نیاز بود و این موضوع معمولا زمان و هزینه زیادی را به سازمان‌ها تحمیل می‌کرد. ظهور رایانش ابری باعث شد به دنیایی از فناوری‌ها بدون دغدغه‌ی زیرساخت وارد شویم. استفاده از فناوری زیرساخت به عنوان خدمت (IaaS) تغییرات بزرگی برای بسیاری از افراد و کسب و کارها ایجاد کرد. از این طریق این امکان فراهم شد که بدون هزینه اضافه برای تهیه و نگهداشت زیرساخت‌ها با پرداخت حق اشتراک از این خدمات بهره برد.

در نگاه اول ممکن است فکر کنید این فناوری چیزی بسیار متفاوت از حالت سنتی استفاده از زیرساخت است. اما اینطور نیست، بلکه فقط در مدل بکارگیری زیرساخت تفاوت ایجاد شده است. عبارت serverless هرگز به این معنی نبوده که دیگر به هیچ سروری نیاز نیست بلکه به این معنی است که دیگر دغدغه‌ای بابت تامین و نگهداری از زیرساخت وجود ندارد. این عبارت برای اولین بار زمانی استفاده شد که زیرساخت‌ها و فرایندهای مربوط به آن در جای دیگری خارج از سازمان مدیریت می‌شد، امروز مفهوم متفاوت‌تری درباره آن وجود دارد، در این حالت تمام موضوعات مربوط به زیرساخت به شرکت ارائه‌دهنده خدمات ابری برون‌سپاری می‌شود.

محاسبات بدون سرور (serverless computing) چیست؟

محاسبات بدون سرور یک مدل اجرای محاسبات ابری است که به توسعه‌دهندگان نرم‌افزار اجازه می‌دهد بدون نیاز به تهیه یا مدیریت زیرساخت‌های back-end، برنامه‌ها و سرورهای مورد نظر خود را بسازند و اجرا کنند.

با serverless computing، توسعه‌دهندگان نرم‌افزار تمام تمرکز خود را روی نوشتن بهترین کد front end می‌گذارند و تمام زیرساخت مورد نیازشان را به ارائه دهنده سرویس ابری واگذار می‌کنند. درواقع Cloud provider مسئولیت اجرای کد و افزایش یا کاهش زیرساخت مورد نیاز برحسب تقاضای برنامه نویس را برعهده دارد. همچنین با استفاده از محاسبات بدون سرور، ارائه‌دهنده خدمات ابری مسئولیت مدیریت و نگهداری از زیرساخت، مانند به‌روزرسانی سیستم عامل (OS)، مدیریت امنیت، نظارت بر سیستم و ظرفیت برنامه‌ریزی را برعهده دارد.

نکته قابل توجه درخصوص محاسبات بدون سرور این است که توسعه‌دهندگان نرم‌افزار هیچ‌گاه برای کل ظرفیت مورد نیاز خود هزینه پرداخت نکرده و خدمات بک اند را از فروشندگان سرویس‌های ابری برحسب میزان استفاده خریداری می‌کنند؛ به این معنا که فقط برای سرویس‌های مورد استفاده هنگام اجرای کد هزینه پرداخت می‌کنند.


از طرفی آمارهای دیگری وجود دارد که نشان می‌دهد 50% از سخت‌افزار‌ها در بازه زمانی 5 ساله مستهلک می‌شوند، همچنین هارد دیسک‌ها غالبا عمر استفاده دارند و اگر به موقع تعویض نشوند ممکن است با سوختن ناگهانی علاوه بر هزینه‌ای که برای سازمان خواهند داشت، کار شرکت را برای مدتی با اختلال مواجه کنند اما در شرکت‌های ارائه‌دهنده خدمات ابری به دلیل کنترل‌های پیوسته‌ای که بر زیرساخت‌ها وجود دارد کاربر هرگز با چنین مسائلی درگیر نمی‌شود.

بدون سرور به‌معنای نبود سرور نیست!

این محاسبات برخلاف نامی که دارند، از سرورهای زیادی استفاده می‌کنند! درواقع اصطلاح Serverless توصیف‌کننده تجربه برنامه‌نویس از این سرورهاست. این سرورها برای برنامه‌نویس قابل مشاهده نیستند و از مدیریت و تعامل مستقیم با آنها بی‌نیاز است.

معماری بدون سرور

در معماری بدون سرور، برخلاف نامی که دارد، سرورهای متعددی وجود دارد که کاربران می‌توانند برحسب نیاز خود، از آنها استفاده کنند.

مزایا و معایب محاسبات بدون سرور

از مزایای محاسبات بدون سرور می‌توان به موارد زیر اشاره کرد:

  • مقرون به‌صرفه بودن: کاربران و توسعه‌دهندگان نرم‌افزار، تنها برای زمانی که کدهای خود را اجرا می‌کنند، هزینه می‌پردازند و برای خرید کل سرورها پرداختی ندارند.
  • استقرار آسان: برنامه‌نویسان با استفاده از این محاسبات می‌توانند زمان استقرار نرم‌افزارهای خود را از هفته و ماه، به ساعت و روز کاهش دهند.
  • مقیاس‌دهی خودکار: توسعه دهندگانی که از معماری بدون سرور استفاده می‌کنند نگران افزایش مقیاس کدهای خود نیستند زیرا ارائه دهندگان خدمات بدون سرور، در صورت تقاضا تمام نیازمندی‌های آنها را فراهم می‌کنند. همچنین ارائه دهندگان زیرساخت ابری می‌توانند زمانی که کدها اجرا نمی‌شوند، منابع مربوط به آن را افزایش یا کاهش ‌دهند.
  • افزایش بهره‌وری توسعه‌دهندگان نرم‌افزار: با استفاده از محاسبات ابری، برنامه نویسان می‌توانند بخش زیادی از زمان خود را، به‌جای درگیر شدن با سرورها و زمان اجرای کدها، صرف نوشتن کد و توسعه نرم‌افزار خود کنند.
  • برنامه‌نویسی با هر زبان: محاسبات بدون سرور،فضایی چندزبانه است که به برنامه‌نویسان امکان کد زنی با هر زبان و چارچوبی را می‌دهد؛ مانند جاوا، پایتون، جاوااسکریپت و هر زبانی که خواستار آن هستند.

همچنین مهمترین معایب محاسبات بدون سرور عبارتند از:

  • وابستگی به ارائه دهنده خدمات ابری: با استفاده از محاسبات بدون سرور، تعویض ارائه دهنده خدمات ابری ممکن است دشوار باشد؛ زیرا نحوه ارائه خدمات بدون سرور از یک فروشنده به فروشنده دیگر ممکن است متفاوت باشد.
  • ناکارآمدی برای برنامه‌های طولانی مدت: استفاده از serverless computing برای اجرای بلندمدت یک برنامه ناکارآمد است. درواقع گاهی اوقات اجرای کدهای طولانی مدت می‌تواند بسیار بیشتر از اجرای کد روی یک VM یا سرور اختصاصی هزینه داشته باشد.
  • تاخیر: اغلب اولین استفاده از یک پلتفرم مقیاس‌پذیر serverless، زمانبر است که به‌عنوان شروع سرد شناخته می‌شود.
  • محدودیت‌های استفاده: ارائه‌دهندگان سرویس ابری ممکن است محدودیت‌های سختی در مورد نحوه تعامل با اجزای خود داشته باشند که به نوبه خود، بر انعطاف‌پذیری و سفارشی‌سازی سیستم‌های موردنیاز تأثیر می‌گذارد.

نقش ارائه‌دهندگان خدمات ابری در محاسبات بدون سرور چیست؟

در یک مدل serverless، یک ارائه‌دهنده خدمات ابری به اجرای سرورهای فیزیکی پرداخته و منابع موردنیاز کاربران را به‌شکل پویا، به آنها تخصیص می‌دهد.

محاسبات بدون سرور معمولا به دو شکل ارائه می‌شوند: بک اند به عنوان سرویس (BaaS) و عملکرد به عنوان سرویس (FaaS).

BaaS به برنامه‌نویسان امکان دسترسی به مجموعه‌ای از خدمات و برنامه‌های سوم شخص را می‌دهد. برای مثال، یک ارائه دهنده خدمات ابری ممکن است خدماتی مانند احراز هویت، رمزگذاری، پایگاه‌های اطلاعاتی ابری، و داده‌های معتبر را ارائه دهد.

درحالت کلی، زمانی که برنامه‌نویسان از محاسبات بدون سرور صحبت می‌کنند، منظورشان FaaS است. با استفاده از FaaS، توسعه‌دهندگان نرم‌افزار همچنان با منطق server-side به نوشتن کدهای خود می‌پردازند، اما این کدها در فضایی به نام container اجرا می‌‎شود که به‌طور کامل، توسط یک ارائه دهنده خدمات ابری مدیریت می‌شود. این containerها:

  • ادغام داده‌ها را ساده‌تر می‌کنند،
  • کدها را در زمان کوتاهی اجرا می‌کنند،
  • رویدادمحور هستند و در زمان نیاز، به‌شکل خودکار اجرا می‌شوند،
  • کاملا توسط ارائه‌دهنده خدمات ابری مدیریت می‌شوند و پرداخت هزینه آنها برمبنای استفاده است.

برخلاف BaaS، FaaS کنترل بیشتری را برای برنامه‌نویسان فراهم می‌کند که به‌جای تکیه بر دستورات از پیش نوشته شده، برنامه‌های سفارشی ایجاد کنند.