در این معماری، معیار اندازهگیری مدت زمانی است که فانکشن مورد نظر در حال استفاده از منابع سرور است. در واقع، در این معماری بحث بر سر این موضوع نیست که چه مقدار RAM یا CPU برای اجرای تابع مورد نظر شما نیاز است، بلکه فقط مدت زمانی که طول میکشد تا تابع شما اجرا شود بررسی میشود. به عبارتی، دولوپر تابع مورد نظر خود را نوشته، آن را بر بستر کلود دیپلوی میکند و فقط به اندازهٔ زمانی که طول میکشد تا تابع اجرا شود، هزینه پرداخت خواهد کرد.
در این معماری برای شما مشخص نمیکنند که تابع مد نظر به طور فنی باید چگونه باشد، بلکه از نظر شرکتهای ارائهدهندهٔ این سرویس تابع مد نظر دولوپر تَسک خاصی است که باید انجام شود.
توابع میتوانند به روشهای مختلفی اجرا شوند؛ ممکن است یک کرانجاب به صورت دورهای تابع ما را اجرا کند یا اینکه سرویسی باشد به ریکوئستهای HTTP پاسخ دهد. به طور کلی، فرقی نمیکند که تابع شما چه کار میکند، بلکه تنها چیزی که در این معماری مهم میباشد این است که چقدر طول میکشد تابع شما اجرا شود.
آشنایی با مفهوم FaaS
معماری Serverless یک مفهوم کلی است که در قالب سرویسی تحت عنوان Function as as Service یا به اختصار FaaS عرضه شده به این مسئله اشاره دارد که بدون نیاز به مدیریت سرور، توابع اجرا میشوند مضاف بر اینکه FaaS دولوپر را محدود به استفاده از یک لایبرری یا فریمورک خاصی نمیکند.
همچنین نحوهٔ دیپلوی تابع مورد نظر کاملاً با شیوههای سنتی که قبلاً وجود داشتهاند فرق میکند. کد مورد نظر بر روی سرور آپلود میشود و بقیه کارها توسط ارائهدهندهٔ FaaS انجام خواهد شد و توابع FaaS بر اساس رویدادهایی که توسط ارائهدهنده مشخص شدهاند، اجرا میشوند (البته به خاطر داشته باشیم توابعی که زمان زیادی را برای اجرا میطلبند به صرفه نیستند تا بر روی این معماری اجرا شوند.)
شرکتهای ارائهدهندهٔ FaaS
به طور کلی، شرکتهای مطرح ارائهدهندهٔ سرویس FaaS عبارتند از:
- Azure Functions
- AWS Lambda
- Google Cloud Functions
- IBM OpenWhisk
سرویسهای بسیار دیگری نیز وجود دارند همچون Webtask اما تفاوتی که این سرویسها با یکدیگر دارند، امکانات فنی است که هر یک دارند و همچنین نحوهٔ چگونگی استفاده است.
نتیجهگیری
تفاوت دو اصطلاح Serverless و FaaS از اینجا ناشی میشود که Serverless یک مدل رایانش ابری و اساساً مفهومی کلی است که در قالب FaaS نمود عینی پیدا کرده است. در حقیقت، این نوع معماری کلود ما را قادر میسازد تا کدی را برای انجام تَسکی خاص بنویسیم و همزمان بدون اینکه نگران چگونه سرور را مدیریت کنیم، به سرعت آن را اجرا کنیم.
البته این نکته به هیچ وجه به این معنی نیست که این معماری تنها برای کارهای کوچک مورد استفاده قرار میگیرد بلکه با وجود اینکه تابع یک واحد کوچک از نرمافزار است، همین واحد کوچک میتواند میلیونها بار در ثانیه فراخوانی شود. به عنوان مثال، باید اینگونه فکر کنیم که کدام یک از فیچرهای اپلیکیشن خود را میتوانیم از سایر لایهها جدا کرده و از آنها در قالب یک تابع مجزا و با استفاده از معماری Serverless عملی کنیم.