خب، بیا یه کم بریم به گذشتههای دور، زمانی که اولین کامپیوترها تازه متولد شده بودن. اون زمانا، هر کامپیوتر فقط میتونست یه کار خاص انجام بده و اگر میخواستی کار دیگه ای انجام بدی، باید کل سیستم رو تغییر میدادی. تصور کن که هر بار که میخواستی یه بازی جدید بازی کنی، مجبور بودی کامپیوترت رو از نو بسازی! این یه مشکل خیلی بزرگ بود. اما بعد یه اتفاق جالب افتاد؛ آدمای خلاق به فکر افتادن که چطور میشه این مشکل رو حل کرد. اینجا بود که ایده ماشینهای مجازی به وجود اومد.
اگه ماشینهای مجازی نبودن باید برای هر کاری یه کامپیوتر جدا میخریدیم. مثلاً یه کامپیوتر فقط برای دیدن فیلم، یه کامپیوتر برای بازی کردن و یه کامپیوتر برای کار کردن. جابجا کردن این همه کامپیوتر خیلی خسته کننده میشد، نه؟ و این فقط یه قسمت کوچیک از ماجراست. بدون ماشینهای مجازی، توسعه دهندگان نرم افزار باید برای هر نوع سیستم عاملی یه نسخه جدا مینوشتن که خیلی زمان بر و پرهزینه بود.
ماشینهای مجازی (VM) انواع و اقسام مختلفی دارن و خوشبختانه خیلی هاشون رایگان و متن باز هستن.
ماشین مجازی میتونه به شکلهای مختلفی ظاهر بشه؛ از زیرساخت دسکتاپ مجازی گرفته تا زمان اجرای برنامه ها، یا حتی یک سرور کامل و سیستم پشتیبان گیری. ماشینهای مجازی به بخش مهمی از دنیای کامپیوتر تبدیل شدن. این ابزارها به ویژه برای کسب وکارهایی که برنامههای ابری اجرا میکنن و همین طور کاربران خانگی خیلی ضروری هستن. مهمترین کارکرد ماشین مجازی اینه که به کاربران اجازه میده چندین سیستم عامل رو اجرا کنن.
چرا اجرای سیستم عاملهای مختلف این قدر مهمه؟ چون با این کار میتونی تعداد زیادی برنامه رو بدون نگرانی از نیازهای سیستم اجرا کنی. البته، انتخاب ماشین مجازی مناسب میتونه تفاوت زیادی ایجاد کنه.
مجازی سازی یعنی ساختن نسخههای مجازی از چیزهایی مثل حافظه، ذخیره سازی، یا سیستم عامل. به جای استفاده از خود این منابع به صورت فیزیکی، یه نرم افزار میاد و این منابع رو به صورت مجازی شبیه سازی میکنه. اینجوری میتونی با یه کامپیوتر، چندین کامپیوتر مجازی داشته باشی. انگار که داری با یه دستگاه چند تا دستگاه مختلف رو شبیه سازی میکنی.
مجازی سازی دو بخش داره:
توی دیتاسنترها، تعداد ماشینهای مجازی که اجرا میشن میتونن به صدها یا حتی هزارها برسن. به همین خاطر، خیلی مهمه که یه دید کلی از محیط مجازی سازی داشته باشیم تا بتونیم بفهمیم سیستم چطور کار میکنه و آیا همه چیز رو به راهه یا نه.

ماشین مجازی یا VM (Virtual Machine) یه نرم افزار هست که نقش یک کامپیوتر واقعی رو بازی میکنه. به این صورت که شما میتونید توی یه کامپیوتر فیزیکی، چندین کامپیوتر مجازی داشته باشید که هر کدوم سیستم عامل و نرم افزارهای خودشون رو دارن. اینجوری میتونید چندین پروژه مختلف رو روی یه دستگاه اجرا کنید، بدون اینکه نیاز باشه سخت افزارهای زیادی بخرید.
در دهه ۱۹۶۰، شرکت IBM اولین بار از ماشینهای مجازی رونمایی کرد. اونا فهمیدن که با استفاده از ماشینهای مجازی، میتونن کارایی سرورهاشون رو بالا ببرن و به جای استفاده از چندین کامپیوتر مختلف، از یه کامپیوتر برای چندین کاربرد مختلف استفاده کنن. این یه انقلاب بزرگ تو دنیای فناوری اطلاعات بود.
توی دیتاسنترها، تعداد ماشینهای مجازی که اجرا میشن میتونن به صدها یا حتی هزارها برسن. به همین خاطر، خیلی مهمه که یه دید کلی از محیط مجازی سازی داشته باشیم تا بتونیم بفهمیم سیستم چطور کار میکنه و آیا همه چیز رو به راهه یا نه.
مجازی سازی کلی ویژگی خفن داره که کارمون رو خیلی راحتتر میکنه. بیا با هم یه نگاه بندازیم:
اولش، مجازی سازی بیشتر برای سرورها استفاده میشد، اما این روش اونقدر محبوب شد که به جاهای دیگه هم گسترش پیدا کرد. بیا چند مورد رو بررسی کنیم:
خب، مجازی سازی تو دنیای رایانش ابری نقش خیلی مهمی داره. به طور کلی، وقتی از رایانش ابری استفاده میکنی، کاربران دادهها و برنامههای موجود تو ابر رو به اشتراک میذارن. ولی در واقع با کمک مجازی سازی، کاربران زیرساختها رو به اشتراک میذارن.
برای اینکه بفهمی مجازی سازی چطور کار میکنه، بیا با هم مراحلش رو مرور کنیم. این مراحل کمک میکنن تا منابع فیزیکی به صورت مجازی در بیان و به چندین محیط مختلف اختصاص داده بشن.
مجازی سازی به دلایل مختلفی خیلی اهمیت داره. با هم نگاهی به مهمترین مزایای اون بندازیم. این مزایا باعث میشن که مجازی سازی یه ابزار قدرتمند برای بهینه سازی و مدیریت بهتر منابع باشه.
"مجازی سازی یکی از قدرتمندترین ابزارهایی است که تا به حال در دنیای فناوری اطلاعات معرفی شده است." - مارک زاکربرگ
ابزارهای مختلفی برای مجازی سازی وجود داره که توسعه دهندهها میتونن ازشون استفاده کنن. این ابزارها هر کدوم ویژگیهای خاص خودشون رو دارن و برای نیازهای مختلف توسعه دهندهها طراحی شدن. بیاید با هم پنج تا از بهترینها رو بررسی کنیم.
وگرانت یه ابزار مجازی سازی منبع بازه که توسط HashiCorp توسعه داده شده و به زبان روبی نوشته شده. ولی میتونی تو پروژه هایی که با زبانهای دیگه مثل PHP، Python، Java، C# و JavaScript هم کار میکنی ازش استفاده کنی. این ابزار که روی خط فرمان کار میکنه، یه چارچوب و فرمت تنظیمات برای ساخت، مدیریت و توزیع محیطهای توسعه مجازی فراهم میکنه. این محیطها میتونن روی کامپیوترت یا توی ابر زندگی کنن و بین لینوکس، مک او اس ایکس و ویندوز قابل حمل باشن.

ویژگی ها:
مایکروسافت Hyper-V رو تو سال 2016 معرفی کرد. Hyper-V یه نرم افزار مجازی سازیه که میتونه سیستم عاملها و حتی کل قطعات سخت افزاری مثل هارد درایوها و سوئیچهای شبکه رو مجازی سازی کنه. برخلاف ابزارهای دیگه، Hyper-V محدود به دستگاه کاربر نیست و میتونی ازش برای مجازی سازی سرورها هم استفاده کنی.

ویژگی ها:
این سیستم توسط Red Hat Software توسعه داده شده و به زبان جاوا نوشته شده. اولین نسخه اش تو ژوئن 2010 منتشر شد. Red Hat Enterprise Virtualization یا RHEV یه سرور مدیریت مرکزی بر اساس RHEL با رابط کاربری وبی برای مدیریت ماشینهای مجازی ارائه میده.

ویژگی ها:
با کمک این سیستم میتونی چندین سیستم عامل رو اجرا کنی. این سیستم برای کاربرانی که از لینوکس یا ویندوز استفاده میکنن مناسبه و مخصوص توسعه دهندهها و متخصصان IT طراحی شده.
ویژگی ها:
VMware Fusion یه اپلیکیشن ساده برای کاربران مک اینتلی هست که اجازه میده یه ماشین مجازی ویندوز روی مک راه اندازی کنن. علاوه بر ویندوز، میتونی لینوکس، NetWare و Solaris رو هم نصب کنی. این ابزار برای کاربرهای خونگی و حرفه ایها مناسبه.

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

نه لزوماً. در واقع، یکی از مزایای مجازی سازی اینه که میتونی از منابع موجودت بهینهتر استفاده کنی. یعنی به جای اینکه چندین دستگاه فیزیکی داشته باشی، میتونی با یه دستگاه چندین ماشین مجازی داشته باشی و منابع رو بین اونها تقسیم کنی.
بله، مجازی سازی میتونه به افزایش امنیت کمک کنه. مثلاً میتونی یه محیط مجازی جدا برای تست برنامهها داشته باشی تا در صورت بروز مشکل، سیستم اصلیت آسیب نبینه.
برای مدیریت ماشینهای مجازی ابزارهای مختلفی مثل VMware، Hyper-V و VirtualBox وجود دارن. این ابزارها رابط کاربری ساده ای دارن که بهت کمک میکنن ماشینهای مجازی رو بسازی، تنظیم کنی و مدیریت کنی.
مجازی سازی ممکنه کمی از عملکرد سیستم رو بگیره، ولی با پیشرفتهای اخیر در تکنولوژی مجازی سازی، این کاهش عملکرد خیلی کمتر شده و در بیشتر موارد قابل چشم پوشیه.
برای شروع کار با مجازی سازی نیاز به کمی دانش فنی داری، ولی ابزارهای مختلفی وجود دارن که با رابطهای کاربری ساده بهت کمک میکنن تا به راحتی با مجازی سازی کار کنی. همچنین آموزشهای آنلاین زیادی هم وجود داره که میتونی از اونها استفاده کنی.
خب، تا اینجا کلی اطلاعات درباره مجازی سازی یاد گرفتیم. مجازی سازی یه تکنولوژی فوق العاده کاربردیه که بهت کمک میکنه از منابع سخت افزاریت بهتر استفاده کنی، هزینهها رو کاهش بدی و به راحتی سیستمهای مختلف رو مدیریت کنی. با استفاده از ابزارهایی مثل Vagrant، Hyper-V، RedHat Virtualization، VMware Workstation، VMware Fusion، VirtualBox، Docker و Parallels Desktop میتونی محیطهای مجازی رو بسازی و به راحتی از اونها استفاده کنی.
مجازی سازی بهت کمک میکنه که توی کارهای روزمره ات انعطاف پذیرتر باشی و بتونی بهتر به نیازهای متغیر پاسخ بدی. اگر تا حالا از مجازی سازی استفاده نکردی، همین حالا شروع کن و ببین که چقدر کارهات راحتتر و سریعتر پیش میره.
دوره الفبای برنامه نویسی با هدف انتخاب زبان برنامه نویسی مناسب برای شما و پاسخگویی به سوالات متداول در شروع یادگیری موقتا رایگان شد: