Three Software Environment in Justika Probono

Kevin Prakasa
PPL SeLaw
Published in
3 min readApr 30, 2019

Story kali ini akan bercerita tentang tiga software environment yang saya implementasi untuk mata kuliah PPL 2019 Fasilkom UI.

taken from https://documentation.agilepoint.com/11/installation/images/deparchCommonEnvironment.jpg

Pembagian environment kita dibagi menjadi tiga seperti gambar diatas yaitu dibagi menjadi enviroment development, staging, dan production. Setiap enviroment tersebut memiliki kegunaan dan tujuannya masing-masing yang mana akan di jelaskan lebih lanjut per sectionnya dibawah

1. Development Environment

development environment justika probono

Enviroment yang akan kita gunakan pertamakali saat mendevelop sesuatu fungsional adalah environment development. Yang kita lakukan di environment development adalah mengerjakan task yang saya telah diassign di sprint planning. Task tersebut biasa berupa satuan unit fungsional yang biasa dikenal dengan user story.

Lalu di development environment saya juga membuat unit testing yang dibuat sebelum membuat implementasi fungsional kode . Unit testing tentunya dilakukan dengan otomatis, yang dijalankan di lokal komputer dan pipeline gitlab. Setelah selesai membuat fungsionalitas kode yang berhasil melewati unit test yang saya buat, maka barulah saya meng-push setiap commitan ke git dengan branch US-[id_story]_[nama_user_story]. Kemudian setiap commitan nya akan melewati pipeline gitlab yang menyebabkan bisa terjalan semua unit testnya dan memunculkan code coverage dari keseluruhan kode.

Development environment biasa berupa satuan user story, dan karena letaknya ada di git, maka semua orang bisa me-pull kode dan menjalankan environment ini di lokal komputer masing-masing.

Setelah semua story yang berada di development environment selesai dibuat dan sukses di setiap unit testnya, barulah setiap story ini akan digabungkan pada branch yang akan masuk ke environment staging.

2. Staging Environment

staging front end environment justika probono

Setiap branch user story yang sudah selesai dikerjakan dan sudah sukses unit test, akan digabungkan di satu branch bernama staging. Staging merupakan gabungan dari unit fungsional kode dari setiap story yang ada. Tujuan utama di staging environment ini adalah menggabungkan setiap story yang ada sehingga menjadi satu kesatuan aplikasi yang sudah siap dipakai dan memiliki value bagi usernya, yang mana aplikasi ini siap untuk dipresentasikan pada klien kita yaitu Justika.

Biasa di staging environment juga diperlukan data-data, yang mana data disini bisa bersifat dummy atau buatan sehingga tidak harus sesuai dengan kondisi nyata penggunaan aplikasi tersebut.

Proses merging dari setiap story yang ada di development environment biasa tidak bisa berjalan dengan mulus, karena bisa terdapat beberapa merge conflict error yang kita harus resolve manual. Dan terkadang harus ada penyesuaian antara kode story yang satu dengan yang lain agar setiap story tersebut tidak memiliki konflik dan bisa berjalan dengan lancar.

Setelah semua story yang ada di development environment tergabung, maka akan kita push lagi di git agar dijalankan pipeline unit testnya agar memastikan unit testing masih passed setelah penggabungan kode dilakukan. Lalu aplikasi kita siap untuk didemokan kepada product owner, yang mana dari product owner akan memberi evaluasi, dan menentukan apakah kode kita siap beralih ke production environment.

3. Production Environment

Aplikasi Justika Probono baru akan rilis ke production environment apabila product owner telah menyetujui rilis aplikasi kita di staging environment. Yang mana menandakan aplikasi kita siap digunakan oleh user target market dari aplikasi kita. Sehingga data-data yang digunakan di product environment juga sudah bersifat data real.

Bisa dilihat bahwa product environment adalahn environment tempat hasil akhir dari seluruh kegiatan development selesai, sehingga setiap kodenya bisa berjalan fungsionalitasnya dan telah sukses dari setiap unit test.

Conclusion

Bisa dilihat dari penjelasan diatas, setiap environment memiliki tujuannya masing-masing. Dan untuk menyamakan setup setiap environment tersebut kita menggunakan docker. Docker disini berguna untuk menyeragamkan setup dari setiap environment yang ada, sehingga tidak akan ada masalah yang terjadi karena setup environment yang berbeda misal version python yang berbeda. Sekian penjelasan dari software environment yang saya implementasi di justika probono. Terimakasih telah membaca, happy life, happy coding!

--

--

Kevin Prakasa
PPL SeLaw

Studying CS at University of Indonesia | Front-End Developer at my own company