Apa itu Virtual Machine (VM)?
Virtual machine (VM) adalah sebuah sistem operasi (OS) atau lingkungan aplikasi yang diinstal di atas perangkat lunak dan meniru perangkat keras fisik. Dari sisi pengguna, pengalaman menggunakan VM terasa seperti menggunakan perangkat keras asli.
Bagaimana Cara Kerja VM?
VM menyediakan lingkungan terisolasi untuk menjalankan OS dan aplikasinya sendiri, terpisah dari sistem host di bawahnya atau dari VM lain di host yang sama. OS yang dijalankan dalam VM, biasanya disebut sebagai guest OS, bisa sama atau berbeda dengan OS host maupun OS VM lain.
Satu komputer bisa meng-host beberapa VM yang menjalankan OS dan aplikasi berbeda tanpa saling mengganggu. Walaupun tetap bergantung pada sumber daya fisik host, sumber daya ini telah di-virtualisasi dan didistribusikan ke masing-masing VM, serta bisa diatur ulang sesuai kebutuhan. Ini memungkinkan banyak lingkungan berjalan bersamaan dan bisa menyesuaikan dengan perubahan beban kerja.
Dari sudut pandang pengguna, VM terasa seperti menggunakan mesin fisik langsung. Biasanya, pengguna yang terhubung ke VM bahkan tidak sadar kalau mereka memakai lingkungan virtual. Pengguna tetap bisa mengonfigurasi dan memperbarui guest OS dan aplikasinya, serta menginstal atau menghapus aplikasi baru tanpa memengaruhi host atau VM lainnya. Sumber daya seperti CPU, memori, dan penyimpanan tampil seperti di komputer fisik, walaupun terkadang bisa ada glitch kecil, misalnya ada aplikasi yang tidak bisa dijalankan di lingkungan virtual.
Peran Hypervisor dalam Virtualisasi
Untuk meng-host VM di sebuah komputer, dibutuhkan jenis perangkat lunak khusus yang disebut hypervisor. Hypervisor bertugas mengelola sumber daya dan mendistribusikannya ke VM. Hypervisor juga mengatur dan menyesuaikan distribusi sumber daya sesuai konfigurasi hypervisor dan VM, termasuk mengalokasikan ulang sumber daya saat kebutuhan berubah.
Hypervisor memvirtualisasi CPU, memori, hard disk, jaringan, dan sumber daya perangkat keras lainnya, lalu membuat pool sumber daya yang dibagikan ke masing-masing VM sesuai kebutuhan mereka. Hypervisor bisa mendukung berbagai platform virtual yang terisolasi, sehingga memungkinkan VM menjalankan OS Linux dan Windows Server di host fisik yang sama.
Sebagian besar hypervisor tidak membutuhkan komponen perangkat keras khusus. Tapi, komputer yang menjalankan hypervisor harus memiliki sumber daya yang cukup untuk mendukung operasi hypervisor, VM, dan operasi host itu sendiri.
Hypervisor biasanya dibagi menjadi dua kategori: tipe 1 dan tipe 2.
Hypervisor Tipe 1
Juga dikenal sebagai bare-metal hypervisor, hypervisor tipe 1 berjalan langsung di atas perangkat keras host dan punya akses langsung ke sumber daya fisiknya. Tipe ini biasanya dipasang di server dan dianggap lebih efisien serta punya performa lebih baik dibanding tipe 2, sehingga cocok buat virtualisasi server, desktop, dan aplikasi. Contoh hypervisor tipe 1 adalah Microsoft Hyper-V dan VMware ESXi.
Hypervisor Tipe 2
Disebut juga hosted hypervisor, hypervisor tipe 2 diinstal di atas OS host. OS host bertugas mengelola panggilan ke perangkat keras. Hypervisor tipe ini biasanya dipakai di sistem end-user untuk kasus spesifik, misalnya buat developer yang butuh lingkungan tertentu untuk membangun aplikasi, atau data analyst yang mau ngetes aplikasi dalam lingkungan terisolasi. Contohnya adalah VMware Workstation dan Oracle VirtualBox.
VM Proses vs. VM Sistem
VM biasanya dikategorikan berdasarkan tipe hypervisor atau jenis beban kerja yang mereka dukung. Tapi, VM juga bisa dikategorikan sebagai VM proses atau VM sistem.
VM Proses
VM proses adalah lingkungan pemrograman sementara dan platform-independen untuk menjalankan satu proses sebagai aplikasi. Lingkungan ini menyediakan abstraksi tingkat tinggi yang menyembunyikan perangkat keras atau OS di bawahnya. VM proses dibuat saat proses dijalankan dan dihancurkan saat proses selesai. Contoh umumnya adalah Java virtual machine yang menjalankan program Java, dan Common Language Runtime dalam .NET Framework milik Microsoft.
VM Sistem
VM sistem adalah lingkungan virtualisasi penuh yang dijalankan di server fisik dan memiliki OS-nya sendiri. VM ini berbagi sumber daya fisik host, tapi menyediakan lingkungan lengkap untuk menjalankan aplikasi dan layanan, seperti halnya mesin fisik tanpa overhead tambahan. VM sistem menggunakan hypervisor untuk memvirtualisasi sumber daya perangkat keras dan membuatnya tersedia untuk lingkungan VM. Contohnya termasuk VM di platform seperti VMware vSphere dan Microsoft Hyper-V.
Manfaat Menggunakan VM
Walaupun teknologi modern seperti container berpengaruh terhadap penggunaan VM, organisasi dari berbagai skala tetap banyak memakai VM karena berbagai keuntungannya. VM memudahkan pengelolaan banyak lingkungan OS berbeda, serta menyederhanakan backup, pemulihan bencana, deployment baru, dan administrasi sistem dasar.
Biaya Lebih Rendah dan Efisiensi Lebih Baik
Virtualisasi mengurangi biaya karena mengurangi kebutuhan perangkat keras fisik. Karena VM membantu organisasi mengonsolidasikan server dan memanfaatkan sumber daya lebih baik dibandingkan penggunaan bare-metal, VM banyak digunakan di data center untuk mendukung berbagai use case dan beban kerja.
Menjalankan banyak VM di satu server mengurangi kebutuhan akan banyak server fisik, yang sering kali hanya beroperasi di bawah kapasitas. Ini menurunkan biaya modal dan operasional karena mengurangi biaya maintenance dan kebutuhan daya serta pendinginan.
Manajemen dan Administrasi IT yang Lebih Mudah
Organisasi sering memakai VM untuk menjalankan berbagai aplikasi yang membutuhkan OS atau kekuatan pemrosesan berbeda. Contohnya, menjalankan aplikasi lama bersamaan dengan workload baru, testing banyak web server dan database kecil, atau memakai server yang sama untuk aplikasi game berat dan database customer service. Tim DevOps juga sering menggunakan VM dalam pipeline CI/CD.
VM menyediakan lingkungan terisolasi dan mandiri, yang bisa dengan cepat dikelola dari antarmuka pusat pada sebagian besar platform virtualisasi, bahkan kalau VM tersebut tersebar di beberapa host.
Skalabilitas dan Fleksibilitas Lebih Tinggi
VM memudahkan skalabilitas aplikasi dan penyesuaian beban kerja. Ini sebabnya virtualisasi berperan penting dalam cloud computing dan sistem seperti hyper-converged infrastructure (HCI). Tim IT bisa memindahkan, menyalin, atau mengatur ulang VM antar server host dan antara lingkungan on-premises dan cloud.
Selain meningkatkan penggunaan sumber daya perangkat keras, ini juga membuat aplikasi lebih fleksibel tanpa harus bergantung pada hardware khusus untuk hypervisor.
Keamanan Lebih Kuat
VM juga menawarkan lapisan keamanan tambahan. Karena VM berjalan di lingkungan terisolasi, serangan siber yang menyerang satu VM tidak otomatis menyebar ke host atau VM lain.
Selain itu, VM mendukung fitur seperti snapshot dan backup, sehingga admin bisa dengan mudah menghapus, mengembalikan, atau melakukan rollback VM yang terkompromi.
Perbandingan VM dan Container
Container mirip dengan VM, tetapi hanya memvirtualisasi sistem operasinya saja, bukan seluruh perangkat keras di bawahnya.
Container berisi kode, alat sistem, runtime, library sistem, dan pengaturan yang diperlukan untuk menjalankan aplikasi yang dikontainerisasi. Karena itu, container sering dipakai untuk berbagai aplikasi yang berjalan di OS yang sama.
Container juga digunakan untuk aplikasi cloud-native yang terdistribusi dan untuk membungkus aplikasi lama agar lebih portabel dan mudah dideploy. Salah satu platform container yang paling terkenal adalah Docker.
Kelebihan dan Kekurangan Kontainer vs. VM
VM di atas host fisik bisa mengkonsumsi sumber daya dengan tidak merata: Ada VM yang mungkin menghabiskan banyak penyimpanan fisik yang tersedia, sementara VM lain hanya menggunakan sedikit. Karena itu, profesional IT harus menyeimbangkan penggunaan VM dengan sumber daya yang ada, walaupun platform virtualisasi sekarang cukup mempermudah proses ini.
Kontainer punya overhead yang lebih rendah dibandingkan VM, sehingga lebih ringan dan lebih cepat untuk dijalankan. Kontainer cocok banget untuk aplikasi yang perlu dideploy dengan cepat dan skalanya bisa berubah-ubah secara dinamis. Selain itu, kontainer juga mendorong pemanfaatan sumber daya yang lebih efisien, karena banyak kontainer bisa berjalan di atas kernel OS yang sama tanpa perlu overhead dari banyak instance OS penuh.
Tapi, kontainer juga punya kelemahan dari sisi isolasi. Karena kontainer berbagi kernel OS yang sama, kalau ada celah keamanan atau kesalahan konfigurasi, bisa saja berdampak ke kontainer lain atau bahkan ke sistem host-nya. Sedangkan VM punya isolasi yang lebih kuat karena masing-masing VM menjalankan OS-nya sendiri.
Biasanya, organisasi menggabungkan penggunaan kontainer dan VM sekaligus. Misalnya, sebuah VM digunakan untuk menghosting runtime kontainer dan mengelola beberapa kontainer di dalam lingkungan tersebut. Pendekatan ini menggabungkan isolasi kuat dari VM dengan sifat kontainer yang ringan dan mudah diskalakan.
Use Case VM
Organisasi menggunakan VM untuk berbagai macam kebutuhan, seperti:
- Konsolidasi server: Menjalankan banyak aplikasi server di lebih sedikit mesin fisik untuk mengoptimalkan penggunaan sumber daya.
- Pemulihan bencana dan backup: Menggunakan snapshot dan backup VM untuk memulihkan sistem dan data dengan cepat setelah terjadi gangguan atau serangan.
- Testing dan development: Membuat lingkungan pengujian yang terisolasi tanpa perlu hardware fisik baru.
- Isolasi aplikasi: Menjalankan aplikasi lawas atau aplikasi yang tidak kompatibel di lingkungan virtualnya sendiri supaya tidak bentrok dengan sistem lain.
- Cloud computing: Menjadi kekuatan di balik public cloud, private cloud, dan hybrid cloud, di mana sumber daya bisa diprovisikan dan dikelola sebagai VM.
Meskipun sekarang muncul teknologi baru seperti kontainer dan serverless computing, VM tetap punya peran penting dalam infrastruktur IT modern. Kemampuannya untuk menyediakan lingkungan yang terisolasi, fleksibel lintas banyak OS, dan keamanannya yang lebih kuat membuat VM tetap relevan di banyak industri dan aplikasi.