هنگامی انتخاب این سناریو از ابزارهای متفاوتی مثل teamcity, Octopus, Jenkins, Packer و ... میتوانید استفاده کنید تا روال انتشار نرم افزار و نصب آن روی ماشین مجازی و تهیه Image از ماشین مجازی را به صورت اتوماتیک پیاده سازی کنید که بررسی این روشها خارج از حوصله این مبحث است و در صورتی که تمایل داشته باشید میتوانید مطالب تخصصی این حوزه را مطالعه نمایید.
بزرگترین مزیت استفاده از این روش ایزوله بودن کامل نسخههای اجرایی هر سرویس است. در این روش هر نسخه از سرویس مقدار ثابتی CPU, Ram و Hardدر اختیار دارد که نمیتواند از حدود مجاز خود تخطی کند.
مزیت دیگری که برای استفاده از این روش میتوان نام برد، تبدیل شدن ماشین مجازی به یک جعبه سیاه کامل است. بعد از اینکه این جعبه سیاه آماده شد دیگر نیازی نیست در مورد اجزا داخلی آن و چگونگی تنظیم شدن آنها اطلاعاتی داشته باشیم. پس تیم زیرساخت به سادگی میتواند یک نسخه از ماشین مجازی را بدون هیچ دردسری اجرا کند. فقط کافی است برای انجام این کار منابع کافی در اختیار تیم زیر ساخت باشد.
اما در کنار این مزایا استفاده بد از منابع زیرساختی بزرگترین ضعف استفاده از این روش است. شما به ازای هر نسخه از نرمافزار خود باید هزینههایی برای زیرساخت نرم افزاری مثل سیستمعامل و آنتی ویروس و ... در نظر بگیرید.
مشکل دیگری که برای این روش قابل تامل است، کند بودن نصب نسخهی جدیدی از نرمافزار است. هر چند نصب و راه اندازی یک نمونه از Image بسیار سریع است اما هنگامی که نسخه جدیدی از نرم افزار را بخواهیم اجرا کنیم مراحل نصب و راه اندازی کند و زمانگیر است.
هنگامی که سرویس ما دچار اختلال شود یا به هر دلیلی نیاز به اجرای مجدد داشته باشد، روال راه اندازی مجدد با توجه به اینکه از سطح سیستم عامل انجام میشود زمانگیر و کند است که این ایراد هم به نوبه خود حائز اهمیت میشود.
با توجه به اینکه در این شرایط معمولا تیم توسعه روال آماده سازی و ایجاد نسخه پشتیبان از ماشین مجازی را به عهده دارد، کارهای خارج از وظیفه و بعضا سخت و زمانگیر به تیم توسعه تحمیل میشود.
استفاده از این روشهم مزایا و معایب خاص خودش را دارد. اما مهم ترین مسئله این است که مزیای این روش بر معایب آن میچربد.
در حوزه مزیت اگر بخواهیم بررسی کنیم، تمامی مزیایی که برای ماشینهای مجازی بیان کردیم جزء مزیتهای این روش توزیع و نصب محسوب میشود. در کنار این مزایا عیبهایی که برای استفاده از ماشینهای مجازی بیان کردیم هم دیگر وجود ندارد. یعنی در این روش دیگر مجبور نیستیم به ازای هر سرویس هزینه نصب و نگهداری سیستمعامل و آنتیویروس را هم به سیستم تحمیل کنیم. در استفاده از این روش تیم توسعه به سادگی مراحل انجام کار نصب و راه اندازی را در داکر فایل مستند میکند و هر فردی که فقط با داکر آشنا باشد به سادگی میتواند بدون نیاز به هیچ دانش خاصی از نرم افزار ما سیستم را آماده اجرا کند.
اما با همه مزیایی که در توزیع و نصب با استفاده از کانتینرها وجود دارد معایبی نیز میتوان برای این روش متصور شد. با اینکه سالها از شروع به کار داکر میگذر و این بستر بلوغ خوبی پیدا کرده است، اما توسعه دهندگان و مهندسین زیرساخت هنوز به خوبی با این ابزار آشنا نیستند تعداد افرادی که به خوبی میتوانند از این ابزار استفاده کنند کم است.
جمع بندی:
نصب و راه اندازی میکروسرویسها چالشی بزرگ در استفاده از این معماری است که در این مطلب سعی کردیم با برخی از این چالشها و راهکارهای حل مشکلات صحبت کنیم. در این قسمت بررسی کردیم نصب و راه اندازی چندین سرویس روی یک سرور چه مزایا و معایبی دارد و راه حل جایگزین آن یعنی استفاده از VMها و کانتینرها را نیز مختصرا مورد بررسی قرار دادیم. اساسا این مرحله از کار معمولا به عهده توسعه دهندههای نرم افزار نیست و معمولا دوستان زیرساخت این وظیفه را به عهده دارند، اما با توجه به اینکه باید در مورد نحوه انجام کار تصمیم گیری کنیم، سعی شد در این مطلب نکاتی در این رابطه بیان شود.
پ.ن: تا این قسمت از کار با مفاهیم کلی که برای شروع کار با میکروسرویسها نیاز بود آشنا شدیم و این مطلب آخرین مطلب از این سری بود. در صورتی که امکانی باشد در آینده در مورد جزئیات پیاده سازی این معماری بیشتر بررسی خواهیم کرد.
منبع:nikamooz