مرا اسکن کن!

serverless چیست

serverless چیست



محاسبات Serverless به زبان ساده به معنای یک متود به منظور فراهم آوردن سرویس های Backend تنها به همان میزانی که استفاده می شوند است. اگرچه که واقعا شاید این تعریف ساده و روشن نباشد ، اما پیش از هر چیز حداقل مشخص کننده این است که Serverless ( سرورلس ) یک روش یا متد است. ارائه دهندگان Serverless به کاربران خود اجازه می دهند تا بدون نگرانی از بابت زیر ساخت ، کد خود را اجرا نمایند.

Serverless Computing یا رایانش بدون سرور در واقع یک مدل پردازش ابری است که در آن سرورها در یک سرویس ابری قرار دارند و به صورت داینامیک مدیریت تخصیص منابع را بر عهده دارند.

در واقع منظور از Serverless این نیست که هیچ سروری وجود ندارد. بلکه منظور این است که برنامه نویسان هیچ نیازی ندارند درباره سرور ها ( یا حتی کانتینرها ) اطلاعاتی کسب کنند. بنابراین نیازی به محاسبه میزان مورد نیاز منابع برای اجرای یک تابع از بین می رود. چرا که با استفاده از متود سرورلس ، توابع به عنوان یک سرویس توسط Provider ها ارائه می شوند و مقدار استفاده از توابع به جای مقدار استفاده از منابع ( تعداد سرورها و پهنای باند ) ، ملاک محاسبه هزینه خواهد بود! ارائه توابع به عنوان یک سرویس ، اصطلاح جدیدی را به دنیای آی تی و برنامه نویسی آورد که از آن به عنوان FaaS یا Function as a Service یاد می کنند.

 

 

اجازه دهید با مروری بر تاریخچه وب ، علت به وجود آمدن محاسبات Serverless و اینکه چرا Cloud ، به تنهایی برای سازمان ها کافی و به صرفه نیست را بررسی نماییم.

در اولین روزهای پیدایش وب ، هرکسی که قصد داشت یک برنامه تحت وب ( Web Application ) را بسازد ، باید یک سرور فیزیکی نیز تهیه می کرد. این موضوع نیازمند صرف هزینه گزاف و پیچیدگی های بسیار بود. بعد از آن فناوری Cloud متولد شد. در تعریف سنتی Cloud ، شما برای تعداد مشخصی از سرور ها و منابع آن ها به صورت ثابت یک هزینه پرداخت می کنید. در واقع یک سرور Remote را اجاره می کنیم. اگر چه در این روش ما از شر پیچیدگی نگه داری تجهیزات فیزیکی آزاد شده ایم ، اما مشکل اینجاست که به طور معمول از تمام منابعی که در حال پرداخت هزینه آن هستیم استفاده نمی کنیم. حتی با بهترین برنامه ریزی ها نیز همیشه مجبور هستیم با در نظر گرفتن ریسک های احتمالی ، مقدار بیش تری از منابع مورد نیازمان را خریداری کنیم که کیفیت سرویس مان را تضمین نماییم.

در تعریف مدرن محاسبات ابری به لطف مدل های Auto Scaling این مشکل نیز تقریبا حل شده است و شما تنها به مقدار منابعی که هر لحظه در حال استفاده هستید هزینه پرداخت می کنید. اما این روش نیز تا حد زیادی ممکن است هزینه اضافه ای را به سازمان تحمیل نماید. فرض کنید که شما یک سرویس ابری Auto Scale خریداری کرده اید که در پایان هر ماه ، تنها به میزان منابعی که استفاده کرده اید از شما هزینه دریافت می شود. اما اگر برای مثال دچار حمله های DDoS شوید ، مجبور به پرداخت هزینه استفاده مهاجمان از سرویس تان خواهید شد !!!

بنابراین در  متود Serverless ، نیازی به پرداخت هزینه بابت منابع مورد استفاده نخواهید داشت. بلکه از این بعد بر مبنای توابع و Backend ای که در اختیار شما قرار خواهد گرفت ، هزینه پرداخت خواهید کرد و سایر نگرانی ها ، از جمله حمله های DDoS و … تنها متوجه Provider ها خواهد بود و آن ها تمهیدات لازم را خواهند  اندیشید.

 

فواید Serverless Computing

 

اولین مزیت استفاده از Serverless Computing کاهش هزینه می باشد. در واقع شما نیاز به خرید یک سرور با قیمت چندین میلیون تومان نخواهید داشت. البته هزینه های برق و اینترنت و… را باید به این لیست اضافه کرد!

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

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

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

معایب Serverless Computing

اولین عیب استفاده از Serverless Computing  کارایی آن می باشد. لزوما استفاده از Serverless Computing در همه موقعیت ها توصیه نمی شود. به عنوان مثال در برخی موارد لزوم استفاده از یک dedicated server سرور اختصاصی بسته به شرایط کاربر توصیه می شود.

محدودیت در ارائه منابع دومین عیب استفاده نکردن از این نوع سرویس می باشد. ماهیت اصلی Serverless Computing مدیریت بهینه منابع سرور می باشد، اما ممکن است شما نیاز ویژه به استفاده کردن از تمامی منابع در تمامی ساعات روز و بدون وقفه داشته باشید!

 

 

برنامه های Serverless اجازه می دهد تا توسعه دهندگان بر روی کد خود تمرکز کنند، نه در تنظیمات و مدیریت زیرساخت. این سرعت را توسعه و انتشار چرخه، و همچنین اجازه می دهد تا برای مقیاس بهتر و کارآمد تر.

 

 

محاسبات Serverless به طور دقیق با الگوها و تکنولوژی های معماری جدید مانند سرویس های مایکروسافت و ظروف ارتباط دارد. Greenfield، برنامه های بومی سرور ابری و سرور مجازی اغلب مبتنی بر سرویس های مبتنی بر مایکروسافت است، که آنها را برای در حال اجرا در ظروف (Docker) مناسب می سازد. تفکیک بیشتر و انتزاع - که توابع serverless بین نرم افزار و زیرساخت ها اجازه می دهد آنها را یک الگوی ایده آل برای توسعه سرویس های microservice جدید است که می تواند در محیط های مختلف اجرا شود.

 

همان طور که برنامه های serverless بیشتر مورد استفاده قرار می گیرند (با لمبدا که محبوب ترین سرویس ابری توسط AWS است)، ما به طور فزاینده ای شرکت هایی را می خواهیم که تجربه ای غیرمستقیم برای مهندسانشان در زیرساخت های محل را فعال کنند .

 

Mono ، Micro ، و Serverless: تکامل معماری کاربرد مدرن

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

 

Microservices یک تکامل طبیعی پارادایم معماری سرویس گرا (SOA) است. در این رویکرد، برنامه به توابع کسب و کار آزاد متصل می شود، که هر کدام به یک یا چند سرویس microservice متصل می شوند. هر میکرو سرویس برای یک تابع کسب وکار خاص طراحی شده و می تواند توسط یک توسعه دهنده یا تیم مستقل کار کند. کد جداگانه آن به آسانی نه تنها از ابزار یا ارتباطات (به طور معمول ارتباط با استفاده از یک API RESTful با داده هایی که در اطراف استفاده از نمایندگی JSON / XML منتقل می شود) بلکه همچنین از دیدگاه فرآیند ساخت، راه اندازی، ارتقاء و نگهداری . هر سرویس میکروسافت می تواند به طور دلخواه پایگاه داده محلی خود را داشته باشد. مزیت مهمی در اتخاذ این رویکرد این است که هر سرویس میکروسافت می تواند با استفاده از یک پشته فناوری جداگانه از سایر قسمت های برنامه ایجاد شود.

 

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

 

Serverless مرحله بعدی در این تکامل است .

Computing Serverless یک پارادایم جدید در توسعه نرم افزاری است که توسعه دهنده برنامه نویسی توابع کاربرد متمرکز شده است و از زمان نیاز به سرمایه گذاری در تنظیم و مدیریت منابع لازم برای راه اندازی و اجرای این برنامه ها آزاد شده است. 

 

در این پارادایم، ارائه دهنده سرور ابری و سرور مجازی یا زیرساخت نیاز به آنها از انواع مدل های داده پشتیبانی می کنند - NoSQL غالب است. دلیل این است که توابع در یک معماری serverless سبک هستند و نیاز به بسته بندی تمام وابستگی های آنها به یک پایگاه داده جنجالی، ساخت NoSQL بسیار مناسب است.انجام تمام لوله های مورد نیاز برای برنامه برای نمونه برداری، دارد . توسعه دهنده برکد برنامه تمرکز دارد و مسئول ارائه دهندگان مرکز داده اصلی برای مدیریت تمام منابع مرتبط مورد نیاز برای اجرای آن، قابل اطمینان است.

 

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

 

Serverless و FaaS اجازه می دهد برای پرداخت صورتحساب دقیق. از آنجا که FaaS توابع بیکار به مصرف CPU / حافظه بسیار پایین تر است، استفاده از منابع خوشه ای با استفاده واقعی نسبت به مقدار استقرار سازگارتر می شود. وقتی که توابع بیکار هستند، منابع سرور نمونه اکتیو نمیشوند، بنابراین هزینه کاهش مییابد. با این حال، به یاد داشته باشید که مزایای استفاده از صورت حساب ها، کاملا حساس هستند، بر الگوهای استفاده واقعی بستگی دارد. یک تابع که هر 10 ثانیه یک ثانیه اجرا می شود در Lambda ارزان تر است، اما اگر هر 10 ثانیه آن را برای 2 ثانیه اجرا کند، در EC2 ارزان تر است. شما باید مدل خود را با دقت بررسی کنید و ارزیابی کنید که آیا serverless در واقع پول شما را صرفه جویی خواهد کرد.

 

معماری Serverless یا توابع به عنوان یک سرویس (FaaS)، مطابق با اصول کلی زیر است:

1- این برنامه ها بطور ارادی سرویس های شخص ثالث مبتنی بر ابر مانند حوادث / پیام رسانی، خدمات احراز هویت و غیره را استفاده می کنند.

2-آنها از انواع مدل های داده پشتیبانی می کنند - NoSQL غالب است. دلیل این است که توابع در یک معماری serverless سبک هستند و نیاز به بسته بندی تمام وابستگی های آنها به یک پایگاه داده جنجالی، ساخت NoSQL بسیار مناسب است.

3- آنها تقسیم بندی افقی را به عنوان یک اصل اساسی مطرح می کنند. نرم افزار باید به صورت خودکار به سرعت و یا به پایین بر اساس میزان تولید.

4- از ديدگاه توسعه دهنده، انعطاف پذيري ارائه شده توسط چارچوب سرورها، آنها را به عنوان راهي سریع و مقرون به صرفه برای توسعه برنامه های کاربردی دیجیتالی می سازد .

5- برنامه FaaS باید به طور کامل از پشته زیربنایی زیربنایی خلاص شود. این کلیدی است، زیرا تیم های توسعه می توانند تنها بر روی کد برنامه تمرکز کنند و نیازی به نگرانی در مورد تعمیر و نگهداری OS / Storage / Network اصلی ندارند.

 

فریم ورک لاراول نیز در laracon 2019 با منتشر کردن پلتفرم vapor خدمات serverless  با امکان auto acaling و zero down time  ,  به نرم افزار های php لاراول میده .

 

 


نوشته شده توسط :

وحید صمدیان وحید صمدیان



یکشنبه, 6 مرداد 1398

تعداد بازديد : 1215

برچسب ها : معماری نرم افزار

3.0 ستاره