تفاوت بین Containerization و Orchestration
درک تفاوت اساسی بین Containerization و Orchestration با استفاده از یک تشبیه ساده
اگر شما هم یک SysAdmin هستید، احتمالاً با دو کلمهی Containerization و Orchestration توی دنیای DevOps برخورد کردید. اگر چرخی توی اینترنت زده باشید، میدونید که مقالههایی که در مورد تفاوت این دو موضوع وجود دارند، کم نیستند ولی بیشتر این مقالهها مقایسه خودشون رو بین Docker و Kubernetes متمرکز کردند.
امّا من فکر میکنم قبل از اینکه تفاوت بین نرمافزارها رو درک کنیم، اوّل باید تفاوت بین اهداف اونها و دلیل به وجود اومدنشون رو بفهمیم.
توی این مقاله من سعی کردم با استفاده از معنی واقعی کلمات Containerization و Orchestration، تفاوتشون رو شرح بدم.
کانتینرازیسیون و ارکستراسیون به زبان ساده
کلمه Container به یک مکعب بزرگ و مجزا در یک محیط منحصر به فرد اشاره میکنه. کانتینرها برای حمل و نقل محمولههای مختلف در کشتیها بارگیری میشن. کلمه Dock به عنوان یک اسم در زبان انگلیسی به معنی لنگرگاه و به عنوان فعل به معنی لنگر انداختن (معمولاً برای بارگیری یا تخلیه محموله) استفاده میشه. بنابراین احتمالاً حالا متوجه شدید که دلیل انتخاب اسم Docker چیه!
کلمه Orchestra به گروهی از نوازندگان اطلاق میشه که یک نوت موسیقی رو با هماهنگی کامل اجرا میکنن، البته با کمک رهبر ارکستر. این هارمونی موسیقیایی کاملاً هماهنگ، همون چیزیه که در زبان انگلیسی بهش میگن Orchestration یا ارکستراسیون.
حالا وقتی با دید DevOps به این دوتا مفهوم نگاه کنیم و سعی کنیم متوجه بشیم که چطور این ایده برای مدیریت نرمافزارها توی کامپیوتر استفاده شده، باید به جای نوازندگان موسیقی، «کشتی»ها رو قرار بدیم.
نرم افزارهایی که توی کانتینر اجرا میشن مثل محمولههایی هستن که داخل کانتینرِ کشتیها نگهداری میشن. بنابراین میشه نرم افزار Docker رو به عنوان ملوان یک کشتی تصور کنیم که کانتینرهایی با نرم افزارهای مختلف در اون کشتی بارگیری شده و نحوه هدایت این کشتی به ملوان بستگی داره. دقیقاً همونطور که یک ملوان کشتی مسئول نظارت دقیق روی ناوبری و هدایت کشتی هست، داکر هم مسئول مدیریت کانتینرهای در حال اجرا توی یک سیستم کامپیوتریه.
دقت داشته باشید که این کانتینرها، نرم افزارهای مجزا رو در محیطهای ایزوله اجرا میکنند. روی یک ماشین مجازی یا یک سرور فیزیکی این امکان وجود داره که چندین کانتینر اجرا بشه. حالا بیاید ماشین مجازی یا سروری که روش نرم افزار داکر به همراه کانتینرهاش اجرا میشه، به عنوان کشتی در نظر بگیریم و تصور کنیم که نه فقط یکی، بلکه چندین کشتی با کانتینرها و محمولههای مختلف داریم.
ارکستراسیون یا مثلاً راه حلی مثل کوبرنتیز، چندین ماشین مجازی یا سرور رو مدیریت و نظارت میکنه تا در هماهنگی کامل با همدیگه اجرا بشن. اگرچه واژه Kubernetes به معنای سکان دار یا فرمانده کشتیه، ولی اگر این واژه رو به واژه «رئیس لنگرگاه» ربط بدیم، مفهوم و نحوه عملکرد کوبرنتیز در تشبیهی که توی این مقاله انجام دادیم بهتر درک میشه.
رئیس لنگرگاه تعداد زیادی از کشتیهایی که به لنگرگاه وارد یا خارج میشن رو سازمان دهی و نظارت میکنه، همونطور که کوبرنتیز این کارو با ماشینهای مجازی با کانتینرهای مختلف انجام میده. حتی اگر فقط یک کشتی (یا ماشین مجازی) رو در نظر بگیریم، در مورد چندین کانتینر میشه از همین قیاس استفاده کرد.
حرف آخر
Containerization عملیات جداسازی نرم افزارها برای استقرار در محیطهای مبتنی بر سیستم عامل در ماشینهای مجازی یا سرورها فیزیکیه. یک نمونه از ابزارها برای عملیات کانتینرازیسیون، Docker هست.
ارکستراسیون روشی برای هماهنگ سازی کانتینرهایی که روی سرورها قرار گرفتند و همچنین خودِ سرورهاست. این سرورها میتونند ماشین مجازی یا سرور فیزیکی باشند. یک نمونه از ابزارها برای عملیات ارکستراسیون، Kubernetes هست.
امیدوارم این مقاله مفیده بوده باشه و حالا بتونید تفاوت اساسی بین عملیات Containerization و Orchestration رو متوجه بشید.