دعوت به همکاری

سلام دوستان.
سایت فرق در راستای تکمیل کادر محتوا، نیازمند به افرادی با توانایی های زیر جهت همکاری می باشد:

  • آشنا و علاقمند به مباحث فناوری اطلاعات
  • آشنایی به زبان انگلیسی و توانایی ترجمه
  • سابقه کار مرتبط در یکی از زمینه های فناوری اطلاعات
  • دارای روح پژوهشی و ایده پرداز

نوع همکاری در ابتدا به صورت پروژه ای و به ازای هر مطلب خواهد بود و در صورت اثبات خوش عهدی، نوع همکاری دائمی خواهد شد.

از علاقمندان درخواست می گردد درخواست همکاری خود را به یکی از آدرس های info@fargh.com و یا farhad@fargh.com ارسال نمایند و پس از احراز صلاحیت، شرایط همکاری توضیح داده خواهد شد.
لازم به ذکر است تمامی مطالب با نام خود نگارنده یا مترجم اصلی در سایت درج خواهد شد

تفاوت Container (کانتینر – نگهدارنده) و Virtual machine (ماشین مجازی): پاسخی ساده به سوالی پیچیده

اگر شما در انتخاب میان ماشین مجازی و کانتینر مشکل دارید، جک والن این انتخاب را به لیست دوتایی ساده ای کاهش می دهد.

به قلم: Jack Wallen
ترجمه: Farhad Gholami
منبع (چک شده در تاریخ نگارش): سایت Techrepublic

برای سالها، تمایل همه تنها به ماشین های مجازی (VM ها) جلب بود. آنها کاملا موجه بودند: به جای داشتن اتاقی پر از سرور، شما می توانید تمام آن سیستم ها را تنها روی یک سخت افزار (قوی) پیاده سازی نمایید. ماشین های مجازی کارایی خوبی دارند، می توانند باعث صرفه جویی بسیاری شوند، و تعمیر و نگهداری را آسان تر می کنند. بدین صورت که سرور شما مشکل دار می شود، به یک Snapshot جدید باز می گردید و حال سرور به روال فعالیت خود ادامه می دهد.

ولی کانتینر ها چه؟ آنها نیز آنچنان جدید نیستند (chroot در اواخر دهه 1970 پا به عرصه گذاشت)، با این حال تنها اخیرا مورد توجه جمعیت فعال در عرصه فناوری اطلاعات قرار گرفته اند. دلیل خوبی پشت این توجه قرار گرفته است: آنها مقرون به صرفه هستند، کارایی ساده ای دارند، بسیار قابل گسترشند، قابل جابه‌جایی اند، و شرکت ها را قادر می سازند خدمات خود را گسترش دهند.

سوال مهم در اینجا بسیار ساده است: شما از کدام یک باید استفاده نمایید؟ پاسخ ممکن است خیلی شفاف نباشد. خوشبختانه، من می توانم به شما در زدودن پیچیدگی های هر دو تکنولوژی کمک نمایم تا شما به راحتی قادر به انتخاب باشید. من این کار را بوسیله تشریح یک مورد که نیاز به ماشین مجازی دارد و تشریح یک مورد دیگر که نیاز به کانتینر دارد، انجام خواهم داد. در آخر، شما تصمیم خواهید گرفت کدام یک مناسب نیازهای شما خواهد بود.

چرا ماشین مجازی؟

من بشخصه بصورت روزمره از ماشین مجازی استفاده می کنم. چرا؟ آنها فرایند تست را شدیدا ساده می نمایند. یک ماشین مجازی جدید می سازم، هر سیستم عاملی که نیاز دارم روی آن نصب می کنم، و مشغول کار می شوم. من به این روال علاقه دارم، چرا که دقیقا می دانم چه چیزی عایدم می گردد و نیاز به زمان بسیار کمی جهت راه اندازی و اجرای آن دارم. فرآیند آن آشناست، پیچیدگی یادگیری کمی دارد، و در خصوص اینکه با کدام یک کار کنم، اطمینان کاملی به من می دهد. به کمک VirtualBox، می توانم یک ماشین مجازی را عینا کپی نموده یا Snapshot هایی از آن بگیرم که به من اجازه می دهند بعدا دقیقا به همان نقطه از فعالیت آن ماشین بازگردم.

ماشین های مجازی همچنین به من قدرت تجمیع نرم افزارها در یک ماشین را نیز می دهند. به بیانی دیگر، من می توانم یک سرور Ubuntu (اوبونتو) آماده نمایم (با اطمینان اینکه منابع کافی در اختیار آن گذاشته باشم) و هرچندتا و تمام سرویس هایی که نیاز دارم را بر روی آن نصب نمایم. اگر یکی از پیاده سازی ها نیازمند LAMP به طور کامل باشد، و بعد از پیاده سازی به سرویس دیگری (مثل FTP، سرور ایمیل، و غیره) نیاز شد، تمام کاری که نیاز است انجام دهم نصب آن سرویس روی ماشین مجازی مورد نظر است و پس از آن کار من انجام شده است. با این سیستم، من می توانم یک پلتفرم متصل و همجوار داشته باشم که تمام سرویس های مورد نیاز من را دارا می باشد. و احتمالا این یکی از بزرگترین دلایلی است که شما را از کانتینر به سمت ماشین مجازی سوق خواهد داد.

ماشین های مجازی هنگامی کاملا موجه می باشند که شما دارای یک سرور میزبان می باشید و سرور شما توانایی هندل نمودن بار چندین ماشین مهمان را داراست و شما باید بدانید، در هر لحظه که به مشکلی برخوردید، می توانید یک Snapshot از میزبان را در مدار قرار دهید.

چرا کانتینر؟

و حالا ما تکنولوژی ای داریم که در حال حاضر همه توجه ها را به خود جلب نموده است. کانتینرها می توانند زندگی را راحت کنند، بخصوص زمانی که شما بخواهید چند نسخه از یک نرم افزار (یا سرویس) را پیاده سازی نمایید. پس شما به راه اندازی بیش از یک سرور Apache یا NGINX نیاز دارید؛ کانتینرها می توانند در اینجا بسیار بهتر از ماشین های مجازی عمل نمایند. به این دلیل که شما دارید سرویس های منفردی را پیاده سازی می نمایید (در مقایسه با یک سرور کاملا تنظیم شده)، کانتینرها به اندازه یک ماشین مجازی، نیازمند به سخت افزار نخواهند بود. پیاده سازی چند وب سرور توسط کانتینرها به طرز قابل توجهی سخت افزار کمتری طلب می نماید تا توسط یک ماشین مجازی.

با این وجود، نیازمندی به سخت افزار تنها فاکتور در بخش کانتینرها نیست. به کمک همترازهای حالت پرازدحام (swarm mode – قابل مشاهده در موتور Docker)، ساخت دسته ای از موتورهای Docker (یکی از برندهای معروف کانتینر ها – مترجم) و مدیریت آنها بصورت یک سیستم مجازی و منفرد نیز امکان پذیر است. یک Docker swarm، ویژگی های پایایی و بازیابی خطا بدون وقفه سرویس (High availability – failover) را نیز به مجموعه اضاف می نماید؛ یعنی، هنگامی که می خواهید در مقیاس زیاد (و به سادگی) پیاده سازی نمایید، احتمالا دوست داشته باشید با کانتینرها کار نمایید.

ساده تر از آن بود که تصور می کردید؟

در این مقطع، احتمالا فکر می کنید که انتخاب بسیار آسانی بود نسبت به آنچه فکر می کردم. شما در این مورد درست فکر می کنید و انتخاب می تواند به این لیست دوتایی خلاصه شود:

  • آیا نیاز به یک پلتفرم کامل دارید که بتواند چندین سرویس را در خود جای دهد؟ بروید به سمت ماشین مجازی
  • آیا نیاز به یک سرویس تنها دارید که بتواند در مقیاس گروه درآید و گروهی پیاده سازی شود؟ با کانتینرها همراه شوید.

نظر مترجم: اکثر اوقات برای متولیان سرور، و نه مصرف کنندگان، سناریو به این صورت می بایست باشد که موتور کانتینرها روی یک ماشین مجازی نصب گردد و از امکانات هردو بهره جست.