عملکرد به عنوان سرویس یا Function-as-a-Service (FaaS) یک روش بدون سرور یا Serverless برای اجرای تکه های کوچک تر کدها بر روی لبه (edge) می باشد. FaaS به توسعه دهندگان کمک می کند تا در لحظه کدهای خود را نوشته و آپدیت کنند، که در ادامه می توانند به یک رویداد پاسخ دهند؛ مثل کلیک کردن یک کاربر بر روی یک المان در سایت. این تکنولوژی مقیاس پذیری و اصلاح لحظه ای کدها را سرعت بخشیده و یک روش مقرون به صرفه برای پیاده سازی خدمات میکرو یا Microservices است.
سرویس FaaS راه اندازی اپلیکیشن ها بر روی ابر را ساده تر می کند؛ در رایانش بدون سرور، یک منطق تجاری را تحت عنوان function روی پلتفرم ابری نصب یا پیاده سازی می کنید.
منظور از خدمات میکرو یا microservices چیست؟
اگر یک وب اپلیکیشن نوعی هنر بصری بود، استفاده از معماری میکرو سرویس یا ریز خدمات، همانند ساخت یک اثر هنری با کاشی های موزائیک می بود. یعنی هنرمند در این روش می تواند در لحظه یک کاشی را اضافه، جایگزین و یا تعمیر کند. اما در طرف مقابل معماری یک جا یا Monolithic همانند یک نقاشی کامل بر روی یک بوم است.
این رویکرد که یک اپلیکیشن را به کمک بخش های ریز تر و عناصر خرد تر توسعه دهیم، به عنوان معماری میکرو سرویس شناخته می شود.
تقسیم کردن یک اپلیکیشن به میکرو سرویس ها به طور خاص تر برای توسعه دهندگان بسیار کاربردی و جذاب است؛ چراکه آنها می توانند تکه کدهای خود را به راحتی تغییر داده یا اصلاح کنند و روی پلتفرم ( codebase ) خود پیاده کنند.
این رویکرد دقیقا نقطه مقابل روش monolithic است که در آن توسعه دهنده می بایست تمام کدها را یک جا وارد سیستم کند. در چنین معماری از مد افتاده ای، برای اعمال کوچک ترین اصلاح می بایست یک فرآیند سنگین و زمان بر را طی کرد. خوشبختانه FaaS این پیچیدگی های پیاده سازی و جایگزینی را از بین می برد.
با استفاده از کدهای بدون سرور ( Serverless ) مثل FaaS ، توسعه دهندگان وب می توانند بر روی نوشتن کدهای اپلیکیشن خود تمرکز کرده در حالی که در همان لحظه ارائه دهنده Serverless امور مربوط به سرویس های بک اند و اختصاص سرور را بر عهده می گیرد.
عملکرد به عنوان سرویس که یک تکنولوژی نسبتاً تازه معرفی شده است، و گاهاً با عنوان رایانش بدون سرور نیز شناخته می شود، یک گزینه مناسب برای راه اندازی یک اپلیکیشن بر روی ابر یا کلود است.
این تکنولوژی از حدود یک دهه پیش جذابیت بالایی کسب کرده، مورد بحث قرار گرفته و از 6 سال پیش تا کنون توسط ارائه دهندگان خدمات ابری مدرن مورد استفاده قرار گرفته است. برای مثال آمازون از نسخه AWS Lambdas خود در اواخر سال 2014 و مایکروسافت از کارکردهای Azure خود در اوایل سال 2016 رونمایی کردند.
اما دقیقا رایانش serverless چیست؟
چه زمانی باید از چنین تکنولوژی خاصی استفاده کرد؟
هنگام مهاجرت به چنین زیرساختی، به چه مواردی باید توجه کرد؟
بگذارید کمی بیشتر در این خصوص بحث کنیم...
FaaS چیست؟
همانطور که در بالا اشاره شد، FaaS راه اندازی اپلیکیشن ها بر روی ابر را ساده تر می کند؛ در رایانش بدون سرور، یک منطق تجاری را تحت عنوان function روی پلتفرم ابری نصب یا پیاده سازی می کنید.
سپس پلتفرم ابری این فانکشن را بنا به درخواست شما اجرا می کند، پس دیگر نیازی به نگهداری و آماده سازی سرور برای اجرای کدهای بک اند خود نخواهید داشت.
اما این فقط یک بخش از داستان است...
پلتفرم ابری باید فانکشن را آماده کرده و منابع اختصاصی لازم را مدیریت کند؛ اگر لازم باشد که سیستم 100 درخواست همزمان را اداره کند، از سرویس شما برای پاسخ دهی به این درخواست ها، 100 نسخه کپی می کند.
اگر تقاضا به تنها 2 درخواست کاهش یابد، پلتفرم کپی های بلا استفاده را حذف می کند.
جذابیت این سرویس این است که شما به اندازه منابعی که فانکشن تان مصرف کرده، هزینه پرداخت خواهید کرد ( تنها زمانی که فاکنشن شما به آنها نیاز داشته باشد ).
رایانش serverless بر خلاف نامش، دارای سرور است، اما دیگر سرور مشکل و دغدغه شما نیست!
در اینجا ارائه دهنده خدمات ابری آنها را برای شما مدیریت خواهد کرد.
پس سرویس های SaaS, PaaS و IaaS در کجا قرار می گیرند؟
واژه های اختصاری بسیاری مانند XaaS تا بحال ارائه و مطرح شده اند، که هر کدام لایه ای از خدمات رایانش ابری را شامل می شوند. در مقاله صفر تا صد رایانش ابری به جزئیات این مطلب پرداخته ایم.
اما بجای راه اندازی کامل یک اپلیکیشن بر روی یک یا چند سرور، به کمک FaaS شما بخشی از وب اپ و فانکشن خود را راه اندازی خواهید کرد.
در اصل فانکشن ها در زمان نیاز لود می شوند، و همانند سرویس های on-demand دیگر، می توانند به صورت موازی اجرا شوند.
بگذارید به مزایای استفاده از این معماری بیشتر اشاره کنیم...
چرا FaaS؟ مزایای فانکشن به عنوان سرویس
اگر دقت کرده باشید تا به حال به سه مزیت مهم FaaS اشاره کردیم:
- مدیریت سرورها دیگر دغدغه شما نخواهد بود.
- پلتفرم ابری برای شما مسائل مقیاس پذیری افقی را مدیریت می کند.
- تنها به ازای مصرف تان هزینه خواهید کرد.
با برون سپاری مسائل مدیریت سرور به طور ضمنی، FaaS مشکلات و چالش های همراه با سرور ها را از اپلیکیشن شما دور می کند. شما می توانید تقریبا با هر زبانی فانکشن خود را بنویسید؛ بعلاوه می توانید به سایر منابع ابری مثل دیتابیس ها و کشها نیز دسترسی پیدا کنید.
اگر با Interface یا رابط های کاربری این پلتفرم ها خود را سازگار کنید، سرویس شما بهترین نتیجه را برایتان به ارمغان خواهد آورد. مسلما این راحتی و آزادی رایگان بدست نمی آید. اما حداقل FaaS هزینه ها و محدودیت ها را بر اساس فانکشن ها تعریف می کند؛ البته همیشه بهترین راهکار نیست و بستگی به کسب و کار شما نیز دارد.
عبارت Function as a service تنها یک عبارت تصادفی نیست! قطعا سرویس شما باید مثل یک تابع ریاضی کار کند.
اگر دید فنی کافی نسبت به این موضوع ندارید، بهتر است با این نمونه موضوع را بهتر درک کنید: اطلاعاتی که سرویس شما از درخواست های مکرر در اپلیکیشن هایتان دریافت می کند، به سادگی در اختیار شما قرار نمی گیرد؛ بلکه باید در جایی مثل یک دیتابیس یا فایل برون ریزی شود.
در این بین در صورتی که تعداد درخواست ها زیاد شده و توانایی منابع برای پاسخ دهی یا ذخیره آن اطلاعات کافی نباشد، سرویسی مثل FaaS مسائل مربوط به مقیاس پذیری را بدون نیاز به دانش فنی شما، برایتان انجام خواهد داد.
اگر فانکشن های تعریف شده ی شما شامل State نبوده و یا تنها بر منابع خارجی برای آن تکیه می کنند، FaaS می تواند بهترین گزینه برای شما باشد. مثل اپلیکیشن های RESTful.
سرویس های رویداد-محور ( event-driven ) که به مقیاس پذیری های افقی نیاز دارند، می توانند از اجرای FaaS لذت ببرند. پلتفرم های FaaS از ایونت ها برای ساخت نمونه هایی از فانکشن ها و اعمال عکس العمل بر مبنای حجم درخواست ها استفاده می کنند.
بگذراید به مثال هایی از FaaS اشاره کنیم...
ممکن است تا بحال متوجه نشده باشید اما از یک معماری Serverless استفاده کنید.
آیا تا بحال از Alexa استفاده کرده اید؟
تمام مهارت های Alexa به روش AWS Lambdas پیاده سازی می شوند. اگر کمی به آن دقت کنید، این skillهای الکسا باید به سرعت بارگذاری شوند، و البته به هیچ state خاصی نیاز ندارند.
در این شرایط آمازون باید آنها را بنا به درخواست ( on demand ) مقیاس یا تغییر دهد. ویژگی هایی مثل اخبار و آب و هوا، به دفعات زیادی مورد استفاده قرار می گیرند. اما سایر ویژگی چندان به کار نمی آیند. پس باید بنا به فانکشن، بابت درخواست ها هزینه کرد.
آیا FaaS برای کسب و کار شما هم مناسب است؟
رایانش serverless ویژگی ها و قابلیت های زیادی برای ارائه دارد. این تکنولوژی راهی آسان برای مهاجرت یا ساخت خدمات جدید بر روی ابر را فراهم می کند.
بدون نیاز به مدیریت سرورها و با افزایش اثربخشی در پرداخت به ازای نیازتان، می توانید بر روی کسب و کار و اپلیکیشن خود بیشتر تمرکز کنید.
تفاوت FaaS و PaaS
با اینکه آنچه این دو سرویس ارائه می دهند ممکن است به ظاهر مشابه باشد، زمانی که قصد انتخاب بین این دو را دارید باید به تفاوت هایی توجه کنید:
- پیکربندی: بخاطر کاربرد ساده و راهکارهای کاملا مدیریت شده، FaaS به زمان آماده سازی بسیار کمتری نیاز دارد. با اینکه PaaS نسبت به سایر مدل های رایانش ابری راحتی بیشتری به کاربر می دهد، با این حال، به یک سری پیکربندی نیاز دارد. البته این موضوع بسته به نیاز شما می تواند یک مزیت یا یک عیب بحساب آید.
- عملیات: تکنولوژی های FaaS اپلیکیشن را برای هر درخواست مقیاس می دهند، یعنی منابع را با توجه به فانکشن ها درگیر می کنند؛ در حالی در PaaS کل اپلیکیشن با هر درخواست درگیر می شود. این ویژگی می تواند قیمت گذاری، تأخیرات و مدیریت درخواست های پیچیده تر را تحت شعاع قرار دهد.
- مقیاس پذیری: سرویس PaaS نیز در صورت نیاز ارتقا و تنزل می یابد، اما به تفکر و پیکربندی توسعه دهنده نیاز دارد. در مقابل FaaS به هیچ ظرفیت برنامه ریزی نیاز نداشته و در صورت نیاز به راحتی آماده انعطاف پذیری است.
- قیمت: قیمت PaaS بنا به ارائه دهنده می تواند مدل های قیمت گذاری مختلفی داشته باشد، اما اگر حجم کاری شما کم باشد، معمولاً نسبت به FaaS برایتان گران تر تمام خواهد شد. اما FaaS به توسعه دهنده این امکان را می دهد تا به ازای مصرف فانکشن خود هزینه پرداخت کند. پس اگر تعداد رویدادها یا ایونت ها کم باشند، می تواند در زمان نیز صرفه جویی کند
نحوه عملکردFaaS
اکثر اپلیکیشن های کنونی با استفاده از معماری یک جا یا Monolithic نوشته شده اند. این یعنی اپلیکیشن به شکل یک مجری مفرد ساختار بندی شده که باید تماماً یک جا فراخوانی شود.
در طی گذر زمان، برخی از توسعه دهندگان حرفه ای تر، روی به استفاده از معماری میکرو سرویس ها آورده اند. میکرو سرویس ها مجموعه ای ماژول هایی هستند که به صورت مستقل قابل اجرا می باشند. پس با توجه به اینکه می توان بر روی آنها به صورت مجزا کار کرد، تست کردن و نگهداری آنها آسان تر است.
یک function اساساً میکرو سرویسی است که تنها می تواند در پاسخ به یک ایونت، یک عمل را اجرا کند. به کمک FaaS، توسعه دهنده می تواند در زمان فراخوانی فانکشن، سرور را روشن و پس از اجرا آن را خاموش کند.
قابلیت های serverless تنها در زمان استفاده از فانکشن شما فعال خواهند شد. که این امکان را فراهم کرده تا منابع سرور در زمانی که فانکشنی اجرا نمی شود، در جایی دیگر و برای کاربرانی دیگر مصرف شوند.
توسعه دهندگانی که از FaaS استفاده می کنند، به یک پلتفرم دسترسی پیدا کرده که به آنها اجازه می دهد تا کدهای اپلیکیشن خود را روی آن اجرا کنند.
سادگی یکی از مزایای اصلی FaaS است؛ برای استفاده بهینه از این سرویس، توسعه دهنده باید مطمئن شود که هر فانکشن تنها یک عمل را اجرا می کند. پس میدان هر فانکشن باید محدود و موثر باشد.
استفاده از کتابخانه ها یا Library های زیاد، یا خواستن از یک فانکشن برای صدا زدن فانکشنی دیگر، بلافصله سرعت اپلیکیشن را کاهش داده و هزینه را افزایش می دهد.
برای استفاده از خدمات رایانش ابری از جمله پلتفرم به عنوان سرویس IaaS و فضای ابری، به صفحات سرور ابری در میزبان کلود مراجعه کرده و با ویژگی های منحصر به فرد این سرویس ها آشنا شوید. در صورت نیاز به دریافت مشاوره و یا پشتیبانی از خدمات با کارشناسان ما در تماس باشید.
جمع بندی
توسعه دهندگان برای استفاده از خدمات رایانش ابری مدرن تر و صرف هزینه کمتر باید به معماری های جدیدتری مثل FaaS روی آورند؛ برای استفاده از چنین قابلیت هایی و بهره مندی از پلتفرم های FaaS برای راه اندازی وب اپلیکیشن ها، توسعه دهندگان باید با ارائه دهندگان خدمات Serverless ارتباط گیرند.
از آنجا که پیاده سازی FaaS برای این ارائه دهندگان به اجرای کدهایی در سرورهای لبه نیازمند است، دسترسی پذیری و توزیع جغرافیایی سرورهای لبه از نکات مهم در اجرا و اعمال هزینه ها هستند. در این مطلب در خصوص عملکرد به عنوان سرویس اطلاعات جالبی در اختیار شما قرار گرفت؛ امیدواریم این مطلب برای شما مفید واقع شده باشد.
ارائه دهنده خدمات زیرساخت یکپارچه ابری