Container VS Virtual Machine – Setiap aplikasi yang dapat diakses oleh banyak orang atau yang berjalan dengan internet tentu saja membutuhkan server, network, infrastruktur hardware, sistem operasi, atau bahkan storage. Masa dewasa ini teknologi sudah semakin canggih dimana kita tidak perlu repot-repot menyiapkan atau membeli arsitektur sendiri untuk dapat menjalankan aplikasi. Kita dapat menyewa layanan virtualisasi komputer fisik pada provider-provider penyedia layanan tersebut seperti azure, aws, google cloud, dan lain sebagainya. Virtualisasi yang dimaksud dapat berupa arsitektur virtual machine maupun container.
Nah, pada kesempatan kali ini, kita akan membahas sedikit tentang apa itu virtual machine, container, dan apa saja sih perbedaan dari keduanya. Tentukan arsitektur untuk aplikasi anda yang sesuai, agar aplikasi anda dapat berjalan lebih efektif dan efisien dalam segi finansial kebutuhan pengembangan aplikasi.
Apa itu Virtual Machine?
Virtual Machine adalah sebuah emulasi dari sebuah sistem komputer. Virtual Machine dapat membuat kita membagi resource hardware dari satu hardware fisik menjadi beberapa sistem komputer. Virtual machine termasuk ilmu komputer yang mengimplementasikan perangkat lunak dari sebuah mesin komputer yang dapat menjalankan program sama seperti layaknya sebuah komputer asli. Mesin virtual menyediakan antarmuka yang identik dengan perangkat keras yang mendasarinya.
Virtual machine juga merupakan sebuah sistem operasi atau aplikasi yang diinstall pada hypervisor dan memiliki fungsi layaknya perangkat fisik (hardware) atau bisa juga disebut sebagai duplikat dari komputer asli.
Kelebihan dari virtual machine
- Familiar interface, lingkungan virtual dibangun untuk menyerupai lingkungan hardware fisik, anda tidak pernah tahu bahwa anda bekerja di mesin virtual.
- High Availability, Ketersediaan dan pemulihan aplikasi yang mudah.
- Scalability, mesin virtual memungkinkan skalabilitas sesuai dengan kebutuhan tanpa menambahkan sumber daya fisik.
- Backup with fast recovery, virtualisasi menawarkan solusi powerful untuk backup dan recovery.
- Easy cloning, melakukan cloning pada virtual mesin dan hanya membutuhkan beberapa klik saja dalam hitungan detik. Sementara cloning di physical machine dapat lebih rumit.
- Reduction of cost, menghemat pengeluaran biaya dengan menjalankan beberapa sistem operasi dalam satu mesin.
Fungsi dari virtual machine:
- Berganti ke versi sistem operasi yang lebih baru. Hal ini dilakukan untuk melakukan uji coba sebelum mengimplementasikan operating system ke komputer fisik.
- Virtualisasi dari dekstop sendiri, anda dapat menyimpan aplikasi dekstop dan sistem operasi mereka di mesin virtual (VM) terpisah di server dan menggunakan PC mereka sebagai “thin client” ke server.
- Melakukan pengujian dengan sistem operasi yang berbeda, anda dapat menginstall distribusi linux yang berbeda atau sistem operasi lain yang kurang dikenal dalam mesin virtual (VM) untuk melakukan eksperimen dan memahami cara kerjanya.
- Melakukan pengujian software pada banyak platform yang berbeda.
- Melakukan kompilasi server yang berbeda untuk penggunaan bisnis, bagi bisnis-bisnis dengan aplikasi yang berjalan pada beberapa server, server-server yang ada dapat dimasukkan kedalam mesin virtual (VM) dan dijalankan pada satu PC. Setiap mesin virtual (VM) terisolasi.
Apa itu Container?
Container adalah paket atau aplikasi yang mengandalkan isolasi virtual untuk menjalankan aplikasi yang dapat menjalankan sistem operasi kernel secara simultan tanpa memerlukan mesin virtual (VMs). Berbeda dengan virtual machine, container berupa virtualisasi OS yang dapat membungkus suatu aplikasi beserta dependency dan environtment-nya.
Selain itu, container merupakan suatu teknik yang dapat digunakan untuk menciptakan sistem yang terisolasi (isolated environtment) pada level OS yang dijalankan pada satu induk linux kernel (host).
Container menyediakan fleksibilitas secara keseluruhan dibanding kita menggunakan server fisik dan virtual machine. Container dapat langsung berjalan diatas sistem operasi (OS) tanpa menggunakan hypervisor. Container dapat membagi resource pada OS beserta fungsinya. hal ini sangat menguntungkan secara performa dan penggunaan resource dikarenakan aplikasi yang digunakan hanya menggunakan resource berdasarkan apa yang dipakai saja.
Lalu apa perbedaan virtual machine dan container?
Virtual machine dan container memanglah merupakan dua arsitektur yang berbeda. Pada virtual machine terdapat hypervisor pada arsitekturnya dan blok VM terdiri dari app, file lib dan binary serta seluruh bagian guest operating system. Sedangkan pada arsitektur container terdapat docker yang dapat digunakan untuk menjalankan docker container serta pada container terdiri dari app dan semua dependensinya. Berbeda dengan virtual machines, container berbagi kernel host operating system dengan container yang lain . Hal inilah yang mengakibatkan container memiliki ukuran yang lebih kecil jika dibandingkan dengan VM.
Selain itu, container tidak memiliki hak untuk mengakses kernel. Berbeda dengan VM yang memiliki kernel sendiri sehingga dapat dengan bebas mengaksesnya. Jika anda belum tau apa itu kernel, kernel adalah program komputer yang menjadi inti dari sebuah sistem operasi komputer, dengan kontrol terhadap segala hal atas sistem tersebut.
Secara mendasar, perbedaan antara container dengan virtual machine dapat dikategorikan menjadi:
1. Alokasi resource pada container dan virtual machine berbeda
Seperti yang kita ketahui bahwa virtual machine mengambil resource berdasarkan pengaturan yang sudah ditentukan saat instalasi. Alokasi ini bersifat terisolasi. Sebagai contoh VM 1 memiliki pengaturan RAM 2 GB dan kapasitas HDD 120 GB. Pada saat VM 1 dijalankan, VM 1 hanya dapat menggunakan RAM maksimal sebanyak 2GB. Dan hanya dapat digunakan oleh VM 1 saja. Sedangkan pada container, alokasi resource dapat dibagi langsung oleh host server itu sendiri. Container akan mengambil alokasi resource yang ada di hardware sesuai dengan yang container butuhkan.
2. VM membutuhkan Hypervisor sedangkan container tidak
Seperti yang dijelaskan sebelumnya, VM hanya dapat berjalan pada hypervisor. Sedangkan container tidak perlu. Hal inilah yang menjadi perbedaan dasar antara virtual machine dan container. container dapat berjalan langsung diatas sistem operasi. Sedangkan VM tidak.
3. Penggunaan kernel
Pada dasarnya, Virtual machine menggunakan kernel tersendiri untuk menjalankan aplikasi didalamnya. Sedangkan container tidak di izinkan untuk mengakses kernel.
Itulah beberapa penjelasan singkat mengenai apa itu virtual machine, container, dan apa saja perbedaan dari keduanya yang dapat caraguna share pada kesempatan kali ini. Jika ada yang ingin ditanyakan atau ada yang ingin didiskusikan, silahkan komen pada kolom komentar dibawah, terimakasih.