Top Layout Campaign banner
تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

FaaS چیست؟ آشنایی با تابع به عنوان سرویس


۲۳ شهریور ۱۴۰۵

خلاصه کنید:

openaigeminiperplexity

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

FaaS یا تابع به عنوان سرویس (Function as a Service) یکی از مدل‌های رایانش ابری و بخشی از معماری Serverless است. در این مدل، توسعه‌دهنده تابع را می‌نویسد و مدیریت محیط اجرا، تخصیص منابع و مقیاس‌دهی بر عهده ارائه‌دهنده سرویس ابری قرار می‌گیرد. در ادامه بررسی می‌کنیم FaaS چگونه کار می‌کند، چه کاربردهایی دارد و چه تفاوتی با مدل‌هایی مانند PaaS و IaaS دارد.

FaaS چیست؟ آشنایی با تابع به عنوان سرویس

FaaS در رایانش ابری چیست؟

FaaS یا تابع به عنوان سرویس (Function as a Service) مدلی از رایانش ابری است که اجرای توابع مستقل را بدون نیاز به مدیریت مستقیم سرور و زیرساخت امکان‌پذیر می‌کند.

در این مدل:

  • توسعه‌دهنده فقط کد مربوط به یک وظیفه مشخص را می‌نویسد.
  • اجرای کد در زمان نیاز بر اساس رویدادها انجام می‌شود.
  • تامین منابع پردازشی و مقیاس‌دهی بر عهده ارائه‌دهنده خدمات ابری است.
  • توسعه‌دهنده نیازی به مدیریت سرورها و تنظیمات زیرساختی ندارد.

به همین دلیل، FaaS یکی از مدل‌های رایانش بدون سرور (Serverless Computing) محسوب می‌شود.

در تعریف Google Cloud از FaaS، مدلی است که در آن قطعه‌های کوچک و ماژولار کد در پاسخ به رویدادهای مشخص اجرا می‌شوند.

اجرای تابع در FaaS چگونه انجام می شود؟

هر تابع در FaaS برای انجام یک وظیفه مشخص طراحی می‌شود و پس از رخ دادن یک رویداد (Event) اجرا خواهد شد. برخی از رایج‌ترین رویدادها شامل موارد زیر هستند:

  • دریافت درخواست HTTP از سمت کاربر یا یک سرویس دیگر
  • تغییر یا ثبت داده در دیتابیس
  • دریافت پیام از صف پیام (Message Queue)
  • آپلود یک فایل در فضای ذخیره‌سازی

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

نقش FaaS در توسعه اپلیکیشن ها

FaaS به توسعه‌دهندگان اجازه می‌دهد بخش‌های مختلف یک اپلیکیشن را به توابع کوچک‌تر و مستقل تقسیم کنند. هر تابع می‌تواند جداگانه توسعه، اجرا و مقیاس‌دهی شود و تغییرات یک بخش، وابستگی مستقیمی به سایر بخش‌ها ایجاد نکند.

از طرف دیگر، ارائه‌دهنده سرویس FaaS مسئولیت مدیریت موارد زیر را بر عهده دارد:

  • مدیریت سرورها و زیرساخت پردازشی
  • تخصیص منابع مورد نیاز هر تابع
  • مقیاس‌دهی خودکار بر اساس میزان درخواست‌ها
  • آماده‌سازی محیط اجرای کد

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

FaaS چگونه کار می کند؟

FaaS بر پایه اجرای رویدادمحور (Event-Driven Execution) کار می‌کند. در این مدل، هر تابع به یک Trigger متصل است و تنها زمانی اجرا می‌شود که رویداد مشخصی رخ دهد. این رویداد می‌تواند مواردی مانند دریافت یک درخواست HTTP، ورود پیام از Queue، آپلود فایل، تغییر داده در دیتابیس یا ارسال رویداد از یک سرویس دیگر باشد.

فرایند اجرای تابع در FaaS

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

پس از پایان پردازش نیز نمونه‌هایی که دیگر مورد نیاز نیستند متوقف می‌شوند و منابع مصرفی کاهش پیدا می‌کند. این فرایند باعث می‌شود ظرفیت پردازشی متناسب با میزان استفاده تغییر کند و منابع فقط در زمان نیاز مصرف شوند.

نمونه ای از اجرای FaaS در یک اپلیکیشن

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

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

این استقلال باعث می‌شود بخش‌های مختلف یک اپلیکیشن بتوانند بر اساس تعداد رویدادهای مربوط به خود اجرا و مقیاس‌دهی شوند. به همین دلیل، FaaS برای معماری‌های مبتنی بر رویداد و سرویس‌های مستقل مانند میکروسرویس‌ها (Microservices) کاربرد زیادی دارد.

میکروسرویس ها و FaaS چگونه با هم کار می کنند؟

FaaS و معماری میکروسرویس می‌توانند در کنار یکدیگر استفاده شوند. در معماری میکروسرویس، برنامه به سرویس‌های مستقل با مسئولیت مشخص تقسیم می‌شود و بخشی از منطق هر سرویس نیز می‌تواند در قالب توابع FaaS اجرا شود؛ به‌ویژه زمانی که آن منطق به یک رویداد مشخص وابسته باشد.

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

رایانش FaaS چه تاثیری بر مقیاس پذیری دارد؟

یکی از مهم‌ترین ویژگی‌های FaaS، مقیاس‌پذیری در سطح تابع است. در این مدل، توسعه‌دهنده نیازی ندارد برای افزایش یا کاهش بار، ظرفیت سرورها را به صورت دستی تنظیم کند. پلتفرم FaaS بر اساس تعداد درخواست‌ها یا رویدادهای ورودی، تعداد نمونه‌های در حال اجرای تابع را تغییر می‌دهد و منابع را متناسب با بار کاری در اختیار آن قرار می‌دهد.

مقیاس پذیری در FaaS

1. مقیاس پذیری خودکار

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

این ویژگی در بارهای کاری متغیر یا سرویس‌هایی که با جهش ناگهانی درخواست روبه‌رو می‌شوند اهمیت بیشتری دارد. البته عملکرد واقعی مقیاس‌پذیری به محدودیت‌های پلتفرم، ظرفیت سرویس‌های وابسته و تنظیمات مربوط به هم‌زمانی اجراها نیز بستگی دارد.

2. مقیاس پذیری در سطح هر تابع

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

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

3. تخصیص منابع بر اساس میزان استفاده

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

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

4. اجرای موازی بارهای کاری

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

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

5. اتصال به سرویس های دیگر بدون افزایش پیچیدگی زیرساخت

توابع FaaS می‌توانند با منابع مختلف رویداد، APIها، صف‌های پیام، سرویس‌های ذخیره‌سازی و دیتابیس‌ها در ارتباط باشند. این قابلیت کمک می‌کند بخش‌های مختلف یک سیستم مستقل از یکدیگر توسعه و مقیاس داده شوند.

در معماری‌های Hybrid Cloud یا Multi-Cloud نیز می‌توان از توابع برای اتصال سرویس‌ها و اجرای پردازش‌های رویدادمحور میان بخش‌های مختلف زیرساخت استفاده کرد. با این حال، مقیاس‌پذیری نهایی فقط به FaaS وابسته نیست و سرویس‌های متصل به تابع، مانند دیتابیس ابری یا APIهای خارجی، نیز باید توان پاسخ‌گویی به افزایش بار را داشته باشند.

تفاوت بین IaaS , PaaS و FaaS چیست؟

IaaS , PaaS و FaaS سه مدل رایانش ابری با سطح متفاوتی از کنترل و مدیریت زیرساخت هستند. هرچه از IaaS به سمت FaaS حرکت می‌کنیم، بخش بیشتری از مدیریت محیط اجرا بر عهده ارائه‌دهنده سرویس ابری قرار می‌گیرد و توسعه‌دهنده بیشتر روی کد و منطق برنامه تمرکز می‌کند.

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

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

مرز میان این مدل‌ها همیشه کاملا جدا نیست. یک پلتفرم ابری می‌تواند سرویس‌های IaaS و PaaS را در کنار قابلیت‌های FaaS ارائه دهد و یک اپلیکیشن نیز می‌تواند هم‌زمان از چند مدل استفاده کند. تفاوت اصلی در این است که توسعه‌دهنده در هر مدل چه میزان از زیرساخت و محیط اجرا را خودش مدیریت می‌کند.

برای بررسی انواع Cloud Services و کاربرد آن‌ها، مقاله زیر را مطالعه کنید.
سرویس ابری چیست؟

موارد استفاده FaaS چیست؟

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

1. اپلیکیشن های وب و موبایل

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

از جمله کاربردهای رایج می‌توان به این موارد اشاره کرد:

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

این ساختار اجازه می‌دهد هر بخش از بک‌اند مستقل از سایر بخش‌ها اجرا و مقیاس‌دهی شود.

2. چت بات ها و دستیاران مجازی

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

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

3. پردازش بلادرنگ داده ها

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

به این ترتیب، داده‌ها به محض ورود پردازش می‌شوند و در صورت افزایش تعداد رویدادها، چند نمونه از تابع می‌توانند به صورت هم‌زمان اجرا شوند. این ویژگی FaaS را برای پردازش‌های رویدادمحور و بارهای کاری متغیر مناسب می‌کند.

4. اپلیکیشن های اینترنت اشیا

دستگاه‌های اینترنت اشیا می‌توانند در بازه‌های مختلف حجم زیادی از رویداد و داده تولید کنند. در معماری FaaS، دریافت داده از یک دستگاه می‌تواند اجرای تابع مشخصی را آغاز کند؛ برای مثال، تابعی که داده سنسور را پردازش می‌کند، مقدار غیرعادی را تشخیص می‌دهد یا نتیجه را برای ذخیره‌سازی به سرویس دیگری می‌فرستد.

از آنجا که هر رویداد می‌تواند مستقل پردازش شود، چند نمونه از یک تابع نیز می‌توانند هم‌زمان اجرا شوند. این ویژگی FaaS را برای پردازش بارهای متغیر در سیستم‌های IoT مناسب می‌کند.

موارد استفاده FaaS چیست؟

5. اتوماسیون مبتنی بر رویداد

یکی از کاربردهای اصلی FaaS، اجرای خودکار یک عملیات پس از وقوع رویدادی مشخص است. برای مثال، با آپلود یک تصویر در ذخیره سازی ابری، تابعی می‌تواند فعال شود و تصویر را تغییر اندازه دهد، فشرده کند و نسخه جدید را ذخیره کند.

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

6. نمونه سازی و آزمایش قابلیت ها

FaaS می‌تواند برای پیاده‌سازی و آزمایش سریع قابلیت‌های مستقل نیز استفاده شود. توسعه‌دهنده می‌تواند منطق مورد نظر را در قالب یک تابع پیاده‌سازی و مستقر کند و بدون آماده‌سازی یک بک‌اند کامل، رفتار آن را در محیط واقعی بررسی کند.

این روش برای ساخت Proof of Concept، آزمایش یک API یا ارزیابی منطق پردازشی پیش از اضافه شدن آن به بخش اصلی اپلیکیشن کاربرد دارد.

7. اجرای وظایف زمان بندی شده

توابع FaaS لزوما فقط با درخواست کاربر فعال نمی‌شوند و می‌توان اجرای آن‌ها را با یک زمان‌بند نیز آغاز کرد. برای مثال، یک تابع می‌تواند در ساعت مشخصی اجرا شود، داده‌های مورد نیاز را جمع‌آوری کند و نسخه پشتیبان را در فضای ذخیره‌سازی ابری قرار دهد.

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

مزایای FaaS

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

1. هزینه بر اساس میزان استفاده

بسیاری از پلتفرم‌های FaaS از مدل پرداخت به میزان مصرف (Pay-as-You-Go) استفاده می‌کنند. هزینه در این مدل معمولا بر اساس تعداد اجراها، مدت زمان اجرای تابع و منابع مصرف‌شده محاسبه می‌شود.

در سرویس های Serverless مانند AWS Lambda نیز هزینه پردازش بر اساس تعداد درخواست‌ها و مدت زمان اجرای کد محاسبه می‌شود.

این ساختار برای بارهای کاری مقطعی یا نامنظم می‌تواند به‌صرفه باشد، چون نیازی نیست ظرفیت محاسباتی به صورت دائمی فعال بماند. البته برای سرویس‌هایی با بار ثابت و مداوم، FaaS همیشه ارزان‌ترین گزینه نیست و باید هزینه آن با مدل‌های دیگر مقایسه شود.

2. مقیاس پذیری خودکار

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

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

3. تمرکز بیشتر روی توسعه

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

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

4. کاهش بار عملیاتی زیرساخت

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

این مزیت به معنی حذف کامل نیاز به DevOps یا نیروی زیرساخت نیست؛ چون طراحی معماری، مانیتورینگ، امنیت، مدیریت وابستگی‌ها و کنترل هزینه همچنان به تصمیم‌های فنی نیاز دارند.

5. اتصال ساده تر به سرویس های دیگر

توابع FaaS می‌توانند در پاسخ به رویدادهایی مانند درخواست HTTP، پیام یک Queue، تغییر داده یا رخدادهای سرویس‌های ابری اجرا شوند. این مدل اتصال سرویس‌های مختلف را بدون ایجاد یک سرویس دائمی برای مدیریت هر جریان کاری ساده‌تر می‌کند.

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

مزایا و معایب FaaS

معایب FaaS

با وجود مزایایی مانند مقیاس‌پذیری خودکار و کاهش مدیریت زیرساخت، FaaS برای همه نوع بار کاری انتخاب مناسبی نیست. محدودیت‌های پلتفرم، مدل هزینه و نحوه اجرای توابع می‌توانند در بعضی پروژه‌ها به چالش تبدیل شوند.

1. وابستگی به ارائه دهنده سرویس

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

این وابستگی که با عنوان Vendor Lock-in شناخته می‌شود، به‌ویژه در پروژه‌هایی اهمیت دارد که احتمال مهاجرت میان ارائه‌دهندگان ابری یا استفاده از معماری Multi-Cloud در آن‌ها وجود دارد.

2. تاخیر در شروع اجرای تابع

اگر یک تابع برای مدتی اجرا نشده باشد، پلتفرم ممکن است هنگام دریافت درخواست ابتدا محیط اجرای آن را آماده کند. این فرایند که Cold Start نام دارد، می‌تواند به اجرای نخست تابع تاخیر اضافه کند.

میزان این تاخیر به پلتفرم، Runtime، اندازه تابع و نحوه پیکربندی آن بستگی دارد. به همین دلیل، FaaS برای سرویس‌هایی که به زمان پاسخ بسیار پایدار و کم نیاز دارند، همیشه گزینه ایده‌آلی نیست.

3. هزینه بالاتر در بارهای کاری مداوم

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

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

4. پیچیدگی بیشتر در تست و عیب یابی

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

برای عیب‌یابی این سیستم‌ها، لاگ‌گیری متمرکز، مانیتورینگ و Distributed Tracing اهمیت بیشتری پیدا می‌کند؛ زیرا یک درخواست ممکن است در مسیر اجرای خود از چند تابع و سرویس مختلف عبور کند.

چگونه از قابلیت های مشابه FaaS در لیارا استفاده کنیم؟

چگونه از قابلیت های مشابه FaaS در لیارا استفاده کنیم؟

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

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

  • استقرار APIها و بک‌اند اپلیکیشن‌ها
  • اجرای سرویس‌های مستقل
  • پیاده‌سازی معماری میکروسرویس
  • جداسازی بخش‌های مختلف یک پروژه در چند اپلیکیشن
  • کاهش نیاز به مدیریت مستقیم سرور و زیرساخت
  • ساده‌تر شدن فرایند استقرار و مدیریت اپلیکیشن

برای مثال، اگر پروژه شما از چند سرویس مستقل مانند API، پردازش فایل یا سرویس ارسال اعلان تشکیل شده باشد، می‌توانید هر سرویس را به صورت یک اپلیکیشن جداگانه در لیارا مستقر و مدیریت کنید.

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

جمع بندی

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

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

انتخاب FaaS یا مدل‌های دیگر مانند PaaS و IaaS به نوع پروژه، میزان کنترل موردنیاز و معماری سیستم بستگی دارد. مهم‌ترین نکته این است که مدل اجرای زیرساخت باید با نیازهای فنی و مسیر رشد سرویس هماهنگ باشد.

سوالات متداول

تفاوت FaaS و PaaS چیست؟

تفاوت اصلی FaaS و PaaS در واحدی است که توسعه‌دهنده مستقر می‌کند. در FaaS، کد به صورت توابع مستقل اجرا می‌شود که با یک رویداد یا Trigger فعال می‌شوند و مدیریت زیرساخت و مقیاس‌دهی بر عهده پلتفرم است.

در PaaS، توسعه‌دهنده یک اپلیکیشن یا سرویس کامل را مستقر می‌کند و پلتفرم محیط اجرا و بخش زیادی از زیرساخت آن را مدیریت می‌کند. بنابراین، FaaS برای اجرای وظایف مستقل و رویدادمحور مناسب‌تر است، در حالی که PaaS برای استقرار و اجرای مداوم اپلیکیشن‌ها و سرویس‌ها کاربرد دارد.

آیا FaaS و Serverless یکسان هستند؟

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

Serverless مفهوم گسترده‌تری دارد و می‌تواند علاوه بر FaaS، سرویس‌های مدیریت‌شده دیگری مانند دیتابیس، فضای ذخیره‌سازی و سرویس‌های پردازش رویداد را نیز شامل شود. وجه مشترک این سرویس‌ها این است که توسعه‌دهنده درگیر مدیریت مستقیم سرورها نمی‌شود و بیشتر روی منطق برنامه و توسعه محصول تمرکز می‌کند.

به اشتراک بگذارید

Blog Campaign banner