Salah satu kendala yang paling awal saat dihadapi oleh tim developer pada saat melakukan pengembangan app adalah kekhawatiran jika aplikasi yang mereka kembangkan tidak berjalan secara sempurna ketika ketika dideploy. Perbedaan konfigurasi di environment milik seorang developer dengan server atau dengan developer yang lain merupakan penyebab utamanya. Hal ini juga sering dirasakan oleh sysadmin ketika mereka hendak mengupdate kernel. Ada beberapa app dalam server mereka jadi bermasalah karena belum mendukung kernel terbaru. Show Sebenarnya solusi untuk permasalahan ini sudah ada sejak lama dengan hadirnya teknologi virtualisasi. Ada dua macam teknologi virtualisasi yaitu virtual machine dan container. Apa saja perbedaan dua teknologi virtualisasi ini? Mari kita kupas satu per satu dari teknologi virtualisasi tersebut. Apa itu Virtual MachineVirtual machine (VM) adalah sebuah emulasi dari sebuah sistem komputer. Secara sederhana, virtual machine membuat kita bisa membagi resource hardware dari satu hardware fisik menjadi beberapa sistem komputer. Sebagai contoh, kita memiliki satu PC yang memiliki prosesor dengan 4 core, RAM sebesar 8 GB serta harddisk 500GB misalnya. Tanpa VM tentu kita hanya bisa menginstall 1 OS atau beberapa OS tapi tak bisa berjalan bersamaan. Dengan VM, kita bisa membagi sistem komputer menjadi dua masing-masing memiliki prosesor 2 core, RAM 4GB, serta harddisk 250GB dan tentu saja pembagian resource hardware tidak harus sama rata. Dengan ini, maka kita dapat menginstall OS di setiap sistem komputer dan dapat menjalankannya secara bersamaan sehingga kita seolah memiliki 2 PC yang berbeda. Teknologi ini sering digunakan untuk server dan memunculkan istilah Virtual Private Server (VPS) tapi sedikit pula digunakan oleh app developer karena project yang sedang dikerjakannya memiliki platform yang berbeda dengan platform yang dimiliki. Keunggulan VM
Apa Itu ContainerBerbeda dari VM, container adalah sebuah virtualisasi OS yang dapat membungkus suatu aplikasi beserta dependency dan environment-nya. Setiap container ini memiliki process yang terisolir sehingga tidak mengganggu host OS ataupun container yang lain. Prinsip container ini mirip dengan kontainer yang ada di kapal kargo di mana kapal kargo tersebut diibaratkan sebagai sistem komputer. Jika dibandingkan dengan VM, secara pengaturan kontainer lebih mudah. Hal ini disebabkan karena konsep berbagi resource hardware dari container lebih fleksibel bila dibandingkan VM. Sebagai contoh, tadi disebutkan bahwa kita mempunyai 1 PC dengan 4 Core, RAM 8 GB, dan storage sebesar 500GB. Katakanlah kita mempunyai 2 container dengan kebutuhan RAM berbeda. Beberapa apps dalam container A membutuhkan RAM 5GB sedangkan apps dalam container B membutuhkan RAM 2GB. Dengan container, kita tak perlu menset kebutuhan hardware resource setiap container karena berada dalam satu sistem komputer. Sementara jika kita memakai VM dengan hardware resource yang sudah kita bagi sama rata seperti disebutkan di contoh sebelumnya, kita tidak mungkin memasang apps di container A di salah satu sistem komputer karena RAM maksimal yang bisa kita pakai hanyalah 4GB. Faktor portabilitas juga menjadi kelebihan yang dimiliki oleh container. Para developer bisa membagikan container dengan format ISO image ke setiap perangkat yang dia pakai ataupun ke developer lain. Platform ContainerLinux Containers (LXC)Platform ini merupakan cikal bakal lahirnya container. Linux Containers (LXC) ini adalah virtualisasi OS yang memungkinkan kita menjalankan beberapa sistem Linux di dalam satu sistem komputer secara bersamaan. Tentu saja platform ini hanya berlaku untuk Linux saja. DockerPada awalnya, project pertama Docker adalah membangun single app LXC container, mengenalkan beberapa perubahan pada LXC sehingga lebih portabel dan fleksibel. Lama-kelamaan Docker berkembang hingga memiliki container runtime sendiri. Keunggulan Container
VM vs Container (Final Round)Secara singkat, perbedaan antara VM dan Docker dapat dijabarkan dalam tabel berikut :
Tentu jika melihat rangkuman perbedaan antara VM dan Docker pada tabel di atas kita tahu bahwa VM dan container memiliki fungsi masing-masing. Untuk project yang bersifat monolitik di mana setiap apps yang kita kembangkan membutuhkan environment dan dependencies yang tidak terlalu berbeda maka menggunakan VM lebih bijak. Akan tetapi jika kita menggunakan arsitektur microservices dalam pengembangan software, penggunaan container lebih dianjurkan. *** Jika Anda tertarik dalam pengembangan software dengan arsitektur microservice menggunakan Docker dan Kubernetes, Anda dapat mengikuti workshop cloud native di Inixindo Jogja.
Sebelumnya saya sudah membahas tentang Cloud Computing , salah satu teknologi yang sedang sangat berkembang di indonesia. masih berkaitan dengan dunia virtualisasi kali ini saya akan sedikit menjelaskan tentang pengertian Hypervisor. oke check it out… Pengertian Hypervisor
Pada setiap jenis komputer, seperti cluster computing, grid computing, PC ataupun mainframe, memiliki OS yang berbeda satu sama lain karena memiliki sistem yang juga berbeda. Setiap OS tersebut di desain sesuai dengan kebutuhan dari sistem masing masing. Untuk Hypervisor sendiri, didesain lebih mirip OS untuk mainframe dari pada Windows OS. Hal ini dikarenakan sebuah hypervisor, harus bisa mengatur beberapa sistem sekaligus, layaknya sebuah host melayani beberapa client pada mainframe. Pada cloud computing, bukan hanya satu sistem saja yang harus diatur.Maka dari itu digunakanlah sebuah Hypervisor sebagai OS dari cloud computing. Hypervisor bertugas untuk mengatur beberapa virtual machine ini sehingga nantinya sebuah cloud computing bisa berjalan dengan baik.
Secara umum Hypervisor di bagi menjadi 2 jenis yaitu: Baremetal Architectur yang dikenal dengan hypervisor tipe 1 dan Hosted Architecture yang dikenal dengan hypervisor tipe 2 Hypervisor Type 1 (Baremetal Architecture) Hypervisor tipe ini berjalan langsung diatas perangkat keras server, artinya tidak di perlukan sistem operasi lain untuk menjalankan hypervisor tipe 1 ini . dengan begitu hypervisor memiliki akses langsung ke hardware tanpa harus melewati OS.Contoh hypervisor tipe 1 adalah VMware ESXi. Kalau dilihat dari teknik virtualisasi yang digunakan, jenis satu ini adalah jenis hardware assisted. Hypervisor Type 2 (Hosted Architecture) Hypervisor tipe ini berperan sebagai software untuk menjalankan dan mengatur virtual machine. Akses resource hardware yang dibutuhkan oleh virtual machine harus melewati OS.Contoh hypervisor tipe 2 adalah VMware Server. Berbeda dengan tipe 1, tipe 2 ini lebih cenderung ke OS assisted hypervisor (para virtualization) dan juga full virtualization. |