FaaS یا Function as a Service چیست؟ هرآنچه باید درباره تابع بهعنوان سرویس بدانید
در این مقاله میخوانید
FaaS یک زیرساخت بدون سرور (Serverless) برای توسعه و اجرای توابع و کدنویسی دولوپرهاست. در واقع با استفاده از خدمات سرورلس دیگر نیازی به تهیه و سفارشیسازی تنظیمات سرور ندارید بلکه میتوانید از منابع ارائهشده سرویسدهنده استفاده کرده و تنها هزینه مدت زمان استفاده فانکشن از منابع سرور را بپردازید.
خدمات «عملکرد بهعنوان سرویس» یا همان FaaS شرایطی را برای برنامهنویسان فراهم میکند تا بدون درگیرشدن با زیرساختهای ابری و سرورهای فیزیکی تنها دغدغه کدزنی و ایجاد تابعها را داشته باشند و بهراحتی آنها را در سرویسهای ساده و کاربردی FaaS اجرا کنند. اگر میخواهید درباره ویژگیها و نحوۀ کار تابع بهعنوان سرویس بیشتر بدانید با ما همراه باشید.
سرورلس (Serverless) چیست؟
سرورلس را میتوان روشی بهحساب آورد که در آن بدون نیاز به زیرساخت سرور ابری یا فیزیکی میتوان برنامهها و پروژههای نرمافزاری را اجرا کرد. همۀ ما میدانیم که برای اجرای یک برنامه یا وبسایت نیاز به سرورهایی است که توسعهدهندگان بتوانند خدمات خود را در آن به کاربران ارائه دهند.
در این روش زحمت تنظیمات سرور از روی دوش برنامهنویسان برداشته شده و منابع مورد نیاز آنها برای اجرای توابع و کدهایشان تامین میشود. نحوه محاسبۀ هزینه در سرورلسها تنها برای مدت زمان استفاده تابعها از منابع است بههمین دلیل حجم مصرفی RAM،CPU یا سایر منابع معیاری برای سنجش هزینه نیستند.
ویژگیهای سرویس سرورلس
- اگر یک دولوپر باشید و کدهای نوشتهشده خود را در بستر یک سرویس Serverless دیپلوی (Deploy) کنید تنها هزینۀ مدت زمانی که طول میکشد تابع شما اجرا شود را میپردازید.
- هیچگونه ساختاری برای ایجاد تابعهای نوشتهشده در نظر گرفته نمیشود و شرکتهای ارائهدهندۀ، کدهای نوشتهشده را بهعنوان یک تسک (Task) خاص اجرا میکنند.
- در روش سرورلس تابعها میتوانند به روشهای مختلف اجرا شوند و نحوه انجام کار آنها تاثیری بر سرویس ارائهشده و هزینه آن ندارد و تنها مدت زمان اجرا معیار سنجش است.
- درنهایت دغدغههای مدیریت و تامین زیرساختهای سرور بر روی دوش سرویسدهنده خواهد بود و بهعنوان توسعهدهنده شما تنها بر روی کدزنی و توسعه محصول تمرکز میکنید.
FaaS چیست؟
FaaS مخفف «Function as as Service» یا همان تابع بهعنوان سرویس یکی از مدلهای رایانش ابری، مفهومی کلی از سرورلسها را در خود جای داده است. در این روش دولوپرها بدون هرگونه محدودیت در استفاده از فریمورکها یا لایبرریها و فارغ از نیاز به مدیریت سرور و تامین زیرساختهای آن، میتوانند تابعهای موردنظر خود را اجرا کنند.
Functionها اجزایی هستند که توسط توسعهدهنده نوشتهشده و همگی با هم یک برنامه کامل را تشکیل میدهند. دیپلوی تابع بهعنوان سرویس نیز با روشهای معمول سنتی متفاوت است. در این روش تابعهای نوشتهشده توسط دولوپر روی سرور FaaS آپلود میشود و زحمت اجرای آنها و انجام رویدادهای مشخصشده، توسط سرویس FaaS انجام خواهد شد.
اگرچه بسیاری افراد تابع بهعنوان سرویس و سرورلسها را یکسان میدانند اما این دو تفاوتهایی با یکدیگر دارند که در ادامه به آنها اشاره خواهیم کرد.
FaaS چگونه کار میکند؟
در گذشته بیشتر برنامههای نوشتهشده از معماری یکپارچه بهره میبرند. در معماری یکپارچه اجزای برنامه بهصورت واحد و کلی اجرا میشوند و همین امر باعث اجرا و راهاندازی برنامه بهیکباره خواهد شد.
با گذشت زمان دولوپرها به استفاده از میکروسرویسها (Microservice) روی آوردند. میکروسرویسها مجموعهای از ماژولها هستند که بهطور مستقل میتوانند اجرا شوند. همچنین روی آنها میتوان بهصورت مستقل و جداگانه کار کرد و همین امر آزمایش و نگهداری برنامهها را راحتتر کرده است. تقسیمبندی یک برنامه به سرویسهای کوچک به توسعهدهندگان کمک میکند تا بهسادگی کدهای کوچک را ایجاد، اصلاح و اجرا کنند.
نقش تابع در یک میکروسرویس
تابع درواقع میکروسرویسی است که تنها میتواند یک عمل را در پاسخ به یک رویداد انجام دهد. با استفاده از FaaS زمانی که یک تابع ایجاد میشود، ارائهدهندۀ سرور شروع به کار میکند و تابع اجرا خواهد شد و پس از انجام عملیات، سرور دوباره خاموش خواهد شد و اتلاف منابع نخواهد داشت.
در صورت خاموششدن سرور، منابع محاسباتی مشابه از جای دیگری تخصیص داده میشوند. همین موضوع بهصورت مستقیم و غیرمستقیم روی پایداری اثر مثبت میگذارد.
توسعهدهندگانی که از FaaS استفاده میکنند، دراصل به پلتفرمی دسترسی دارند که به آنها امکان میدهد کدها را برای برنامههایشان اجرا کنند. مهمترین ویژگی FaaS سادگی است.
برای اینکه توسعهدهندگان از FaaS به بهترین شکل استفاده کنند، باید مطمئن شوند که هر تابع فقط یک عمل را انجام میدهد. به این نکته توجه کنید که دامنه عملکرد باید محدود و درعینحال کارآمد باشد. اینکه از تابع درخواست کنید برای تابع دیگری فراخوانی را انجام دهد، بهمرورزمان سرعت برنامه را کاهش و به نسبت آن هزینهها را نیز افزایش خواهد داد.
محبوبترین شرکتهای ارائهدهندۀ FaaS کدامند؟
سرویسهای FaaS روزبهروز در حال کاربردیترشدن هستند و بهدنبال آن ارائهدهندگان زیادی آن را با هزینههای متفاوت عرضه میکنند. در این بین شرکتهای نامآشنا و محبوبی وجود دارد که خدمات تابع بهعنوان سرویس آنها میان کاربران پذیرفتهشده و پرطرفدار است. از جمله این ارائه دهندگان عبارتند از:
1. سرویس FaaS آمازون AWS Lambda Amazon
سرویسهای وب آمازون (AWS) طرفداران زیادی دارد چرا که شما را از زحمت مدیریت سرور میرهاند و میتوانید تنها روی نوشتن کدها و توابع خود تمرکز کنید. برای مثال زمانیکه یک تصویر را در سرور FaaS آپلود میکنید؛ تابع Lambda بهصورت خودکار اندازه تصویر را براساس نوع دستگاه کاربر اعم از لپتاپ، تبلت، موبایل و کامپیوتر شخصی، بهینه میکند. همچنین هزینه استفاده از Lambda تنها به میزان منابع مصرفی شما محاسبه میشود.
2. توابع کلود گوگل Google Cloud Functions
Google Cloud Functions یک سرویس محاسباتی بدون سرور بوده که در سال 2018 توسط گوگل راهاندازی شده است. این سرویس به دولوپرها کمک میکند تا کدهایشان را تحت سرویسهای ابری مختلف مانند ابر عمومی گوگل (Google’s public cloud) نوشته و اجرا کنند.
هدف گوگل هم سادهتر کردن کار توسعهدهندگان و فارغ کردن آنها از توجه به زیرساختهای برنامه است. Google Cloud Functions بهطور خودکار منابع را هر زمان که نیاز باشد افزایش داده و در صورت عدم نیاز آنها را بلااستفاده میگذارد.
3. توابع مایکروسافت Microsoft Azure Functions
توابع Azure یک سرویس کاربردی FaaS هستند که مایکروسافت برای راحتی کار دولوپرها راهاندازی کرده است. این سرویس سرعت توسعه و طراحی پروژههای نرمافزاری را افزایش میدهد و توسعهدهندگان میتوانند کدهای خود را به راحتی آپلود کرده و اجرا بگیرند. همانند سرویسهای FaaS دیگر پس از راهاندازی کد در مایکروسافت Azure و تنظیم توابع شروع به اجرای رویدادها میکند.
IaaS و PaaS و SaaS و FaaS چه رابطهای با یکدیگر دارند؟
نقش سرویسهای رایانش ابری در کسبوکارهای امروزی اجتنابناپذیر است و کاربرد گستردۀ این خدمات باعث ایجاد تنوع در آنها شده است.
علاوه بر سرویس FaaS سرویسهای IaaS، Pass و SaaS وجود دارند، هر سه سرویس درحقیقت زیر سایه محاسبات ابری هستند و تفاوت آنها در سطح انتزاعِ بین کاربر و زیرساخت است. درادامه، درباره این سه سرویس بیشتر توضیح خواهیم داد.
PaaS | IaaS | SaaS | FaaS | |
توابع | مدیریت توسط خریدار | دیتاسنتر و امکانات | مدیریت با ارائه دهنده | مدیریت توسط خریدار |
نرمافزارها | مدیریت توسط خریدار | دیتاسنتر و امکانات | مدیریت با ارائه دهنده | دیتاسنتر و امکانات |
زمان اجرا | مدیریت با ارائه دهنده | دیتاسنتر و امکانات | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده |
کانتینرها | مدیریت با ارائه دهنده | مدیریت توسط خریدار | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده |
سیستم عامل | مدیریت با ارائه دهنده | مدیریت توسط خریدار | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده |
مجازیسازی | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده |
سختافزار | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده | مدیریت با ارائه دهنده |
IaaS .1 یا زیرساخت بهعنوان سرویس
iaas مخفف «Infrastructure as a Service» به معنی زیرساخت بهعنوان سرویس است. این سرویس زیرساختی کامل و کاربردی از اینترنت را شامل میشود که سختافزار مجازیسازیشده مانند شبکه، سرور، سیستمعامل و تمامی امکانات لازم برای ایجاد و اجرای سیستمها را در خود جای داده است.
IaaS را میتوان منعطفترین سرویس رایانش ابری بهشمار آورد که زیرساخت محاسباتی قوی را برای نگهداری نرمافزارهای سبک و سنگین در اختیارتان قرار میدهد.
«زیرساخت بهعنوان سرویس» پایینترین سطح انتزاع را به کاربر ارائه میدهد. با این سرویس میتوانید بهطور کامل بر زیرساختها، نرمافزارها و ابزارهای مرتبط با فناوری خود نظارت داشته باشید؛ اما مجبور به مدیریت و کنترل زیرساختهای فیزیکی و دیتاسنتر نیستید.
با استفاده از این سرویس امکان ایجاد ماشین مجازی (VM) و نصب سیستمعامل وجود دارد. از محبوبترین سرویسهای IaaS میتوان به وب آمازون (AWS) و پلتفرم گوگل کلود (Google Cloud Platform) اشاره کرد.
PaaS .2 یا پلتفرم بهعنوان سرویس
PaaS مخفف «Platform as a Service» به معنی پلتفرم بهعنوان سرویس است و لایه دیگری از انتزاع را برای کاربران اضافه میکند. در این روش توسعهدهندگان میتوانند به محیطهای برنامهنویسی با زبانهای مختلف دسترسی پیدا کرده و برنامههای مدنظرشان را ایجاد و اجرا کنند.
در واقع PaaS نرمافزار و سختافزار مورد نیاز برای راهاندازی و اجرای برنامهها را در اختیار کاربران قرار میدهد.
با استفاده از PaaS، کاربران دیگر به مدیریت سیستمعامل و زمان اجرا و بهطورکلی سایر اجزای زیرساختی برنامه خود نیازی ندارند. باوجوداین، توجه کنید که کاربران همچنان بهطور کامل بر پیکربندیهای زیرساختی و برنامههای کاربردی کنترل خواهند داشت.
درواقع، PaaS راهحل زیرساختی مدیریتشده را به توسعهدهندگانی ارائه میدهد که بهدنبال راهاندازی سریع برنامهها هستند. توسعهدهندگان با استفاده از PaaS میتوانند تمرکزشان را روی کار و توسعه خود بگذارند و فرایندهای مدیریتی را به ارائهدهنده واگذار کنند.
SaaS .3 یا نرمافزار بهعنوان سرویس
saas مخفف «Software as a Service» به معنای نرمافزار بهعنوان سرویس است. در این روش یک سرویسدهنده، برنامهها و نرمافزارهای مورد نیاز کاربران را بهصورت ماهانه یا مدت زمان معین در اختیار کاربران قرار میدهد. بنابراین تمامی افراد با تهیه اشتراک میتوانند به برنامههای مورد نظر خود بدون نیاز به نصب، از طریق اینترنت دسترسی پیدا کنند.
هزینه استفاده از این خدمات بر اساس مدت زمان و میزان استفاده محاسبه میشود. از معروفترین ارائهدهندگان سرویس SaaS میتوان به مایکروسافت (Microsoft)، اوراکل (Oracle) و SAP اشاره کرد.
FaaS .4 یا تابع بهعنوان سرویس
از بین این سه سرویس، FaaS بیشترین انتزاع و خاصترین عملکرد را به کاربر ارائه میدهد. با استفاده از FaaS، توسعهدهندگان به پلتفرمی دسترسی پیدا میکنند که منطق برنامه را بر اساس تقاضا اجرا خواهد کرد. ارائهدهنده سرویس تمام منابع برنامه و دیگر اجزای زیرساختی را بهطور کامل مدیریت خواهد کرد؛ بههمیندلیل، برنامهنویسان و توسعهدهندگان از FaaS استقبال فراوانی کردهاند و از آن استفاده وسیعی میکنند.
مزایای استفاده از FaaS
بهطورکلی، استفاده از FaaS برای توسعهدهندگان و برنامهنویسان مزایای زیادی بههمراه خواهد داشت:
- اولین مزیت استفاده از این معماری، افزایش تمرکز توسعهدهنده روی کدنویسی و برداشتهشدن تمرکزش از مدیریت زیرساختهای سرور است.
- دومین مزیت استفاده از FaaS، صرفهجویی در هزینههاست. درواقع با استفاده از FaaS، فقط بهاندازهای هزینه پرداخت خواهید کرد که از منابع استفاده کردهاید. این در حالی است که PaaS و IaaS چنین پلن و ویژگیای را ندارند.
- سومین مزیت استفاده از این معماری، توانایی مقیاس خودکار بدون برنامهریزی ظرفیت یا تعمیر و نگهداری مداوم است. درواقع، تمام این کارهای مدیریتی و زیرساختی را خود ارائهدهنده انجام خواهد داد.
- چهارمین مزیت استفاده از FaaS، صرفهجویی در زمان است. بهدلیل سادگی استفاده از این معماری صرفهجویی در زمان را نیز بههمراه خواهد داشت.
نکاتی برای انتخاب سرویس FaaS
از FaaS میتوان درزمینه برنامههای وب، پردازش دادهها، رباتهای گفتوگوی آنلاین، توابع پشتیبان و… استفاده کرد؛ اما برای انتخاب FaaS، بهتر است به این نکات دقت کنید.
1. توجه به حجم کار
حجم کار نکتهای است که قبل استفاده از FaaS باید به آن توجه کنید. خدمات تابع بهعنوان سرویس رایانش ابری معمولاً برای حجم کاری ثابت استفاده میشود و اگر حجم کاری شما ثابت یا سبک است میتوانید از آن استفاده کنید.
از آنجا که قیمتگذاری FaaS براساس اجرای تابع تعیین میشود، درصورت سنگینبودن حجم کار، ممکن است استفاده از این معماری درمقایسهبا PaaS برایتان بهصرفه نباشد. اگر حجم کاریتان نسبتاً سبک است، FaaS بهترین گزینه برایتان خواهد بود و موجب کاهش هزینههایتان میشود.
2. بررسی میزان کنترل زیرساخت
همانطورکه پیشتر گفتیم، FaaS یکی از انتزاعیترین سرویسهای ابری است. میزان کنترلی که بر پیکربندیها و زیرساختهای خود ترجیح میدهید، در نظر بگیرید و اگر میخواهید کنترل بیشتری داشته باشید، از PaaS استفاده کنید. توسعهدهندگانی که قصد دارند زیرساختهای خود را بهطور کامل کنترل کنند، میتوانند از IaaS بهره بگیرند.
جمعبندی
برای استفاده از PaaS یا IaaS یا FaaS باید به نیازهای مدیریتی و محاسباتیتان توجه کنید. اگر حجم کاریتان چندان سنگین نیست و نمیخواهید هزینه زیادی برای سرور و منابع صرف کنید، از FaaS بهره بگیرید. درصورتیکه میخواهید در زمانتان صرفهجویی کنید، بازهم FaaS برایتان بهترین انتخاب خواهد بود؛ اما بد نیست نگاهی هم به ویژگیهای IaaS و PaaS بیندازید تا درصورت نیاز از آنها استفاده کنید.
سؤالات متداول
FaaS .1 چیست؟
FaaS مخفف عبارت Function as a Service و سرویسی است که به برنامهنویسان برای اجرای کد و برنامههایشان کمک میکند.
Serverles .2 چه تفاوتی با FaaS دارد؟
FaaS زیرمجموعهای از محاسبات Serverless است و بهعنوان راهی برای پیادهکردن معماری Serverless شناخته میشود.
3. آیا FaaS و IaaS و PaaS با یکدیگر تفاوت دارند؟
بله، هر سه ارائههای محاسبات ابری هستند؛ اما در سطح انتزاعی که به کاربر ارائه میدهند، با یکدیگر تفاوت دارند.
4. بین FaaS و IaaS و PaaS کدام بهتر است؟
جواب این سؤال بستگی به حجم کاری و… خواهد داشت؛ اما میتوان گفت که برای حجم کاری سبک استفاده از FaaS بسیار مناسب خواهد بود.
درصورتیکه حجم کارتان سنگین است، پیشنهاد میکنیم که از PaaS استفاده کنید؛ اما اگر میخواهید مدیریت کامل زیرساخت را برعهده داشته باشید، استفاده از IaaS مناسبترین گزینه برایتان خواهد بود.
5. برای انتخاب FaaS به چه نکاتی توجه کنیم؟
حجم کار و میزان کنترل و Vendor lock-in