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 برای انجام یک کار مشخص طراحی می‌شود و می‌تواند با وقوع یک رویداد (Event) اجرا شود. ارسال یک درخواست HTTP، تغییر داده در دیتابیس، دریافت پیام از صف پیام (Message Queue) یا آپلود یک فایل نمونه‌هایی از این رویدادها هستند. تابع پس از فعال شدن، کد مورد نظر را اجرا می‌کند و منابع مورد نیاز آن نیز بر اساس حجم درخواست‌ها تخصیص پیدا می‌کنند.

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

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

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

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

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

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

میکروسرویس ها و 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 این انتزاع را تا سطح اجرای تابع پیش می‌برد. توسعه‌دهنده به جای استقرار یک اپلیکیشن کامل، توابعی را تعریف می‌کند که در پاسخ به درخواست یا رویداد مشخص اجرا می‌شوند. مدیریت زیرساخت اجرای تابع و مقیاس‌دهی آن نیز بر عهده پلتفرم FaaS است.

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

موارد استفاده 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 کاهش درگیری با مدیریت زیرساخت و تمرکز بیشتر روی توسعه است، PaaS می‌تواند بخشی از همین نیاز را پوشش دهد. البته PaaS و FaaS یک مدل نیستند؛ در FaaS کد در قالب توابع مستقل و اغلب در پاسخ به یک رویداد اجرا می‌شود، اما PaaS محیطی برای استقرار و اجرای کامل اپلیکیشن فراهم می‌کند.

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

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

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

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

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

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

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

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

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

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

Blog Campaign banner