Dev Stream
Dev Stream
خواندن ۴ دقیقه·۴ سال پیش

چگونه داکر در scalable کردن microservice ها به ما کمک می کند؟!

پارت چهارم
پارت چهارم


در پارت قبلی ما با پدیده ای بنام docker آشنا شدیم و سعی کردیم از یک چیزی بنام Virtual Machines شما را با docker آشنا کنیم که یکسری مزیت ها نسبت به Virtual Machines داشت که چند مورد از آنها را ذکر کردیم.

در این بخش ما قصد داریم با docker بیشتر آشنا شویم و آن را از جوانب دیگر هم بررسی کنیم. و در ادامه از خود این سوال اساسی را می پرسیم:

آیا با استفاده کردن از داکر،ما دیگر مشکلی با ارائه سرویس ها به مشتری نداریم؟! یا بهتر بگوییم آیا مفهوم scalability آنطور که باید و شاید پیاده سازی شده است؟

داکر و کانتینر، که اخیرا در جامعه ی Dev Ops ها به شدت مورد بحث است و با سرعت درحال گسترش و پیشروی است و در مراحل Build و test مورد استفاده اکثریت شرکت ها و گروه های حرفه ای قرار می گیرد. علت این مهاجرت شرکت ها را، اگر بخواهیم به طور خلاصه توضیح دهیم(در پارت قبلی بطور مفصل مطرح شده) دستیابی شرکت ها و اپ ها و... به تحول های مداوم و افزودن فیچرها به برنامه است.

اما این microservice با استفاده از داکر چگونه اجرا می شوند؟!

در واقع microservice ها در محیطی بنام Container اجرا می شوند. کانتینرها محیط هایی مستقل، ایزوله و مشخص هستند که از IMAGE ساخته می شود. برای درک بهتر این موضوع فرض کنید: Docker Image نقشه ی ساختمان باشد، آنگاه Docker Container آن زمین و پی است که برای آن نقشه و ساختمان در نظر گرفته شده.

در واقع کانتینر نرم افزار را از فضای اطراف ایزوله می کند و این کار سبب می شود تا تداخل بین تیم های مختلف که روی نرم افزار کار می کنند کاهش یابد.

آنچه در مورد Docker Container از اهمیت برخوردار است شکل واحد و مستقل اجرا شدن آن است.
آنچه در مورد Docker Container از اهمیت برخوردار است شکل واحد و مستقل اجرا شدن آن است.


توضیح بیشتر این مبحث نیازمند نصب داکر و استفاده از ابزار های آن است. نصب و راه اندازی داکر خیلی پیچیده و زمانبر نیست ولی برای ما ایرانی ها تحریم شده است و از طریق راه های دیگر ما هم می توانیم از این سرویس بهره مند شویم((:

آیا با استفاده کردن از داکر،ما دیگر مشکلی با ارائه سرویس ها به مشتری نداریم؟! یا بهتر بگوییم آیا مفهوم scalability آنطور که باید و شاید پیاده سازی شده است؟

آیا با استفاده کردن از داکر،ما دیگر مشکلی با ارائه سرویس ها به مشتری نداریم؟!

آیا مفهوم scalability آنطور که باید و شاید پیاده سازی شده است؟

جواب خیر است!!

چند دلیل اساسی برای این مطلب می توان بیان کرد:

۱- ما در مورد microservice ها صحبت کردیم اما در مورد پیچیدگی ارتباط بین آنها حرفی نزدیم.

۲- چالش دیگری که پیش روی ماست تعداد این کانتینرها و نحوه ی مدیریت آنهاست که سبب می شود با پای Container manager ها به میان بیاید مثلا: Docker Swarm و Kubernetes و...

۳- اگر ارتباط بین microservice ها به طور ناهمزمان صورت گیرد چه؟! برای رضایت هر چه بیشتر مشتری سرویس ها باید کاملا در دسترس باشند، اما اگر در ارائه ی یکی از این سرویس ها مشکلی بروز پیدا کرد چه؟! نمی شود که یک درخواست را نگه داشت و منتظر دیگری ماند!! به همین دلیل پای سرویس هایی مانند RabbitMQ به میان می آید.

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

باید به این نکته هم دقت داشت که استفاده از microservice ها، همیشه هم بهترین گزینه نیست و استفاده از ابزار ها تابع شرایط پروژه است و مولفه های زیادی را شامل می شود که در این مقاله، مورد بحث ما نیست اما برای استفاده از آن باید دلیل منطقی و خوبی داشت در غیر این صورت کار شما بیهوده بوده و با پیچیدگی های زیادی روبرو هستید.

ما سعی داریم مواردی که معمولا در مباحث تئوری کمتر مورد توجه قرار می گیرند(البته در مباحث عملیاتی به طور مفصل مورد بررسی قرار می گیرد.) را توضیح دهیم.

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

خب در اینجا به پایان داستان داکر و scalability می رسیم، اما همچنان یادگیر گرفتن و آموختن در جریان هست!

امیدوارم از این مطالب لذت برده باشید و براتون مفید فایده بوده باشه(:

با آرزوی موفقیت.

نوشته شده توسط: علی آخی




dockerscalabilitycontainermicroserviceapp
جایی برای یادگرفتن و گپ برنامه نویس ها
شاید از این پست‌ها خوشتان بیاید