فس یا function as a service (faas) چیست ؟

برنامه نویسی امروز انقدر پیشرفت کرده که گفتن اینکه فقط برنامه نویس هستم کافی نیست و باید برای افرادی که توی صنعت هستند مشخص کنید که چه نوع برنامه نویسی انجام میدید ؟مثلا برنامه نویس بازی هستین یا وب ؟ کلاینت ساید هستین یا سرور ساید ؟ و ...اما همه برنامه نویسا با یک چیز اشنا هستند و اون کار کردن با کامپیوتر هست. بعضی وقت ها این کامپیوتر یک موبایل هست یا یک دستگاه iot .اوایل دنیای وب وقتی شرکت ها میخواستن یک نرم افزار رو روی وب ارائه بدن باید خودشون سرور های بزرگ میخریدن و مدیریت میکردن تا بتونن نرم افزار رو ران بکننحدودای سال 2000 میلادی شرکت هایی شروع کردن به ارائه زیر ساخت به عنوان سرویس (IAAS-infrastructure as a service) و زحمت نگهداری این نوع زیر ساخت ها رو کم کردن و بیزنس همون نوع خدمات رو میگیره با خرج بسیار کمتر - شرکت netflix تمام خدمات زیر ساخت خودشو از امازن میگره - تویتر تمام زیرساخت خودشو به کلود گوگل منتقل کرد و این تازه شروع ماجراست ما الان توی ترند دیتا های پزشکی و بانکی هستیم این دو صنعت هنوز دیتای خودشون رو به کلود منتقل نکردن و احتمالا تا پنج سال اینده قرار داد های کلان توی این دو ترند نوشته میشنبعد از معرفی تکنولوژی کانتینر مدیریت نرم افزار روی ابر بسیار راحت تر شد و دیگه برنامه نویس میتونست محیط برنامه نویسی خودشو رو هرجور که دوست داره تنظیم بکنه و مطمئن باشه . از طرفی خیلی امکانات دیگه ای به برنامه نویس ها داد یکی از این امکانات توانایی مدیریت محیط کانتیرنر بود که ابزاری مثل کوبرنتیز رو برای این وظیفه ساختن .شرکت های کلود کلاستر اماده کوبرنتیز رو برای کاربرهاشون ارائه میدن و این نوع خدمت به عنوان (paas-platform as a service ) شناخته میشه.تا اینجا کاربر برای دیپلوی نرم افزارش باید به نحوی ابزاری رو مدیریت بکنه - برای مثال باید کوبرنتیز خودشو ران بکنه بعد داکر فایلشو درست بکنه و بریزه روی کوبرنتیز و اونجوری ترافیک یوزر ها رو به سمت نرم افزارش بفرسته. فانکشنقلب هر نرم افزار، فانکشن هایی هستند که کار میکنن و منطق اون نرم افزاری رو میسازن که کاربر میبینه.و فانکشن به عنوان سوریس رو همین موضوع تمرکز میکنه ، توی این نگرش برنامه نویس یک فانکشن مینویسه و روی پلتفرم faas خودش دیپلوی میکنه ، این فانکشن به صورت غیر فعال میمونه تا زمانی که فراخوانی بشه این موضوع این امکان رو میده که ارائه دهنده خدمات faas کاربر رو فقط برای 100 میلی ثانیه ای که اون فانکشن ران شد هزینه بگیره امکانات دیگه :-- توانایی نوشتن فانکشن ها با هر زبان برنامه نویسی-- مقاومت بسیار خوب در مقابل افزایش سریع تعداد تقاضا ها - burst-- معماری event-driven معروف ترین ارائه دهنده این خدمات firebase هست که توسط گوگل خریداری شد شرکت های دیگه هم نوع سرویس خودشون رو دارن مثلا امازون با سرویس lambda کار میکنه ، ibm روی پروژه ای به نام openwhisk کار کرده و اون رو روی کلود خودش ارائه میده ، استارت اپ های کوچیک دیگه ای هم هستن که دارن کار میکنن و هر کدوم به نحوی دارن نو اوری به خرج میدن تا نفر اول این مارکت بشن ، برای چهار سال faas بیشترن قسمت از هزینه های تیم تحقیق توسعه امازون بود ، یک نکته جالب هم اینه که بیشترین برنامه نویسایی که از firebase استفاده کردن اهل امریکای جنوبی هستند.در آخر باید بگم که این تکنولوژی خیلی جای پیشرفت داره و به نظر من نسل بعدی برنامه نویس ها قطعا برنامه نویسی رو ساده تر ترجیح میدن مثل همه ، و اینکه faas به تنهایی کافی نیست و یکی از اجر های خدمات ابری هست ، برای مثال ارائه نرم افزار هایی مثل دیتا بیس ها یا ارائه storage برای ذخیره سازی فایل ها و کلی نرم افزار دیگه که میتونن یک اکوسیستم غنی ایجاد بکنن برای دولپرا و به جای مدیریت کلود خودشون تمرکزشون رو بزارن برای نوشتن کد و حل مشکل کاربراشونیکم توضیح فنی برای کسایی که دوست دارن بدونن سیستم چطور کار میکنه:شاید در نگاه اول ساده بگیم که مگه همه این کار رو نمیکنیم ؟ روی یه داکر یا vm هر کدی که میخوایم رو پیاده میکنیم و نرم افزار رو به وسیله http صدا میزنیم - در جواب باید بگم که اراه تا اینجا هیچ فرقی نمیکنه اما موضوع وقتی جالب میشه که بدونید این فانکشن ها هیچ منبع ( cpu - ram ) رو درگیر نمیکنن و فقط وقتی که فراخوانی میشن از پروسسور استفاده میکنن و بعد از اینکه کارشون تموم شد برمیگردن توی حالت خاموش و این کار رو توی کمتر از چند میکرو ثانیه انجام میدن ، این توسط داکر کنترل میشه ، به این صورت که چند کانتینر به حالت prewarm نگه داشته میشه و هربار که فانکشنی صدا زده بشه اون کانتینر به حالت warm تبدیل میشه و کد رو ران میکنه و دوباره به حالت قبلی خودش بر میگرده، برنامه نویسای این پروژه اومدن از معماری event driven استفاده کردن و توی این معماری از صف ها برای صدا زدن موتور container استفاده میکنن ، با معماری جالبشون تونستن امکانات جالبی ارائه بدن، اول اینکه با استفاده از شبکه مطمئنی که ساختن میتونید مطمئن باشید که گم شدن دیتا ندارید - data loss - در کنارش میتونید از event log های موجود روی اکوسیستم استفاده بکنید بدون اینکه این زیرساخت ها رو خودتون بسازید یا مدیریت بکنید. https://youtu.be/5bOnGxgda1I این ویدیو رو ببینید به صورت کامل توضیح داده شده.