Wednesday, February 19, 2014

Lingkungan pemrograman portabel dengan Vagrant

Bekerja sebagai programer dalam suatu tim lebih dari 8 orang sering membuat saya, sebagai sys-admin dan pemimpin teknis, harus kerja keras menyiapkan lingkungan yang bisa digunakan banyak orang dengan banyak preferensi. Tidak semua programer bekerja di lingkungan hardware dan software yang sama, bahkan sistem operasi  yang mereka gunakan juga berbeda. Setiap update hasil pekerjaan, integrasi dan testing, error dan bug seringkali terjadi karena konfigurasi system yang berbeda, misal: path dari command/perintah/program, konfigurasi database, konfigurasi aplikasi, library dll/so yang terinstal dlsb. Setelah pekerjaan coding selesai pun, instalasi ke sistem akhir juga menjadi masalah karena perbedaan lingkungan ini.

Hal yang sama juga terjadi saat saya harus mengelola kelas dengan sesi eksperimen pemrograman atau paling tidak demo. Setiap peserta/siswa memiliki laptop/komputer yang berbeda-beda. Biasanya sesi awal eksperimen habis waktu untuk menyelesaikan masalah instalasi dan konfigurasi tools. Oleh karenanya lebih suka menggunakan IDE/tools portable seperti Eclipse IDE, teks editor Notepad++ portable atau Sublime Text (favorit saya sekarang). Saya juga lebih suka menggunakan lingkungan shell seperti Cygwin atau semisalnya. Untuk web server saya lebih suka XAMPP (WAMPP atau LAMPP), sebab karena portabilitas mereka.

Sampai akhirnya saya install Virtual Box. Kami bisa saling berbagi image system, dan bisa bekerja di system yang memiliki kemiripan tinggi dengan target system dimana software kami akan diinstal. Permasalahannya adalah konfigurasi untuk bridging antara system image di Virtual Box dengan system operasi yang kami gunakan sebagai lingkungan pengembangan tidak semudah yang dibayangkan.

Kami juga menggunakan kontrol revisi seperti SVN dan Git. Tetapi mereka hanya menyelesaikan masalah sinkronisasi kode, bukan menyelesaikan masalah konfigurasi system. Tetap saja rekan-rekan tim memiliki konfigurasi database yang berbeda, misalnya: port, username dan password.

Tetapi, tetap saja saya, sebagai sys-admin, harus memastikan bahwa semua orang memiliki konfigurasi yang sama. Hal ini seringkali membuat saya frustasi. Sampai akhirnya saya berkenalan dengan Vagrant beberapa bulan ini.

Vagrant
Vagrant adalah tool untuk membuat dan mengkonfigurasi lingkungan pengembangan (software) yang ringan, reproducible dan portabel. Artinya, tidak ada lagi sakit kepala karena konfigurasi XAMMP, lingkungan virtual (virtual box) dan bekerja secara remote via SSH+FTP. Dengan satu file konfigurasi Vagrant akan mengerjakannya semua untuk kita. Selain itu kita bisa mengakses/mengedit source code kita dari OS dengan editor kesayangan kita selayaknya bekerja di lokal. Semua perubahan source-code akan disharing ke lingkungan virtual.

Instalasi dan dokumentasi di situs Vagrant sendiri cukup jelas bagi para pemula seperti saya.

No comments: