
Apa perbedaan utama antara virtualisasi dan containerisasi, dan untuk apa masing-masing teknologi digunakan?
Virtualisasi (VM). Mesin virtual adalah abstraksi perangkat keras fisik — mengubah satu server menjadi banyak server. Hypervisor berada di antara host dan VM, menyatukan CPU, memori, dan penyimpanan. Setiap VM menyertakan salinan lengkap OS tamu, ditambah aplikasi dan semua perpustakaan. Hypervisor (VMM) menerapkan isolasi, dan batasannya dibantu oleh perangkat keras oleh ekstensi virtualisasi CPU (Intel VT-x / AMD-V).
Hypervisor hadir dalam dua jenis:
- Tipe 1 (bare-metal): berjalan langsung di perangkat keras; contoh bersih adalah VMware ESXi/vSphere, Microsoft Hyper-V, dan Xen. KVM adalah kasus hibrid: modul kernel Linux yang mengubah kernel menjadi hypervisor Tipe 1 sementara host masih menjalankan proses biasa.
- Tipe 2 (dihosting): berjalan sebagai aplikasi pada OS konvensional (VirtualBox, VMware Workstation); cocok untuk mesin pribadi.
Containerization. Sebuah container mengemas kode dan semua dependensinya (runtime, pustaka, pengaturan) dan memvirtualisasikan sistem operasi, bukan perangkat keras. Kontainer berbagi kernel OS host dan dijalankan sebagai proses terisolasi di ruang pengguna. Di Linux, hal ini menggunakan namespace (isolasi) dan cgroups (penghitungan dan batasan sumber daya), yang diperkuat lebih lanjut dengan kemampuan, seccomp, MAC (SELinux/AppArmor), namespace pengguna, dan mode tanpa root. Berbagi kernel menyiratkan kompatibilitas keluarga OS: Kontainer Linux memerlukan kernel Linux, sehingga Docker Desktop di Windows/macOS secara diam-diam menjalankan VM Linux yang ringan. Docker mempopulerkan container, tetapi formatnya distandarisasi oleh OCI; runtime lain juga ada — containerd, CRI-O, Podman.
Perbedaan utama:
- Ukuran: gambar kontainer biasanya berukuran beberapa MB hingga ratusan MB; VM adalah GB (urutan besarnya ilustratif, bukan angka tetap).
- Startup: container dimulai dalam hitungan detik/milidetik; VM harus mem-boot OS lengkap.
- Overhead: container tidak memerlukan OS terpisah per aplikasi — kepadatan lebih tinggi, biaya lisensi lebih rendah.
- Isolasi/keamanan: VM menawarkan isolasi berbasis perangkat keras yang lebih kuat; container menawarkan isolasi berbasis perangkat lunak yang lebih lemah (risiko pelepasan container dari kernel bersama). Jalan tengahnya adalah runtime sandbox (gVisor, Kata Containers, Firecracker) yang mendekati isolasi tingkat VM.
Kegunaan masing-masing:
- VM: menjalankan OS berbeda di satu server, beban kerja intensif sumber daya atau monolitik, dan isolasi kuat (multi-tenancy, aplikasi lama).
- Container: pengembangan cloud-native, layanan mikro, CI/CD, portabilitas, dan penskalaan horizontal cepat (diselenggarakan oleh Kubernetes).
Dalam praktiknya, keduanya saling melengkapi: container sering kali dijalankan di dalam VM untuk menggabungkan pengiriman tangkas dengan isolasi yang kuat.
