Deploy Yii2 for Development or Production?

images Kita samakan persepsi dulu, bahwa tulisan ini hanya untuk Yii2 Advanced Template. Bagaimana dengan Yii2 Basic Template? Penjelasannya adalah penggunaaan Aplication Template di Yii2 berbanding terbalik, yaitu Basic Template hanya untuk master sedangkan Advanced Template untuk nyubi, dan karena saya selalu nyubi makanya saya pake Advanced Template. Gak percaya? Seorang Peter Jack Kambey aja harus mengerutkan dahinya (perasaan sih udah mengkerut dari sononya hihihi) ketika hendak mengubah login Yii2 yang belum memakai database menjadi login pake database (beliau make Basic Template) apalagi kita yang nyubi ini..(Poin Ribetnya Yii2 Bagian Pertama)

Setelah kita melakukan instalasi aplikasi Yii2, maka kita diharuskan melalui step kedua yaitu inisialisasi aplikasi dengan cara mengetik perintah init pada command prompt. Lantas mana yang seharusnya kita pilih? Dev atau Prod? Apasih fungsinya? Ngapain pake gituan segala? (Poin Ribetnya Yii2 Bagian Kedua)

Beberapa pengguna Yii2 mengira bahwa Dev itu dipilih ketika masa pengembangan aplikasi, sedangkan Prod itu dipilih pada masa dimana aplikasi live atau digunakan oleh user. Apakah Anda juga mengira demikian?, jika iya maka Anda benar. Beberapa pengguna Yii2 merasa khawatir atau menyesal telah memilih Dev, harusnya langsung Prod aja meski masih dalam tahap pengembangan Aplikasi, sebagian takut kodenya berantakan ketika mengubah dari dev menjadi production melalui init. Apakah Anda merasa demikian?, jika iya maka Anda salah. Beberapa pengguna Yii2 mengira bahwa Environment itu hanya ada dua yaitu Dev dan Prod, jika Anda mengira demikian! maka lagi lagi Anda salah, Bahwa environment yii2 by default ada 3 yaitu Test untuk testing with codeception. Apakah hanya 3 itu? nggak juga jika kita mau bikin environment sendiri bisa juga misal envronment demo, main2, iseng dsb. (Poin Ribetnya Yii2 Bagian Ketiga)

Nah sebenarnya apasih init itu? saya akan coba bahas dengan bahasa yang hanya saya dan Tuhan yang tahu hehe peace. Jadi Init itu sebagaimana kepanjangannyan yaitu initialisasi, merupakan proses inisialiasi environment aplikasi kita (loe aja kalii) apakah kita sedang develop aplikasi atau sudah launching. Lalu mengapa harus pake init segala, ya gak harus sih.. saya melihatnya biar keren aja, just kidding, ketika kita melakukan perintah init, misal init development, maka Yii akan mengubah beberapa hal utama yang berguna untuk pengembangan aplikasi, antara lain:

- mengubah dua parameter ini (di app\web\index)

defined(‘YII_DEBUG’) or define(‘YII_DEBUG’, true);

defined(‘YII_ENV’) or define(‘YII_ENV’, ‘dev’);

- Mengaktifkan konfigurasi untuk tools debugging (panel Debugger di footer)

- Mengatifkan konfigurasi untuk tools Gii (generator code)

- Generate ulang Cookie Validation Key (sok secure nih hehe)

- Merubah Chmod 777 untuk folder yang bisa ditulisi yaitu folder runtime dan assets pada masing2 aplikasi.

Artinya init production melakukan beberapa hal sebaliknya. Dan itu recommendate untuk environment production meski kita perlu melakukan adjusting beberapa hal, misal sebagian ahli security (bukan bosnya satpam lo) overkill dengan tidak suka akan hak akses 777.

oleh Yii2, konfigurasi init ini disimpan pada folder environments, didalamnya ada dua folder yaitu dev dan prod, pada kasus dimana aplikasi Anda memiliki konfigurasi yang rumit maka Anda juga harus memodifikasi kode pada file2 didalamnya, jika tidak maka konfigurasi Anda akan hilang ketika proses init berlangsung. Karena itu Anda juga harus faham apa itu file yang berakhiran local seperti main-local, params-local. Konfigurasi pada file2 inilah yang akan direplace ketika Anda melakukan init. So.. untuk kasus configurasi yang rumit maka letak itu pada file yang nggak ada local -nya. Atau semua tergantung pemahaman Anda.(Poin Ribetnya Yii2 Bagian Keempat)

Lantas pertanyaan terakhir yang mengganjal adalah ngapain Yii membuat akhiran -local untuk beberapa file konfigurasi? Jika Anda adalah Programmer, sekaligus debugger, tester dan juga implementator, alias sapu bersih… maka “nikmat”nya -local menjadi tidak akan pernah Anda rasakan. Haha just kidding, -local ini digunakan untuk menyimpan konfigurasi yang spesifik khusus di local, misal konfigurasi user n password database.. kan gak perlu kita ngasih tau orang lain konfigurasi database lokal kita.. Maka file2 dengan akhiran -local ini akan dikecualikan (ignore) oleh git agar tidak diupload ke server git.Yap ini memang untuk bekerja dengan git, dan nikmatnya jika kerja bareng2. Pada zaman dulu programmer perlu membuat file config.sample dan menghapus file config.php sebelum mengshare code-nya :), inget nggak? hehe.(Poin Ribetnya Yii2 Bagian Kelima)

Saya telah menunjukkan kepada Anda 5 poin ribetnya Yii2, masihkan Anda menyangka bahwa Yii2 itu mudah?. Sekian dulu CMIIW, silahkan comment jika kurang puas, ditunggu cendolnya ya gan..:)

Atas nasehat dari om Mawan Sugiyanto bahwa saya lupa menyimpulkan atau memfokuskan tulisan ini.

Kesimpulannya: Pilihlah development ketika ada memang sedang membangun aplikasi Anda, kemudia ketika hendak melauncing atau mengupload ke server production, silahkan init dulu lalu pilih production

Atas nasehat dari om Surya Sheillendra bahwa Yii2 lupa mengubah setting di composer.json nya  bug nih buh hahaa.. untuk production kita sebaiknya menghapus “require-dev”: { .. } kemudian jalankan perintah composer update lagi supaya hanya extension yang perlu aja yang ikut diupload ke server production..

Ref: http://www.yiiframework.com/doc-2.0/guide-tutorial-advanced-app.html

9 Comments
  1. Gedhe76
  2. Hafid Mukhlasin
  3. Jeffry c
  4. jarwo
  5. Taufik Fahrudin
  6. mdrbdg
  7. Riki Nurhidayat
  8. Joe Al Hafidz

Leave a Reply

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