مباحث مربوط به استقرار (Deployment) در معماری مایکروسرویس ها

در این قسمت از سری آموزش معماری مایکروسرویس ها از وبسایت پرووید، در رابطه با مباحث مربوط به معماری مایکروسرویس ها و deploy کردن آنها صحبت خواهیم کرد. در ابتدا توصیه می‌کنیم حتماً قسمت های قبلی از این آموزش را مطالعه کنید. علاوه بر این؛ توصیه می‌کنیم که در صورت تمایل از بسته های آموزشی مایکروسرویس ها استفاده کنید.

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

امکان deploy کردن و undeploy کردن مستقل هر مایکروسرویس از دیگر مایکروسرویس.

امکان scale کردن مایکروسرویس ها به صورت جداگانه. برای مثال فرض کنید که یک مایکروسرویس، ترافیک بیشتری نسبت به سرویس‌های دیگر دریافت می‌کند و از این طریق می بایست بتوان آن را به سادگی و به طور مستقل scale کرد.

امکان deploy کردن مایکروسرویس ها با سرعت بسیار بالا.

ایجاد شکست در یک مایکروسرویس نباید بر روی عملکرد دیگر سرویس‌ها تأثیر منفی بگذارد.

ابزار docker که یک موتور open source است و اجازه می‌دهد برنامه نویسان و مدیران سیستم، application کامل خود را در قالب container هایی deploy کنند، یک ابزار بسیار مناسب به حساب می‌آید. در این راستا توصیه می‌کنیم از بسته ی آموزش ویدئویی ساخت مایکروسرویس های واکنش گر (Reactive Microservices) استفاده کنید. با استفاده از docker به سادگی می توانیم مایکروسرویس ها را با استفاده و توجه به اصولی که در قسمت بالا مطرح شدند deploy کنیم. مراحل اصلی استفاده کردن از داکر شامل موارد زیر می باشند:

در ابتدا می بایست که مایکروسرویس در قالب یک docker container image بسته بندی بگردد.

سپس هر سرویس و هر instance از یک سرویس به عنوان یک container می بایست deploy بگردد.

پس از آن به سادگی می توانیم بر اساس نیاز، container instance هایی که در اختیار ما قرار گرفته اند را به سادگی scale کنیم.

علاوه بر این؛ build کردن و deploy کردن و آغاز کردن یک مایکروسرویس بسیار سریع تر خواهد بود. به عبارت دیگر؛ container های docker نسبت به ماشین‌های مجازی معمولی سرعت بسیار زیادی خواهند داشت.

ابزار kubernetes که در آینده نزدیک آموزش آن بر روی وبسایت پرووید قرار خواهد گرفت، قابلیت‌های docker را افزایش می‌دهد. با استفاده از kubernetes به راحتی می توانیم یک cluster از container های لینوکس را به عنوان یک سیستم تک مدیریت کنیم. علاوه بر؛ این مدیریت کردن چندین container از docker و اجرا کردن آن ها بر روی چندین host و البته مباحث مربوط به service discovery وreplication control نیز به سادگی در kubernetes پیاده سازی می شوند. همانطور که در تصویر زیر مشاهده می کنید بسیاری از قابلیت های پیاده سازی شده توسط kubernetes و docker می‌توانند در توسعه معماری مایکروسرویس ها به ما کمک کنند. به همین دلیل امروزه استفاده از kubernetes سوار بر docker برای بسیاری از سیستم هایی که از معماری مایکروسرویس ها استفاده می‌کنند، مورد استفاده قرار گرفته و به عنوان یک راهکار کاملا استاندارد مورد قبول بسیاری از برنامه نویسان می باشد.


اگر قسمت های قبلی این سری آموزشی را مطالعه کرده باشید از یک برنامه monolithic صحبت کردیم که در تصویر بالا ساختار مایکروسرویسی آن را مشاهده می کنید. همانطور که در تصویر بالا ملاحظه می فرمایید، هر مایکروسرویس در قالب یک container به سادگی deploy شده است و به ازای هر host نیز container قرار داده شده اند.

در این قسمت بحث مربوط به deployment مایکروسرویس ها را به پایان می رسانیم و در قسمت بعد از این آموزش در رابطه با مباحث امنیتی و security در مایکروسرویس ها صحبت خواهیم کرد.