آشنایی با کوبرنتیس

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

امروزه با نیاز رو به رشدی که برای نرم افزار‌های بزرگ اینترپرایز به وجود آمده است، مفهومی تحت عنوان میکروسرویس هم در صنعت توسعهٔ نرم‌افزار رواج یافته است چرا که توسعه دهندگان برای توسعهٔ سیستم‌های بزرگ تجاری چاره‌ای جز به‌کارگیری از معماری میکروسرویس ندارند.

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

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

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

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


از ویژگی های مهم و محبوب کوبرنتیس می توان به موارد زیر اشاره کرد:

  • افزایش خودکار رپلیکای نرم افزار به صورت خودکار (مقیاس پذیری افقی)
  • توسعه و پیاده سازی سریع اپلیکیشن
  • خود ترمیمی در صورت بروز مشکل در نرم افزار یا زیرساخت
  • توزیع بار خودکار
  • سهولت در استفاده با پنهان کردن پیچیدگی های ذخیره سازی، پردازشی و زیرساختی از مشتری
  • استاندارد شدن روال پیاده سازی نرم افزار ها از طریق ساختار توصیف نرم افزار با فایل های YAML
  • داشتن استراتژی های متنوع برای بروزرسانی نرم افزار

دانش‌ها و تکنولوژی‌های مورد استفاده

  • فراهم کردن بستر زیرساخت توسعه نرم افزار
  • سهولت در راه اندازی ابزارهای پیاده سازی و تست بر اساس نیاز
  • پیاده سازی و بروزرسانی نسخه های مختلف نرم افزار به صورت خودکار
  • ارائه ابزارهای تست نرم افزار بر اساس نیاز
  • مانیتورینگ جامع نرم افزار و نمایش آن در داشبورد بر اساس پارامترهای مورد نیاز
  • جمع آوری لاگ نرم افزار و زیرساخت و همچنین نمایش آن بر اساس پارامترهای مورد نیاز
  • ارائه تکنولوژی های مختلف ذخیره سازی برای توسعه نرم افزار