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

شبیه سازی (emulation) و مجازی سازی (virtualization) هر دو یک هدف را دنبال می‌کنند، اجرا کردن سیستم عاملی متفاوت و مجزا درون یک ماشين مجازی. اما هر کدام از آنها این کار را به شیوهای متفاوت انجام می‌دهد و وقتی این امکان وجود داشته باشد، مجازی سازی بسیار سریعتر عمل می‌کند. از طرفی فناوری متفاوت دیگری به نام داکر وجود دارد که میتواند تحت شرایطی بسیار بهتر عمل کند.معمولا وقتی قرار باشد دو فناوری یکسان را با هم مقايسه کنیم، وضعیت عملکرد اولین مولفه‌ای است که باید در نظر گرفته شود. شبیه سازی (emulation) و مجازی سازی (virtualization) دو فناوری متفاوت هستند که یک هدف را دنبال می‌کنند، اما شبیه سازی بسیار کندتر از مجازی سازی است و همه اینها به بهینه سازی‌های سخت افزاری بازمی‌گردد.شبیه سازی (emulation)شبیه سازی ابتدایی‌ترین شکل اجرای یک اپلیکیشن در یک میزبان از پیش در نظر گرفته نشده است. یک شبیه ساز دستوراتی را که برای سیستم هدف در نظر گرفته شده را می‌گیرد و آنها را به چیزی قابل فهم و اجرا برای کامپیوتر میزبان تبدیل می‌کند. معمولا این شامل الگوبرداری از کدگذاری‌ها و رجیسترهای پردازنده مرکزی است. یک مثال خوب در این زمینه شبیه سازی بازی‌های قدیمی‌ مثل Nintendo N64 روی یک کامپیوتر شخصی مدرن است. کامپیوتر شخصی نمی‌تواند بازی‌های N64 را مستقیما اجرا کند، اما شبیه ساز قادر است دستورالعمل‌های مربوط به N64 را گرفته و تا حد ممکن آن را برای کامپیوتر آماده سازی کند.هر چند این‌گونه رواج پیدا کرده است که مفهوم شبیه سازی بیشتر برای شبیه سازی بازی‌های ویدیویی به کار برده می‌شود، اما برای اپلیکیشن‌های تجاری هم می‌توان از آن استفاده کرد. برای مثال فرض کنید شما یک نرم افزار قدیمی‌ در اختیار دارید که استفاده از آن برای شما ضروری است و تنها در یک سیستم قدیمی‌ مثل محیط DOS اجرا می‌شود. اجرای این نرم افزار روی یک شبیه ساز موجود در یک میزبان جدید اغلب می‌تواند ساده‌تر از اجرای آن روی یک ماشين مربوط به همان زمان باشد. همچنین می‌توان با یک نرم افزار یک قطعه سخت افزار قدیمی‌ مثل کنترلرهای شبکه را شبیه سازی کرد.با این وجود، شبیه سازی می‌تواند کند باشد. یک مورد استفاده بسیار رایج اجرای چند ماشین مجازی لینوکس روی یک سیستم عامل میزبان است. وقتی ماشین مجازی همان ماشین میزبان است، شبیه سازی تمام پردازنده مرکزی بسیار کندتر از زمانی است که به صورت عادی اجرا می‌شود.بنابراین به جای این کار، اکثر ماشین‌های مجازی از فناوری مجازی سازی بهینه شده سخت افزاری استفاده می‌کنند. در اینتل، این فناوری Intel-VT نامگذاری شده است و در AMD نام آن AMD-V است. هر دو فناوری برای مجازی سازی اپلیکیشن‌های x86 یک هدف یکسان را دنبال می‌کنند. اگر از یک کامپیوتر دسکتاپ استفاده می‌کنید، باید از طریق تنظیمات BIOS این گزینه‌ها را فعال کنید زیرا آنها در حالت پیش فرض غیرفعال هستند.مجازی سازی (virtualization)مجازی سازی اغلب در ترکیب با یک Hypervisor استفاده می‌شود که یک سیستم عامل مرکزی است که چندین سرور خصوصی مجازی را مدیریت می‌کند. اگر شما از یک شرکت خدمات دهنده ابر مثل AWS یک VPS اجاره کرده باشید، احتمالا روی یک hypervisor مثل Nitro, Proxmox یا Hyper-V در حال اجرا است. hypervisorهای مدرن می‌توانند به عملکردی بسیار نزدیک به یک سیستم اصلی دست پیدا کنند.مجازی سازی تقریبا همیشه بهتر عمل می‌کند اگر شما یک معماری یکسان را مجازی کرده باشید. برای مثال، CPUهای x86 از AMD و اینتل قادر خواهند بود تا سیستم عامل‌های x86 را مثل یک ویندوز و لینوکس استاندارد شبیه سازی کنند. این در حالی است که از لحاظ فنی برای یک پردازنده ARM این امکان وجود ندارد تا یک پردازنده x86 را مجازی سازی کند.در موارد کاربردی مثل مک بوک‌های ARM شرکت اپل که از پردازنده‌های اختصاصی M1 خود استفاده می‌کنند این موضوع می‌تواند مشکل ساز باشد. در این‌گونه موارد از مجازی سازی سیستم عامل‌های x86 پشتیبانی نخواهد شد. هر چند شما همچنان می‌توانید با استفاده از برنامه‌هایی مثل Parallels سایر سیستم عامل‌ها را اجرا کنید، اما این روش بسیار کندتر و هم ردیف با شبیه سازی خواهد بود.در نهایت، اگر قصد اجرای یک برنامه از سیستم عامل دیگری را دارید، برای دسترسی به سرعتی تقريبا برابر با یک سیستم مستقل بهتر است این کار را با استفاده از نوعی مجازی سازی انجام دهید.استفاده از داکر تا چه میزان راه‌گشا است؟داکر امکان اجرای کانتینرهای اپلیکیشن‌ها را فراهم می‌کند که پکیج‌های محصور شده‌ای هستند که تمام کدهای مورد نیاز برای اجرای یک اپلیکیشن را در خود دارند. این شیوه بسیار امن است، یک ماشين میزبان می‌تواند چند کانتینر داکر را بدون نگرانی از تداخل آن با سایر بخش‌ها اجرا کند.از بسیاری جهات، داکر به همان هدف اصلی یعنی اجرای چندین برنامه در ماشین‌های مجازی خصوصی لینوکس دست می‌یابد، اما در باطن کارها را کمی‌ متفاوت انجام می‌دهد. داکر از شبیه سازی یا مجازی سازی استفاده نمی‌کند، بلکه تمام کدها را مستقیما و بدون سربار اضافی مجازی سازی روی پردازنده مرکزی و سیستم میزبان اجرا می‌کند. به منظور محصور کردن کانتینرها به طور هوشمندانه‌ای از فضای نام لینوکس به همراه سایر قابلیت هایی که می‌تواند فرآیندهای ایزولاسیون را در خود کانتینر انجام دهد استفاده می‌شود.این فناوری سیستمی‌ را پدید می‌آورد که می‌تواند چندین اپلیکیشن را در کنار یکدیگر بر روی یک سیستم عامل میزبان بدون اتلاف منابع برای یک سیستم عامل جداگانه برای هر سرور خصوصی مجازی اجرا کند. برای یک خدمات دهنده مثل AWS این باعث صرفه جویی زیادی در هزینه‌ها خواهد شد.اگر به دنبال مجازی سازی هستید، اما از عواقب تاثیر آن روی وضعیت عملکرد نیز نگرانی دارید، فناوری داکر می‌تواند پاسخگوی نیاز شما باشد.