Pengenalan Vagrant – (1) apa dan untuk apa?

vagrant

Ini adalah seri ke pertama dari tutorial pengenalan Vagrant, berikut seri-seri lainnya:

  1. Pengenalan Vagrant – (1) apa dan untuk apa?
  2. Pengenalan Vagrant – (2) Instalasi
  3. Pengenalan Vagrant – (3) Tentang Boxes
  4. Pengenalan Vagrant – (4) Project, UP dan SSH
  5. Pengenalan Vagrant – (5) Suspend, Halt dan Destroy
  6. Pengenalan Vagrant – (6) Provisioning dan Networking

Sebagai seorang software developer, di tengah banyaknya persaingan sekaligus permintaan yang tinggi akan perangkat lunak, mengharuskan kita untuk bekerja lebih pintar dan efisien. Salah satunya adalah dengan memanfaatkan berbagai macam tools yang bisa mempermudah saat pengembangan ataupun testing perangkat lunak. Khususnya kalau anda seorang web developer pastinya sering mengalami hal-hal berikut:

  • Transfer project antar workstation, misalkan anda sehari-hari melakukan development di PC kantor/rumah terus besoknya tiba-tiba ada meeting dengan klien untuk menunjukkan progress projek dimana kita akan bawa laptop untuk presentasi. Pastinya kita harus copy dulu file projek kita, terus set semuanya (install web server di laptop, install DB server, Lampp dll) dan berharap semuanya akan lancar berjalan seperti biasanya :).
  • Team development menggunakan berbagai OS (Sistem Operasi) berbeda, Ini juga sering terjadi. Misal kita mengembangkan aplikasi web berbasis Django/Python di Ubuntu, sedangkan team front-end kita bekerja di Mac OS atau Windows. Bagaimana caranya supaya project kita jalan dengan baik di OS mereka, sedangkan tidak semua designer/front-end developer mengerti bagaimana menghidupkan server, DB dan segala macam keperluannya?.
  • Di PC saya jalan, kenapa di PC kamu error ya? ini juga erat dengan 2 point saya diatas. Masalah ini sering terjadi karena sering perbedaan sistem operasi, versi, perogram-program pendukung lainnya yang tidak sama dengan yang kita pakai.

Oke, kita akui masalah-masalah tersebut diatas masih menghantui kita sampai sekarang, tapi adakah solusinya? yang membuat kehidupan kita sebagai software engineer lebih menyenangkan? Pastinya, salah satu yang bisa kita pakai untuk memimalisir masalah diatas adalah dengan menggunakan Mesin Virtual (VM). Kalau anda pernah memakai VirtualBox, VMWare maka anda pernah mengunakan mesin virtual. Namun Mesin Virtual tidaklah cukup, kita perlu tool khusus lagi yang lebih powerful yaitu Vagrant.

Apa itu Vagrant?

Vagrant adalah sebuah program yang memanfaatkan teknologi Mesin Virtual yang memungkinkan kita untuk membuat lingkungan development software secara portable, mudah di duplikasi, konsisten, sehingga proses pengembangan lebih fleksibel.

Keuntungannya

Dengan berbasis mesin virtual, itu artinya point ke-2 dari masalah kita diatas sudah teratasi. Karena proyek kita dijalankan dalam lingkungan virtual yang sama persis/identik dengan lingkungan saat kita melakukkan development, ini artinya apapun sistem operasi teman/anggota team kita, selama mereka memiliki VM dan Vagrant terinstall, maka proyek bisa jalan dengan baik.

Bahkan bagi designer yang tidak mengetahui cara menghidupkan server misalnya, hanya dengan satu buah command, maka mesin virtual akan hidup dan projek kita langsung aktif di dalamnya. Karena sifatnya yang portable, ini artinya lingkungan virtual proyek yang kita kerjakan dengan mudah di transfer atau di copy ke PC/laptop lain dengan catatan sudah terinstal VM dan Vagrant juga disana. Dan ketika dijalankan maka hasilnya akan sama.

 Cara kerjanya

Dibalik semua keuntungan yang bisa kita peroleh menggunakkan Vagrant, pada dasarnya prinsip kerjanya cukup sederhana. Ini dimulai dengan pemilihan Sistem Operasi, OS apa yang akan kita pasang di VM tersebut, misalkan kita pakai Ubuntu server.

Ini juga menyangkut konsistensi, misalkan aplikasi web kita nantinya akan di hosting pada Ubuntu server, maka sekalian kita developnya di Ubuntu server juga. Vagrant bekerja memanfaatkan Mesin Virtual  (misalnya VirtualBox atau VMWare), melalui vagrant kita bisa mengaktifkan VM tersebut, dan setelah mesin tersebut aktif kita bisa perintahkan Vagrant untuk menginstall semua program-program pendukung untuk menjalankan projek dengan sempurna, dan menyimpan semua konfigurasi VM melalui Vagrant.

Ketika akan di duplikasi dan didistribusikan ke anggota team, apapun OS yang mereka gunakan untuk bekerja, maka ketika diaktifkan dengan Vagrant maka VM akan menjalankan Ubuntu server juga, dengan segala konfigurasi yang sama seperti kita set sebelumnya. Untuk lebih jauh mengenal Vagrant, artikel ini akan saya bagi menjadi beberapa seri.

Jadi sampai jumpa di seri berikutnya dimana kita akan mulai dengan instalasi.

15 thoughts on “Pengenalan Vagrant – (1) apa dan untuk apa?

    1. Vagrant bisa kita gunakan untuk mensimulasikan bagaimana kita setup server saat live nantinya, bisa gunakan tool otomasi seperti Puppet, Chef atau Ansible, kalau di vagrant box sudah lancar maka tinggal aplikasikan tool-tool tersebut untuk live server maka hasilnya akan sama dengan yang kita coba di Vagrant box.

  1. Mas, mau tanya, misalnya bikin program android pake bhs native-nya (java) trus ide-nya android studio + kvm buat jalanin mesin virtualnya sebagai pengganti avd-nya, nah disini vagrant bisa dimanfaatkan buat apa ya mas ?

    Makasih postingan artikelnya mas.

    1. Mungkin Vagrant akan lebih banyak bermanfaat bagi pengembang aplikasi berbasis web mas.

      Cuma kalau mas mau bereksperimen, mungkin ada satu workflow yang bisa mas coba, yaitu mas mensimulasikan membuat sebuah build server untuk aplikasi android.
      Jadi ketika sourcecode di push ke BitBucket atau Github, di dalam server/VM yang dibuat dengan Vagrant mas bisa install Jenkins CI, dan setiap Jenkins mendeteksi adanya commit baru di code repo, maka otomatis akan melakukkan Build atau Test atau apapun yang diperlukan. Jadi istilahnya Continuous Integration.

      Ketika semua berjalan dengan baik di Vagrant maka setup yang mas gunakan di server virtual tersebut bisa diaplikasikan ke Live server.

      Untuk lebih lengkap mengenai Build server ini mungkin bisa ambil dari sini mas https://www.digitalocean.com/community/tutorials/how-to-build-android-apps-with-jenkins

    1. Singkatnya, keduanya beda scope / lingkup kerja. Jadi yang satu berbasis Virtual Machine, yang satu berbasis Container.

      Vagrant merupakan sebuah tool untuk memanage virtual machine (bermain di level mesin/OS), sedangkan Docker sendiri untuk memanage aplikasi (di level aplikasi).

      Dengan Docker kita bisa mempacking aplikasi kita dengan segala konfigurasi + dependency nya,kemudian dijadikan sebuah Docker container.

      Karena Vagrant pada dasarnya memanage OS, jadi ketika kita punya mesin Ubuntu jalan di Vagrant, didalam OS tersebut terserah kita mau ngapain juga bisa, bahkan menginstal Docker didalamnya.

Leave a Reply

Your email address will not be published. Required fields are marked *