Individual Review #2 — Refo Ilmiya
Pada Sprint kedua yang telah berlalu dan sprint ketiga yang sedang dijalani, banyak hal baru yang dipelajari dan dapat Saya sampaikan pada artikel ini. Berikut rangkumannya
Deployment, Continuous Integration, Software Quality Assurance
Docker adalah sebuah project open source yang ditujukan untuk developer atau sysadmin untuk membangun, mengemas dan menjalankan aplikasi dimana pun di dalam sebuah container. Pada mata kuliah ini, Docker digunakan supaya mahasiswa bisa mengemas proyek yang dikerjakan dalam suatu image yang nantinya bisa diberikan kepada Product Owner. Selain itu, Docker sangat membantu developer dalam membangun suatu produk. Dengan digunakannya Docker, developer bisa menjalankan command-command docker sehingga dapat dengan mudah menjalankan program tanpa perlu menginstall dependency pada local machine.
Berikut adalah alur penggunaan Deployment Docker pada Mata Kuliah PPL 2018/2019
Hal yang perlu dipersiapkan untuk membuat image Docker adalah sebagai berikut:
1. Aplikasi/Source code yang ingin dimasukkan di dalam image
2. Dockerfile, yang berisi:
— Layer Docker Image dasarct
— Script-script untuk melakukan “jumpstart” Aplikasi/Source code
3. (Optional) menggunakan docker-compose.yml
Cara membuat Image Docker:
1. Menggunakan Command Line
# docker compose -t [nama-image] .
2. Menggunakan Portainer
Image ->
-Build new image ->
— Upload direktori berisi Dockerfile & Source code
Cara melakukan PUSH Image ke Docker Registry Fasilkom:
1. Menggunakan Command Line
# docker login https://registry.docker.ppl.cs.ui.ac.id/
# docker tag
# docker push [nama-tag]
2. Menggunakan Portainer
Cara Memastikan Image sudah tersimpan di Image Registry Fasilkom adalah dengan mengecek pada URL berikut: https://registry.docker.ppl.cs.ui.ac.id/v2/_catalog
URL tersebut akan mengembalikan hasil berupa key repository Docker yang tersimpan pada Image Registry Fasilkom.
Terdapat beberapa Branch pada PPL Fasilkom UI. Branch Development dimana developer menjelajahi dan mengeksplor task yang diberikan hingga selesai, branch staging untuk finalisasi app yang siap dimerge, dan coldfix untuk bugs fixing. Branch Development dapat digunakan untuk melakukan eksperimen terhadap fungsi yang diimplementasi serta ingin mencoba apakah suatu input dapat menghasilkan error pada fungsi yang diimplementasi. Apabila tidak terdapat bug yang ditemukan dan siap untuk dimerge maka akan dimerge ke Staging dan kemudian dideploy ke server UI. Apabila PO meminta perubahan atau terdapat bugs baru yang ditemukan pada app yang telah dimerge ke staging dan telah terdeploy, maka akan dipull ke coldfix dan diperbaiki hingga tuntas untuk kemudian dimerge kembali ke branch Staging untuk dideploy. Clean code juga dapat menghemat waktu dan biaya saat harus melakukan maintenance terhadap sistem. Selain itu programmer menjadi lebih cepat untuk mempelajari kode yang ada sehingga waktu yang digunakan menjadi hemat. Dengan menerapkan clean code, biaya untuk momodifikasi software menjadi lebih murah dan kualitas dari software meningkat.
Development, Continuous Integration
Clean Code adalah sebuah inovasi pada dunia pemrograman dimana kode di dalam perangkat lunak yang formatnya benar dan disusun dengan baik sehingga programmer lain dapat dengan mudah membaca atau memodifikasi kode tersebut. Dari sekian banyak definisi clean code, yang paling saya sukai yaitu, clean code adalah kode yang ditulis oleh orang yang peduli. Bukan hanya sekadar getting things done, tapi kita memang peduli dengan apa yang kita tulis dan kita menulisnya dengan sepenuh hati,
Beberapa keuntungan developer dalam mengimplementasikan Clean Code adalah sebagai berikut:
- Clean code berarti kode tersebut efisien, mudah dibaca, sederhana, dan memudahkan kita menemukan bug.
- Dengan clean code kita juga dapat membantu developer lain yang perlu melihat kode kita.
- Ada beberapa alasan yang menyebabkan developer belum menggunakan clean code, antara lain kurangnya waktu, melewatkan testing, tidak tahu cara menerapkannya, serta ketidakpedulian developer terhadap clean code
Team AdHub menggunakan Python untuk mengimplementasi proyek ini, sehingga kami mengikuti coding convention yang ditetapkan oleh pendiri Python sendiri, yaitu Guido van Rossum. Panduannya disebut dengan PEP 8 — Style Guide for Python Code, dan dapat dibaca pada link berikut. Pada panduan tersebut dijelaskan cara membuat layout kode, komentar, penamaan variable, dan lain lainnya.
Contoh penerapan Clean Code pada pengembangan AdHub adalah sebagai berikut.
Dapat kita lihat bahwa Saya menggunakan CamelCase untuk Nama Class dan snake_case pada nama fungsi dan nama variabel. Selain itu, tidak terdapat comment yang sebelumnya mungkin digunakan untuk debugging atau comment sebagai penjelasan kepada rekan kerja karena fungsi atau code kurang jelas. Penamaan fungsi yang jelas membuat comment untuk penjelasan tidak lagi diperlukan.
User-centered Design
Persona adalah sebuah representasi pengguna dalam bentuk individu imajiner yang memuat rangkuman singkat mengenai karakteristik, pengalaman, tujuan, tasks, pain points, dan kondisi lingkungan pengguna yang sebenarnya.
Terdapat beberapa hal yang perlu diperhatikan terkait Persona,:
— Persona menggambarkan sebuah kelompok pengguna yang spesifik
— Dibuat berdasarkan analisis dan kategorisasi data pengguna secara teliti
—Banyaknya persona yang dibuat disesuaikan dengan kebutuhan aplikasi tersebut.
— Setiap persona menggambarkan sekelompok orang di dunia nyata
— Persona bertujuan untuk membuat sebuah penggambaran yang realistis dan dapat diandalkan mengenai segmen pengguna untuk dijadikan referensi
— Dalam perancangan aplikasi, kita harus selalu mengacu pada Persona yang didefinisikan oleh aplikasi kita. Selalu pertimbangkan mereka dalam mengambil keputusan desain.
Kesimpulannya adalah, Persona menuntut kita sebagai developer untuk Be Customer Obsessed! Sehingga dalam mendevelop suatu app kita selalu mementingkan paradigma user dalam segala hal terkait kondisi lingkungan pengguna yang sebenarnya.
Hal Baru yang dipelajari
— API Facebok
— Javascript Ajax
— Testing fail method
— Error handling
— Credentials access in python