اگر در مورد انتخاب و استفاده از کوبرنتیز و serverless مردد هستید، نوین هاست با ارائهٔ این مطالب به شما کمک میکند تا بتوانید تصمیم صحیحی بگیرید.
اغلب میپرسند : برای ساخت اپلیکیشنهای سازگار با سرور ابری و سرور مجازی بهتر است از کوبرنتیز استفاده کنیم یا از serverless ؟ هر کدام از این گزینههای رایانشی مزایا و معایبی دارند و بسته به نیاز خود میتوانید یکی از این گزینهها را انتخاب کنید.
توجه داشته باشید که serverless را با کوبرنتیز مقایسه میکنیم نه با کانتینرها. با OpenWhisk ، پلتفرم منبع باز serverless هم میتوانید با کانتینرهای Docker کار کنید. توجه داشته باشید که یک عملکرد سادهٔ serverless را با اپلیکیشنهای پیچیدهٔ میکروسرویس در کوبرنتیز مقایسه نمیکنیم، بلکه اپلیکیشنهایی را که از نظر پیچیدگی مشابه یکدیگرند ، با هم مقایسه میکنیم.
در صورتی از serverless استفاده کنید که حجم کاری شما متغیر و نامنظم است.
یک وبسایت محلی که شبها ترافیک داده ندارد و یا ترافیک دادهٔ کمی دارد، نمونهٔ خوبی از serverless است. از آنجا که در پلتفرم serverless ، شما تنها برای زمانی که دستوری را اجرا میکنید، هزینه میپردازید، هزینهٔ شما کاهش چشمگیری خواهد داشت. هر قدر زمانی که اپلیکیشنها کاری انجام ندهند، بیشتر باشد، احتمال ارزانتر بودن serverless بیشتر است. با این حال، وجود سیستم serverless همیشه به معنی ارزانتر بودن نیست ، مثلاْ زمانی که لازم است که اپلیکیشنهای شما به صورت تمام وقت کار کنند. هزینههای پنهانی هم وجود دارند ، مانند هزینههای اضافی برای مدیریت API و هزینههای درخاست انجام تست سیستم .
در اولین تجربه به محصولات سازندگان دیگر نیاز داشته باشید.
اگر تا به حال با serverless و یا کوبرنتیز کار نکردهاید، سادهتراست که از برنامهٔ آسانی که در پلتفرم serverless اجرا میشود ، استفاده کنید. وقتی از کوبرنتیز استفاده میکنید، بطور معمول باید زمانی را برای ساخت خوشه و پیکربندی کوبرنتیز صرف کنید تا به یک IP عمومی دست پیدا کنید و سپس نخستین کانتینر خود را نصب کنید. در صورتی که از پلتفرم serverless استفاده میکنید، میتوانید به سادگی و با استفاده از ابزارهای وب که عرضهکنندگان سرور ابری و سرور مجازی ، سرور اختصاصی در اختیار شما قرار دادهاند ، ظرف چند دقیقه سیستم را راهاندازی کنید.
با این وجود ، serverless همیشه راحتتر از کوبرنتیز نیست. ساختن و مدیریت یک اپلیکیشن serverless که دارای مجموعهای از عملکردهای مختلف است ، از ساختن و مدیریت یک اپلیکیشن سادهٔ کوبرنتیز که فقط یک کانتینر دارد، سختتر است. در حقیقت، ممکن است سادهتر باشد که برای اپلیکیشنهای پیچیدهتر از کوبرنتیز استفاده کنیم، زیرا این پلتفرم بالنسبه کاملتر است .
نیاز به قابلیت توسعهٔ خودکار ذاتی داشته باشید.
از آنجا که به عنوان سازنده ، لازم نیست کار خاصی برای توسعهٔ عملکردهای serverless انجام دهید، قابلیت توسعهٔ خودکار عملکردها به صورت ذاتی یکی از قابلیتهای مهم serverless به حساب میآید. در صورت استفاده از کوبرنتیز هم میتوانید از قابلیت توسعهٔ خودکار pod ها و حتی nod ها استفاده کنید، اما این امر به پیکربندی و تنظیمات خاص نیاز دارد و از آنجا که این فرایند تنها با اعمال قوانین خاصی آغاز میشود ، کمی کندتر از فرایند موجود در serverless است . با این حال، قابلیتهای توسعهٔ کوبرنتیز بهتر از serverless است ، زیرا کوبرنتیز کاملتر از serverless است و در مناطق مختلفی که هنوز امکان دسترسی به serverless وجود ندارد ، می توان به راحتی به کوبرنتیز دسترسی داشت ( HA بالا ).
در صورتی از کوبرنتیز استفاده کنید که به گزینهها و قابلیتهای پخته و کامل برای نصب و استفاده نیاز داشته باشید.
پلتفرم serverless سراغ نداریم که از ارزیابی A/B که یکی از قابلیتهای اصلی برای ساخت اپلیکیشنهای سازگار با سرور ابری یا سرور مجازی به شمار میرود ، پشتیبانی کند. علاوه بر این ،قابلیتهای مدیریتی و نظارتی اپلیکیشنهای کوبرنتیز خیلی کاملتر هستند. به عنوان مثال، وقتی از Istia استفاده می کنید، میتوانید زمان اجرای میکروسرویسها را مشاهده کنید و متوجه شوید که کدام سرویس به سرویسهای دیگر نیاز دارد و آیا مشکلی در مسیر اجرای سرویسها وجود دارد. پلتفرمهای serverless هنوز چنین قابلیتی ندارند و به تازگی برای بیان جریان کار بین عملکردهای مختلف دست به اقداماتی همچون افزودن ویژگیهایی مانند Amazon Step Functions و OpenWhisk Composer زدهاند.
با این حال، اگر اپلیکیشن نسبتاْ سادهای دارید که احتمالاْ تنها یک عملکرد برای ایجاد API دارد، ممکن است serverless گزینهٔ مناسبتری برای شما باشد ، زیرا نصب و استفاده از آن سادهتر است و اغلب پلتفرمهای مختلف serverless قابلیت نظارت و مدیریت یک عملکرد را دارند.
به حداقل زمان ارائهٔ واکنش نیاز داشته باشید.
هنگام استفاده از پلتفرمهای serverless نخستین درخواست اجرای یک عملکرد مدتی طول میکشد، زیرا انجام این فرمان به آماده سازی اولیه احتیاج دارد. مثلاْ در OpenWhisk میتوانید از کانتینرهای Docker استفاده کنید که قابلیت اجرای اپلیکیشنهای Java را دارند ومدتی طول میکشد تا کار خود را شروع کنند. اگر به واکنش مطمئن و سریع نیاز دارید ، باید از کوبرنتیز استفاده کنید.
اخیراْ پلتفرمهای serverless مانند OpenWhisk از طریق ذخیره کردنهای فراوان اما کوتاهمدت ، پیشرفت زیادی کردهاند. پس از اولین راهاندازی کند در این پلتفرمها ، معمولاْ دیگر نباید چنین مشکلی داشته باشید و همین ممکن است برای اپلیکیشنهای شما کافی باشد.
میخواهید محاسبات سطح بالا بدون محدودیت منابع انجام دهید.
پلتفرمهای serverless معمولاْ دچار محدودیتهای خاص از نظر منابع هستند ، مثلاْ عملکردهای آنها نمیتوانند از بیش از MB512 RAM استفاده کنند و نمیتوانند بیشتر از ۵ دقیقه ادامه داشتهباشند. اگر این محدودیتها در کار اپلیکیشن شما ، اشکال ایجاد میکند ، لازم است که از کوبرنتیز استفاده کنید. با این حال ، گاهی ممکن است که بتوانید اپلیکیشن خود را به چند عملکرد کوچکتر تقسیم کنید . حتی گاهی، مثلاْ زمانی که میخواهید یک اپلیکیشن یکپارچهٔ موجود را به سرور مجازی یا سرور ابری منتقل کنید ، ممکن است این کار ، کار مطلوب و لازمی باشد .