
FaaS یا Function as a Service چیست؟ هرآنچه باید درباره تابع بهعنوان سرویس بدانید
FaaS سرویسی است که امکان اجرای اپلیکیشنها را برای توسعهدهندگان فراهم میکند. این امکان به مدیریت زیرساخت ابری نیازی نخواهد داشت. درحالحاضر، سرویسهایی در Serverlessها وجود دارند که از توسعه app معاف شدهاند.
ارائهدهندگان خدمات ابری با بهکارگیری یک مدل serverless، روتینهای کاری ازق بیل تهیه، نگهداری و مقیاسبندی زیرساختهای سروری را برعهده میگیرند و توسعهدهندگان نیز میتوانند روی توسعه کدهای خود کار کنند. در این مطلب قصد داریم بیشتر درباره FaaS صحبت کنیم. پس تا پایان با ما همراه باشید.
- FaaS چیست؟
- IaaS و PaaS و FaaS چه رابطهای با یکدیگر دارند؟
- FaaS در مقابل PaaS
- FaaS چگونه کار میکند؟
- مزایای FaaS
- نکاتی برای انتخاب FaaS
- سخن آخر
- سؤالات متداول
FaaS چیست؟
FaaS مخفف عبارت Function as a Service سرویسی است که به توسعهدهندگان امکان میدهد، بتوانند بدون نیاز به مدیریت زیرساخت ابری، کدها و برنامههایشان را طراحی و اجرا کنند. بسیاری از افراد FaaS و Serverless را شبیه یکدیگر و مترادف هم میدانند؛ اما این دو با یکدیگر متفاوت هستند و هرکدام تعریف جداگانهای دارند.
FaaS درواقع زیرمجموعهای از محاسبات Serverless است و بهعنوان راهی برای پیادهکردن معماری Serverless شناخته میشود؛ پس میتوان گفت که این دو عبارت و کلمه با یکدیگر متفاوت هستند. Serverless شکل انتزاعی از زیرساختهایی همچون سرور و منابعش را دراختیار توسعهدهندگان قرار میدهد. بههمیندلیل، تمرکز توسعهدهنده افزایش خواهد یافت و تمرکز اصلی را روی اجرای کدهایش خواهد گذاشت.
درصورتیکه درخواستی وجود نداشته باشد، سرور بهصورت خودکار خاموش خواهد شد و منابع را برای درخواستهای دیگر دردسترس قرار خواهد داد. جالب است بدانید تا زمانی که Serverless بیکار باشد، هیچ هزینهای برایتان بههمراه نخواهد داشت و همین مزیت موجب صرفهجویی در هزینهها میشود.
IaaS و PaaS و FaaS چه رابطهای با یکدیگر دارند؟
IaaS مخفف عبارت Infrastructure as a Service و PaaS مخفف عبارت Platform as a Service و FaaS نیز مخفف عبارت Function as a Service است. هر سه سرویس درحقیقت زیر سایه محاسبات ابری هستند و تفاوت آنها در سطح انتزاعِ بین کاربر و زیرساخت است. درادامه، درباره این سه سرویس بیشتر توضیح خواهیم داد.

FaaS چه تفاوتی با سایر سرویس های ابری دارد؟
IaaS
IaaS پایینترین سطح انتزاع را به کاربر ارائه میدهد. با IaaS کاربران کاملاً بر زیرساختها و نرمافزارها و ابزارهای مرتبط با فناوری خود کنترل خواهند داشت؛ اما مجبور نیستند که زیرساختهای فیزیکی و دیتاسنتر را کنترل یا مدیریت کنند. نکته دیگر اینکه با IaaS توسعهدهندگان میتوانند لایههای انتزاعی مدنظرشان را انتخاب و همهچیز را مدیریت کنند. همچنین، کاربران با IaaS سرویسهای مدیریتشده را میتوانند بهصورت لایهلایه دربیاورند تا مدیریت و نگهداری برنامه راحتتر شود.
PaaS
PaaS لایه دیگری از انتزاع را برای کاربران اضافه میکند. با استفاده از PaaS، کاربران دیگر به مدیریت سیستمعامل و زمان اجرا و بهطورکلی سایر اجزای زیرساختی برنامه خود نیازی ندارند. باوجوداین، توجه کنید که کاربران همچنان کاملاً بر پیکربندیهای زیرساختی و برنامههای کاربردی کنترل خواهند داشت.
درواقع، PaaS راهحل زیرساختی کاملاً مدیریتشده را به توسعهدهندگانی ارائه میدهد که بهدنبال راهاندازی سریع برنامهها هستند. توسعهدهندگان با استفاده از PaaS میتوانند تمرکزشان را کاملاً روی کار و توسعه خود بگذارند و فرایندهای مدیریتی را به ارائهدهنده واگذار کنند.
FaaS
از بین این سه سرویس، FaaS بیشترین انتراع و خاصترین عملکرد را به کاربر ارائه میدهد. با استفاده از FaaS، توسعهدهندگان به پلتفرمی دسترسی پیدا میکنند که منطق برنامه را براساس تقاضا اجرا خواهند کرد. ارائهدهنده سرویس تمام منابع برنامه و دیگر اجزای زیرساختی را کاملاً مدیریت خواهد کرد؛ بههمیندلیل، برنامهنویسان و توسعهدهندگان از FaaS استقبال فراوانی کردهاند و از آن استفاده میکنند.
FaaS در مقابل PaaS
در حالی که FaaS و PaaS در نگاه اول کاملاً مشابه بهنظر میرسند، تفاوتهای مهمی با یکدیگر دارند. درواقع، این تفاوتهای مهم هنگام انتخاب یکی از این دو سرویس تعیینکننده خواهند بود.

بررسی تفاوت FaaS و PaaS
پیکربندی
پیکربندی یکی از تفاوتهای این دو سرویس است. بهدلیل استفاده ساده و راهحلهای کاملاً مدیریتشده، FaaS زمان ارائه بسیار کمی دارد. اگرچه PaaS انتزاع بیشتری درمقایسهبا سایر مدلهای رایانش ابری ارائه میدهد، به پیکربندی نیاز خواهد داشت. همین مسئله نیازِ PaaS به پیکربندی باتوجهبه میزان و سطح کنترل و دسترسی مدنظر، میتواند بهعنوان مزیت یا عیب محسوب شود.
عملیات (Operations)
عملیات (Operations) از دیگر تفاوتهای این دو سرویس بهشمار میآید. فناوریهای FaaS کل برنامهها را براساس درخواستهای فردی میچرخانند؛ درحالیکه فناوری PaaS اینگونه نیست. منابع PaaS بهطور خودکار و درصورت نیاز میتواند افزایش یا کاهش پیدا کند. البته به این موضوع نیز توجه کنید که معمولاً همواره برخی منابع در حال اجرا هستند.
مقیاسپذیری
مقیاسپذیری نیز عامل دیگری است که در PaaS و FaaS تفاوتهایی دارد. برای مثال، مقیاسپذیری PaaS درصورت نیاز افزایش یا کاهش مییابد؛ اما توسعهدهنده باید به فکر پیکربندی آن باشد. درمقابل، FaaS به برنامهریزی ظرفیت و منابع نیازی نخواهد داشت و مقیاسپذیری آن بیشتر خواهد بود.
قیمتگذاری
دیگر تفاوت FaaS و PaaS در قیمتگذاری است. قیمتگذاری PaaS باتوجهبه شرکت ارائهدهنده متغیر است و پلنهای متفاوتی دارد. برای حجم کاری کم، قیمت PaaS مقرونبهصرفهتر از FaaS نیست؛ اما FaaS به کاربران این اجازه را میدهد که در ازای فراخوانی تابع، هزینه پرداخت کنند. این امر به صرفهجویی هزینه و زمان بسیار کمک خواهد کرد. اگر حجم کاری سنگینی دارید، از PaaS بهره ببرید و اگر حجم کاریتان سبک است، از FaaS استفاده کنید.
FaaS چگونه کار میکند؟
برنامههایی که در سالهای گذشته نوشته میشدند، معمولاً از معماری یکپارچه استفاده میکردند. معماری یکپارچه باعث میشود برنامه بهصورت کلی و یک اجرای واحد طراحی شود. بنابراین، مجبور بودند آن را بهیکباره راهاندازی کنند. با گذشت زمان توسعهدهندگان استفاده از میکروسرویسها را شروع کردند. میکروسرویسها مجموعهای از ماژولها هستند که بهطور مستقل میتوانند استقرار پیدا کنند. نکته دیگر اینکه روی آنها میتوان بهصورت مستقل و جداگانه کار کرد و همین امر آزمایش و نگهداری برنامهها را راحتتر کرده است.

Function-as-a-service چگونه عمل میکند؟
تابع درواقع میکروسرویسی است که تنها میتواند یک عمل را در پاسخ به یک رویداد انجام دهد. با استفاده از FaaS زمانی که یک تابع راهاندازی میشود، ارائهدهنده سرور را میچرخاند و تابع را اجرا و سپس سرور را خاموش میکند. هنگامی که سرور خاموش میشود، منابع محاسباتی مشابه در جای دیگری تخصیص داده میشوند. همین موضوع بهصورت مستقیم و غیرمستقیم روی نگهداری اثر مثبت خواهد گذاشت.
توسعهدهندگانی که از FaaS استفاده میکنند، دراصل به پلتفرمی دسترسی دارند که به آنها امکان میدهد کدها را برای برنامههایشان اجرا کنند. مهمترین ویژگی FaaS سادگی است. برای اینکه توسعهدهندگان از FaaS به بهترین شکل استفاده کنند، باید مطمئن شوند که هر تابع فقط یک عمل را انجام میدهد. به این نکته توجه کنید که دامنه عملکرد باید محدود و درعینحال کارآمد باشد. اینکه از تابع درخواست کنید برای تابع دیگری فراخوانی را انجام دهد، بهمرورزمان سرعت برنامه را کاهش و به نسبت آن هزینهها را نیز افزایش خواهد داد.
مزایای FaaS
بهطورکلی، استفاده از FaaS برای توسعهدهندگان و برنامهنویسان مزایای زیادی بههمراه خواهد داشت:
- اولین مزیت استفاده از این معماری، افزایش تمرکز توسعهدهنده روی کدنویسی و برداشتهشدن تمرکزش از مدیریت زیرساختهای سرور است.
- دومین مزیت استفاده از FaaS، صرفهجویی در هزینههاست. درواقع با استفاده از FaaS، فقط بهاندازهای هزینه پرداخت خواهید کرد که از منابع استفاده کردهاید. این در حالی است که PaaS و IaaS چنین پلن و ویژگیای را ندارند.
- سومین مزیت استفاده از این معماری، توانایی مقیاس خودکار بدون برنامهریزی ظرفیت یا تعمیر و نگهداری مداوم است. درواقع، تمام این کارهای مدیریتی و زیرساختی را خود ارائهدهنده انجام خواهد داد.
- چهارمین مزیت استفاده از FaaS، صرفهجویی در زمان است. بهدلیل راحتی این معماری و…، استفاده از FaaS برای شما صرفهجویی در زمان را نیز بههمراه خواهد داشت.

استفاده از سرویس FaaS چه مزایایی دارد؟
نکاتی برای انتخاب FaaS
درمجموع، از FaaS میتوان درزمینه برنامههای وب، پردازش دادهها، رباتهای گفتوگوی آنلاین، توابع پشتیبان و... استفاده کرد؛ اما برای انتخاب FaaS، بهتر است به این نکات دقت کنید.
حجم کار
حجم کار نکتهای است که قبل استفاده از FaaS باید به آن توجه کنید. FaaS معمولاً برای حجم کاری ثابت استفاده میشود و اگر حجم کاری شما ثابت یا سبک است میتوانید از آن استفاده کنید.
از آنجا که قیمتگذاری FaaS براساس اجرای تابع تعیین میشود، درصورت سنگینبودن حجم کار، ممکن است استفاده از این معماری و سرویس درمقایسهبا PaaS برایتان بهصرفه نباشد. اگر حجم کاریتان نسبتاً سبک است، FaaS بهترین گزینه برایتان خواهد بود و موجب کاهش هزینههایتان میشود.
کنترل
همانطورکه پیشتر گفتیم، FaaS یکی از انتزاعیترین سرویسهای ابری است. میزان کنترلی که بر پیکربندیها و زیرساختهای خود ترجیح میدهید، در نظر بگیرید و میخواهید کنترل بیشتری داشته باشید، از PaaS استفاده کنید. توسعهدهندگانی که قصد دارند زیرساختهای خود را کاملاً کنترل کنند، میتوانند از IaaS بهره بگیرند.
سخن آخر
برای استفاده از PaaS یا IaaS یا FaaS باید به نیازهای مدیریتی و محاسباتیتان توجه کنید. اگر حجم کاریتان چندان سنگین نیست و نمیخواهید هزینه زیادی برای سرور و منابع صرف کنید، حتماً از FaaS بهره بگیرید. درصورتیکه میخواهید در زمانتان صرفهجویی کنید، بازهم FaaS برایتان بهترین انتخاب خواهد بود؛ اما درنهایت بد نیست نگاهی هم به ویژگیهای IaaS و PaaS بیندازید تا درصورت نیاز از آنها استفاده کنید.
سؤالات متداول
1. FaaS چیست؟
FaaS مخفف عبارت Function as a Service و سرویسی است که به برنامهنویسان برای اجرای کد و برنامههایشان کمک میکند.
2. Serverless چه تفاوتی با FaaS دارد؟
FaaS زیرمجموعهای از محاسبات Serverless است و بهعنوان راهی برای پیادهکردن معماری Serverless شناخته میشود.
3. آیا FaaS و IaaS و PaaS با یکدیگر تفاوت دارند؟
بله، هر سه ارائههای محاسبات ابری هستند؛ اما در سطح انتزاعی که به کاربر ارائه میدهند، با یکدیگر تفاوت دارند.
4. بین FaaS و IaaS و PaaS کدام بهتر است؟
جواب این سؤال بستگی به حجم کاری و… خواهد داشت؛ اما میتوان گفت که برای حجم کاری سبک استفاده از FaaS بسیار مناسب خواهد بود. درصورتیکه حجم کارتان سنگین است، پیشنهاد میکنیم که از PaaS استفاده کنید؛ اما اگر میخواهید مدیریت کامل زیرساخت را برعهده داشته باشید، استفاده از IaaS مناسبترین گزینه برایتان خواهد بود.
5. برای انتخاب FaaS به چه نکاتی توجه کنیم؟
حجم کار و کنترل و Vendor lock-in