FaaS یکی از مدلهای رایانش ابری است که اجرای بخشهای کوچک کد را سادهتر میکند. در این مدل، توسعهدهنده بهجای مدیریت سرور، سیستمعامل و ظرفیت زیرساخت، فقط تابع مورد نظر را مینویسد و اجرای آن را به سرویس ابری میسپارد.
در مدل FaaS، برنامه به مجموعهای از تابعهای مستقل تقسیم میشود. هر تابع در واکنش به یک رویداد مشخص آغاز به کار میکند و پس از پایان پردازش، تخصیص منابع آن به پایان میرسد. در ادامه، بررسی میکنیم FaaS چیست، چگونه کار میکند و چه تفاوتی با سرورلس دارد.
FaaS چیست؟
FaaS کوتاهشدهی Function as a Service است. در این مدل، توسعهدهنده یک قطعهی کد مستقل را در قالب تابع مینویسد و آن را روی زیرساخت ابری اجرا میکند. هر تابع یک کار مشخص انجام میدهد؛ مانند پردازش فایل، تغییر اندازهی تصویر، پاسخ به درخواست API یا ثبت اطلاعات فرم.
در FaaS، سرویس ابری اجرای تابع، تخصیص منابع، مدیریت ظرفیت و مقیاسپذیری خودکار را برعهده دارد. بنابراین، FaaS یکی از مدلهای رایانش بدون سرور بهشمار میآید. البته سرور حذف نمیشود، بلکه توسعهدهنده مستقیم با آن درگیر نیست. اگر پروژه به کنترل کامل روی ماشین، سیستمعامل و منابع نیاز داشته باشد، خرید سرور ابری گزینهی مناسبتری است. ولی برای اجرای تابعهای کوچک و رویدادمحور، FaaS اغلب کاربرد سادهتر و اقتصادیتری دارد.
FaaS چگونه کار میکند؟
FaaS بر پایهی معماری رویدادمحور کار میکند. یعنی اجرای تابع با یک رویداد آغاز میشود؛ مانند ارسال درخواست HTTP، بارگذاری فایل، ثبت پیام در صف، تغییر در پایگاه داده یا رسیدن زمان اجرای یک وظیفهی مشخص.
در این چرخه، ابتدا رویداد رخ میدهد. سپس، سرویس FaaS تابع مرتبط را اجرا میکند، دادهی ورودی پردازش میشود و خروجی برمیگردد. بعد از پایان اجرا، منابع آزاد میشوند. بنابراین، تابع فقط هنگام نیاز فعال است و سیستم راحتتر با افزایش یا کاهش بار سازگاری نشان میدهد.
مزایای استفاده از FaaS
FaaS بهدلیل سادگی اجرا و کاهش نیاز به مدیریت زیرساخت، در بسیاری از پروژههای ابری کاربرد دارد. مهمترین مزایای FaaS عبارتاند از:
1. کاهش هزینهها
تابع فقط هنگام رخ دادن رویداد اجرا میشود. بنابراین، هزینهها با میزان استفادهی واقعی هماهنگتر است و نیازی به روشن ماندن دایمی سرور نیست. این مدل به کسبوکارها کمک میکند هزینههای زیرساخت را بهویژه در بارهای کاری متغیر کاهش دهند.
3. مقیاسپذیری خودکار
اگر تعداد درخواستها افزایش پیدا کند، سرویس FaaS میتواند چند نمونه از تابع را همزمان اجرا کند. این ویژگی برای APIهای پرترافیک، کمپینها و پردازشهای مقطعی مفید است. با کاهش ترافیک نیز منابع بهطور خودکار کاهش پیدا میکنند و نیازی به مداخلهی دستی نیست.
3. صرفهجویی در زمان توسعه
تیم فنی زمان کمتری برای آمادهسازی سرور، نگهداری سیستمعامل و تنظیم منابع صرف میکند. در نتیجه، توسعهی محصول سریعتر پیش میرود. این موضوع باعث میشود توسعهدهندگان زمان بیشتری را صرف پیادهسازی قابلیتهای جدید کنند.
4. تمرکز روی کد
توسعهدهنده تابع، ورودی و خروجی آن را مشخص میکند و مدیریت اجرا را به سرویس ابری میسپارد. این موضوع برای تیمهای کوچک و پروژههای چابک ارزش زیادی دارد. در نتیجه، پیچیدگی مدیریت زیرساخت کاهش پیدا میکند و تمرکز تیم روی توسعهی منطق برنامه باقی میماند.
تفاوت FaaS با Serverless
FaaS و Serverless گاهی بهجای هم به کار میروند، ولی معنای یکسانی ندارند. Serverless یا رایانش بدون سرور یک مفهوم گستردهتر است و FaaS یکی از مدلهای زیرمجموعهی آن محسوب میشود.
| معیار مقایسه | FaaS | Serverless |
| تعریف | مدلی برای اجرای تابع در فضای ابری است. | رویکردی گسترده برای استفاده از سرویسهای ابری بدون مدیریت مستقیم سرور است. |
| دامنهی کاربرد | بیشتر روی اجرای Function تمرکز دارد. | میتواند شامل تابع، پایگاه داده، صف پیام، ذخیرهسازی و سرویسهای مدیریتشدهی دیگر باشد. |
| معماری | اغلب بر پایهی معماری رویدادمحور کار میکند. | میتواند بخشی از یک معماری کامل ابری باشد. |
| نوع اجرا | تابع در پاسخ به یک رویداد اجرا و بعد از پایان پردازش متوقف میشود. | سرویسهای مختلف بدون نیاز به مدیریت زیرساخت اجرا و مدیریت میشوند. |
| کاربرد مناسب | برای پردازشهای کوتاه، مستقل و مبتنیبر رویداد مناسب است. | برای ساخت بخشهای مختلف یک برنامهی ابری بدون مدیریت سرور کاربرد دارد. |
| نمونه | اجرای تابع برای پردازش فایل یا پاسخ به درخواست API. | استفادهی همزمان از FaaS، دیتابیس مدیریتشده، ذخیرهسازی ابری و سرویس احراز هویت. |
شرکتهای ارایهدهنده FaaS
چند شرکت بزرگ ابری سرویسهای شناختهشدهای برای FaaS ارایه میکنند. هر کدام از این سرویسها امکان اجرای تابع در فضای ابری را فراهم میکنند، ولی از نظر اکوسیستم، کاربرد و نوع یکپارچگی با سرویسهای دیگر تفاوت دارند.
AWS Lambda .1
AWS Lambda یکی از معروفترین سرویسهای FaaS است. این سرویس نقش مهمی در شناخته شدن مدل Function as a Service داشت و امکان اجرای کد در پاسخ به رویدادهای مختلف را فراهم میکند. Lambda با بسیاری از سرویسهای AWS یکپارچه است و برای پردازش رویداد، APIهای سبک و وظایف زمانبندیشده کاربرد دارد.
Google Cloud Functions .2
Google Cloud Functions سرویس FaaS گوگلکلاد است. این سرویس برای اجرای تابعهای سبک و رویدادمحور استفاده میشود. توسعهدهندگان میتوانند از آن برای پردازش درخواستهای HTTP، تغییرات فضای ذخیرهسازی، پیامها و رویدادهای دیگر در اکوسیستم گوگلکلاد استفاده کنند.
Azure Functions .3
Azure Functions سرویس FaaS مایکروسافت محسوب میشود. این سرویس برای تیمهایی مناسب است که از سرویسهای Azure استفاده میکنند. Azure Functions از سناریوهایی مانند ساخت API، اجرای وظایف زمانبندیشده، پردازش صف و اتصال به سرویسهای سازمانی پشتیبانی میکند.
Cloudflare Workers .4
Cloudflare Workers یکی دیگر از سرویسهای مهم این حوزه است. این سرویس کد را در لبهی شبکه اجرا و به کاهش تاخیر کمک میکند. برای همین برای پردازش نزدیک به کاربر، ساخت سرویسهای سبک اینترنتی و پاسخدهی سریع انتخاب مناسبی است.
رابطه IaaS ،PaaS ،SaaS و FaaS
برای درک بهتر FaaS در رایانش ابری، باید آن را کنار مدلهای دیگر Cloud Computing ببینیم. در IaaS یا Infrastructure as a Service، کاربر زیرساخت پایه مانند ماشین مجازی، شبکه و فضای ذخیرهسازی را دریافت میکند. با این مدل، کنترل توسعهدهنده بیشتر است، ولی وظیفهی مدیریت هم بالا میرود.
در PaaS یا Platform as a Service، پلتفرم آمادهتری در اختیار توسعهدهنده قرار میگیرد. توسعهدهنده کمتر با سیستمعامل و زیرساخت درگیر میشود و بیشتر روی برنامه تمرکز میکند. برای پروژههایی که به اجرای برنامه در محیط مدیریتشده نیاز دارند، خرید کانتینر ابری میتواند مناسب باشد. در SaaS یا Software as a Service، کاربر نهایی نرمافزار آماده را مصرف میکند. در این مدل، کمترین میزان مدیریت فنی برعهدهی مصرفکننده است. نمونههای رایج آن ابزارهای ایمیل، مدیریت پروژه، ارتباطات سازمانی و نرمافزارهای آنلاین هستند.
FaaS از نظر سطح مدیریت، حتا از PaaS هم سادهتر بهنظر میرسد، چون توسعهدهنده بهجای اجرای یک برنامهی کامل، تابعهای جداگانه را اجرا میکند. میزان کنترل در FaaS کمتر از IaaS است، ولی پیچیدگی عملیاتی هم کمتر میشود. در مقابل، اگر پروژه به اجرای طولانی، کنترل عمیق روی محیط یا وابستگیهای خاص نیاز داشته باشد، FaaS همیشه بهترین انتخاب نیست.
موارد استفاده از FaaS
FaaS برای کارهایی مناسب است که در واکنش به یک رویداد مشخص اجرا میشوند. این مدل در پردازشهای کوتاه، مستقل و تکرارشونده کاربرد بسیاری دارد.
1. پردازش فایل
یکی از کاربردهای رایج FaaS، پردازش فایل است. برای مثال، وقتی کاربر تصویری را بارگذاری میکند، یک تابع میتواند آن را فشرده نماید، اندازهی آن را تغییر دهد یا نسخهی بندانگشتی بسازد.
2. ساخت APIهای سبک
FaaS برای ساخت APIهای ساده و سبک هم کاربرد دارد. در این حالت، تابع درخواست کاربر را دریافت میکند، دادهی لازم را میخواند و پاسخ را برمیگرداند. اگر این API روی دامنهی مشخصی اجرا شود، شناخت سازوکار دامنه هم اهمیت دارد. در این زمینه مطالعهی مطلب DNS چیست میتواند مفید باشد.
3. پردازش رویدادها
پردازش Event یکی از مهمترین کاربردهای FaaS است. برای مثال، وقتی پیامی وارد صف میشود، تابع میتواند آن را پردازش کند. همچنین، بعد از تغییر یک رکورد در پایگاه داده یا ثبت سفارش در فروشگاه آنلاین، تابع میتواند عملیات بعدی را انجام دهد.
4. اجرای وظایف زمانبندیشده
FaaS برای کارهای زمانبندیشده هم مناسب است. پاکسازی دادههای قدیمی، تولید گزارش روزانه، بررسی وضعیت سرویسها و همگامسازی دورهای اطلاعات از نمونههای رایج این کاربرد هستند.
نکات مهم برای انتخاب سرویس FaaS
برای انتخاب بهتر سرویس FaaS، باید چند معیار اصلی را بررسی کنید که در ادامه آنها را معرفی میکنیم.
1. هزینه
هزینهی سرویس را براساس تعداد اجرا، زمان اجرا، حافظهی مصرفی و حجم درخواستها بررسی کنید. بعضی سرویسها در شروع ارزان به نظر میرسند، ولی با افزایش ترافیک هزینهی بیشتری ایجاد میکنند.
2. مقیاسپذیری
سرویس FaaS باید بتواند هنگام افزایش ناگهانی بار، تابعها را سریع و پایدار اجرا کند. محدودیت اجرای همزمان، سقف منابع و سیاستهای کنترل مصرف هم در این بخش اهمیت دارد.
3. تاخیر اجرا
بعضی تابعها در اولین اجرا با تاخیر بیشتری روبهرو میشوند، چون محیط اجرا باید آماده شود. این حالت را اغلب Cold Start مینامند. اگر برنامه به پاسخ سریع نیاز دارد، این معیار مهمتر میشود.
4. یکپارچگی با سرویسهای دیگر
اگر برنامه از پایگاه داده، صف پیام، ذخیرهسازی ابری، ابزار لاگ یا سرویس احراز هویت استفاده میکند، بهتر است سرویس FaaS با همان اکوسیستم هماهنگ باشد.
5. امنیت
سطح دسترسی تابعها، شیوهی نگهداری اطلاعات حساس، دسترسی به منابع دیگر و نوع ثبت لاگها را بررسی کنید. یک تابع کوچک هم اگر دسترسی بیش از حد داشته باشد، میتواند به نقطهی ضعف امنیتی تبدیل شود.
جمعبندی
FaaS مدلی در رایانش ابری است که اجرای تابع در فضای ابری را سادهتر میکند. در این مدل، توسعهدهنده تابعهای کوچک و مستقل مینویسد و سرویس ابری اجرای آنها را در پاسخ به رویدادها مدیریت میکند. بنابراین، نیاز به مدیریت مستقیم سرور کمتر میشود و توسعهی نرمافزار سریعتر پیش میرود.
FaaS یکی از زیرمجموعههای Serverless است، ولی با مفهوم سرورلس یکی نیست. این مدل برای پردازشهای کوتاه، رویدادمحور و مقیاسپذیر کاربرد دارد. اگر پروژه به اجرای سریع، هزینهی متناسب با مصرف و تمرکز بیشتر روی کد نیاز داشته باشد، FaaS میتواند انتخاب مناسبی برای معماریهای مدرن ابری باشد.





