Cara Mudah Upload Source Code Dengan DeployHQ

Posting kali ini, saya mau berbagi pengalaman mengenai cara kami di 7treesdigital mengerjakan proyek web. Semua proyek web kami menggunakan framework, yang pastinya akan melibatkan ratusan/ribuan files serta banyak files dalam banyak directory.

Kondisi ini menyebabkan upload website menjadi suatu hal yang cukup merepotkan. Sebagai contoh, melakukan perubahan di suatu halaman bisa menyebabkan 2-3 files perlu diupload ulang. Misalkan: Memperbaiki proses save data, menyebabkan kita perlu mengupload ulang file model, view, dan controller yang sialnya, ketiganya ada di directory yang berbeda satu sama lain.

Kadang, solusi yang diambil untuk mengurangi kerepotan ini adalah, dengan mengupload keseluruhan directory kerja agar cukup sekali upload proses. Cara ini memang hanya satu meringankan kerjaan, tapi memperlama proses, karena pada akhirnya, jadi banyak file yang diupload.

Selective deployment

Untuk mengatasi hal ini, kami menggunakan deployment tools yang bernama DeployHQ. Tools yang satu ini melakukan proses deployment dengan cara memeriksa file apa saja yang berbeda dari deployment (upload) terakhir. Bagaimana caranya? yaitu dengan menghubungkan proses deployment dengan GIT repository.

Screen_Shot_2015-02-14_at_6_17_46_AM

Berikut gambaran bagaimana deployment dilakukan.

Screen_Shot_2015-02-14_at_6_39_25_AM

Selain kemampuan melakukan upload hanya pada file yang berubah, terdapat beberapa kelebihan lain yang sangat membantu dalam proses development suatu project, terutama yang berskala lumayan besar.

Upload test code / staging ke server staging

Pada project web skala besar, biasanya kami tidak langsung melakukan upload setiap perubahan ke server live. Selalu ada server test dan atau server staging. Setelah perubahan tersebut diverifikasi dan tidak ada masalah, baru dilakukan upload ke server live. Biasanya, yang jadi pertanyaan umum adalah, "perubahan untuk feature ini sudah terupload atau belum, ya?" atau juga "untuk perubahan feature x, file apa aja yang diupload?"

Untuk mengatasi permasalah seperti itu, DeployHQ memiliki feature register multi server untuk suatu project. Masing-masing server akan terhubung repository git yang sama, namun beda branch. Biasanya sih, kami menggunakan branch master untuk live dan branch development untuk server test.

Screen_Shot_2015-02-14_at_6_51_18_AM

Lalu bagaimana dengan konfigurasi aplikasi? Umumnya, dengan banyak server ini, kan konfigurasinya juga beda. Misal, untuk test pakai database a, untuk live pakai database z. Perbedaan ini bisa diatasi dengan mudah oleh DeployHQ. Layanan ini memiliki feature untuk setting beda server beda config.

Eksekusi kode otomatis, setiap kali deploy

Hal yang umum terjadi juga adalah, kadang kita perlu melakukan eksekusi script atau perintah command line, terkait source code yang diupload. Contohnya, perlu menjalankan migration script untuk update database, atau melakukan maintenance mode setiap kali upload perubahan, dll. Hal ini juga disupport oleh DeployHQ. Sehingga, sebagai developer, kita tidak perlu sering-sering membuka command line hanya untuk menjalankan yii migrate setiap kali upload source code.

Penutup

Alur kerja seperti ini sangat membantu sekali dalam rutinitas kerja kami di 7treesdigital. Saya pribadi percaya ada alur yang lebih canggih lagi. Nanti pasti akan saya share kalau dapat teknik baru. Kalau misal ada dari pembaca yang punya tips trik lain, boleh juga saya dikabari.

Author: Arief Bayu Purwanto

Hello, my name is Arief Bayu Purwanto, a 24 years old father of a beautiful daughter. Interested in online programming, linux, games, and reading. Currently working on kapanlagi.com as junior developer. I live in a relatively quite and cool place called Malang. I'm available for some freelance stuff as well as some consulting job. You can see my portofolio for some previous task I've finished and some other information related to my capability. Btw, I'm plurking here.