هرجا سخنی از معماری میکروسرویس میشود نام داکر و یا کانتینرها را هم میشنویم
چرا داکر در کنار میکروسرویس استفاده میشود؟
.در این مقاله مزیتهای که استفاده از داکر به معماری میکروسرویس اضافه می کند را بررسی میکنیم
.اگر بامعماری میکروسرویسها آشنایی ندارید توصیه میکنم دوره رایگان آموزش میکروسرویس سایت باگتو را مشاهده نمایید
معماری میکروسرویس
معماری میکروسرویس یکی از مدرنترین و جدیدترین معماریهای نرمافزار است که بهتازگی وارد دنیای معماری نرمافزار شده است و روزبهروز شاهد رشد بیشتر این معماری هستیم.
در حال حاضر میبینیم که پروژههای بزرگ دنیا مثل netflix ,uber ... و یا حتی پروژههای بزرگ داخل کشور از معماری میکروسرویس برای برطرفکردن مشکلات خود استفاده کردهاند.
اگر پروژههای که از معماری میکروسرویس استفاده کردهاند را بررسی کنیم متوجه میشویم که این معماری در پروژههای بزرگ استفاده میشود و در پروژههای کوچک شاید هیچ مزیتی نداشته باشد و دردسرهای زیادی هم برای ما ایجاد کند.
برای آشایی ببیشتر با معماری میکروسرویس بهتر است از مقاله معماری میکروسرویس (Microservice )چیست؟ استفاده کنید.
در ادامه با داکر آشنا میشویم و بعد بررسی میکنیم که داکر چه قابلیتهایی به معماری میکروسرویس اضافه میکند.
ما در دوره پیشرفته آموزش asp در فصل هفدهم داکر و بصورت کامل آموزش داده ایم برای یادگیری داکر به دوره ستارگان asp.net core مراجعه کنید.
چرا اپلیکیشن ما نیاز به یک محیط ایزوله دارد؟
وب اپلیکیشنی که ما توسعه میدهیم باید در یک محیط کاملاً ایزوله اجرا شود. منظور از ایزوله این است که تمامی منابع در اختیار اپلیکیشن ما باشد و اپلیکیشنهای دیگری در آن محیط در حال اجرا نباشند. بهعنوانمثال فرض کنید شما درحالتوسعه وب اپلیکیشن خود هستید و مجبورید دو نسخه مختلف از این اپلیکیشن را تست کنید.
هرکدام از نسخه نیازمندیهای خاص خود را دارند که باید بر روی سیستمعامل سرور نصب شوند و اگر شما هر دو نسخه را بر روی یک سرور مستقر کنید ممکن است این اختلاف ورژن نیازمندیها یا کتابخانهها برای شما دردسر ایجاد کند.
و یا تصور کنید درحالتوسعه اپلیکیشن با معماری میکروسرویس هستید و یکی از سرویسهای شما نیاز دارد بر روی سرور ویندوزی اجرا شود و یکی دیگر نیاز دارد بر روی سرور لینوکسی اجرا شود.
و حتی اگر اجرای چند اپلیکیشن در یک سرور از نظر اجرا شدن مشکلی نداشته باشند، این اپلیکیشنها میتوانند بر رویهم تأثیر بگذارند و مشکل در یک اپلیکیشن بر روی دیگری تأثیر بگذارد و باعث شود بقیه اپلیکیشنهای روی این سرور هم نتوانند خدمات خود را ارائه دهند.
به همین دلایل در معماری میکروسرویس بهتر است که هر سرویس را در محیطی کاملاً ایزوله اجرا کنیم.
انواع محیط ایزوله که میتوانیم استفاده کنیم
1-Bare-Metal
با استفاده از bare metal شما یک سرور با منابع بالا را در اختیار دارید که میتوانید اپلیکیشن خود را بر روی آن مستقر کنید. این نوع سرورها معمولاً دارای منابع زیادی میباشند و به همین دلیل ماهیانه باید هزینه زیادی برای این نوع سرورها پرداخت کنید.
و اگر قرار باشد برای معماری میکروسرویس که از صدها میکرو اپلیکیشن ایجاد شده است از این نوع سرورها استفاده کنید ماهیانه هزینه بسیار زیادی باید برای سرورها پرداخت کنید که اصلاً مقرونبهصرفه نیست.
2-Virtual Machine
با استفاده از VM و یا همان ماشین مجازی میتوانیم محیطهای ایزوله متعددی بر روی یک سرور Bare-Metal ایجاد کنیم.
روش کار به این صورت است که ما روی یکلایه سیستمعامل با استفاده از نرمافزارهای مجازی سیستمعاملهای دیگری را نصب میکنیم که درصدی از منابع سرور اصلی را به آن اختصاص میدهیم و به همین صورت میتوانیم محیطهای مجازی ایزولهای داشته باشیم.
راهاندازی یک VM چندین دقیقه طول میکشد و شاید برای مقیاسپذیری در معماری میکروسرویسها مناسب نباشد.
3-Container
کانتینر یکبخشی از سیستمعامل میباشد که یک محیط ایزوله برای اجرا شدن اپلیکیشنها در اختیار ما قرار میدهد. مفهوم Container از مدتها قبل درون سیستمعامل لینوکس وجود داشت و بعدها به سیستمعاملهای دیگر مثل ویندوز هم اضافه شد.
ما با استفاده از Containerهای که سیستمعامل در اختیارمان قرار داده است میتوانیم اپلیکیشنهای خودمان را در محیطی کاملاً ایزوله اجرا کنیم.
اجرا شدن یک کانتینر معمولاً چند ثانیه طول میکشد و بهترین گزینه برای مقیاسپذیری معماری میکروسرویسها میباشد.
داکر چیست؟
اجرا شدن یک کانتینر معمولاً چند ثانیه طول میکشد و بهترین گزینه برای مقیاسپذیری معماری میکروسرویسها میباشد.
با مفهوم Containerها آشنا شدیم آنها یک محیط کاملاً ایزوله از سیستمعامل را برای اجرا شدن اپلیکیشنها در اختیار ما قرار میدهند.
اما مدیریت و کارکردن با Containerها کار پیچیدهای است و شاید ما بهراحتی نتوانیم از این Containerها استفاده کنیم. به یک ابزار قدرتمند نیاز داریم که بتوانیم Containerها را مدیریت کنیم و داکر یکی از ابزارهایی میباشد که برای مدیریت Containerهای سیستمعامل ایجاد شده است.
پس داکر فقط یک نرمافزار برای ایجاد، حذف و ویرایش، و مدیریت Containerها میباشد البته امکانات بیشتری در اختیار ما قرار میدهد که در دورهها و مقالات دیگر باگتو به آموزش کامل داکر میپردازیم.
مزیتهای استفاده از داکر برای معماری میکروسرویس کداماند؟
در معماری میکروسرویس پروژه را تقسیم میکنیم به سرویسهای کوچک و مستقل از هم که هرکدام میتوانند با زبان برنامهنویسی مستقلی توسعه داده شوند و هر سرویس نیز دیتابیس اختصاصی خود را دارد.
پس در معماری میکروسرویسی نیاز داریم هرکدام از سرویسها را در محیطی ایزوله اجرا کنیم و برای Scale برنامه هم باید بتوانیم خیلی سریع نسخههای متعددی از هر سرویس را اجرا کنیم.
با بررسی شرایط معماری میکروسرویس از بین سه محیط ایزولهای که بررسی کردیم بهترین گزینه استفاده از Containerها میباشد و برای مدیریت Containerها هم بهترین گزینه موجود ابزار Docker میباشد و به همین دلیل است که همیشه در کنار معماری میکروسرویسها از داکر و Container هم استفاده میشود.
در ادامه مزیتهای استفاده از داکر را بیان می کنیم :
• اجرای سریع
اجرای Containerها یک فرایند سیستم عاملی است و یک Container در عرض ثانیه اجرا میشود. این در حالی است که راهاندازی یک VM ممکن است چندین دقیقه طول بکشد.
• استقرار با سرعت بیشتر
استقرار اپلیکیشنها در Containerهای داکر خیلی سریع انجام میشود چون همه نیازمندیها در یک image بستهبندیشدهاند و برای اجرا، فقط کافی است آن image را بارگذاری و اجرا کنیم.
• مدیریت ساده Containerها
مدیریت Containerهای سیستمعامل کار پیچیدهای است و داکر این کار پیچیده را برای ما راحت کرده است و با استفاده از داکر مدیرت Containerها به سادگی انجام میشود.
• مقیاسپذیری
اگر Containerهای شما محدود به چند عدد باشند و همه آنها روی یک سیستمعامل باشند مدیریت آنها شاید کار سختی نباشد. اما اگر شما صدها Container داشته باشید و آنها روی سرورها و سیستمعاملهای مختلفی باشند مدیریت آنها واقعاً کار سخت و پیچیدهای میشود. با استفاده از Docker Swarm میتوانیم تعداد زیادی Container روی سرورهای مختلف را مدیریت کنیم و بهراحتی بتوانیم Scale Out معماری میکروسرویس را انجام دهیم.
• پشتیبانی از سیستمعاملهای مختلف
در سیستمعاملهای لینوکس، ویندوز و مک مفهوم Container را داریم و با استفاده از داکر میتوانیم container سیستمعاملهای مختلف را مدیریت کنیم و محدود به یک سیستمعامل نیستیم.
در معماری میکروسرویس ما دهها اپلیکیشن جدا از هم داریم که کاملاً بهصورت مستقل میتوانند اجرا شوند در نتیجه ارتباط بین این اپلیکیشنهای مستقل میتوانیم اپلیکیشن بزرگ را داشته باشیم.
در معماری میکروسرویس چون تعداد سرویسها زیاد میباشند ما به بحث Auto Scale هم نیاز داریم استفاده از VM نمیتواند گزینه مناسبی باشد و بهتر است که از Containerها برای محیط اجرای سرویسهای خود استفاده کنیم.
برای حرفه ای شدن در بحث میکروسرویس می توانید دوره ستارگان میکروسرویس سایت باگتو رو مشاهده کنید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید