Pada sesi tutorial kali ini, kamu akan menerapkan materi yang telah kamu pelajari yaitu terkait refactoring
dan clean code
. Tidak hanya itu, kamu juga akan mencoba menggunakan SonarQube untuk membantumu mengidentifikasi code smell, serta men-deploy aplikasi tersebut.
Selama liburan beberapa hari kebelakang, kamu sempat ingat bahwa dulu pernah membuat suatu program untuk belajar SpringBoot. Namun ketika dilihat kembali programnya, ternyata masih berantakan dan bahkan sulit dipahami. Kalau kata orang-orang kodenya kotor. Maklum, waktu itu yang penting bisa jalan dulu saja, yang lainnya urusan belakangan.
Kali ini, kamu ingin membersihkan kodemu dan menghilangkan code smell-nya. Oleh karena itu, dilakukanlah refactoring untuk memperbaiki kodemu sebelumnya. Untuk membantumu mengidentifikasi code smell, kamu juga mendapat rekomendasi dari teman untuk menggunakan SonarLint dan SonarQube. Kemudian, setelah programmu bebas dari code smell, kamu juga akan men-deploy-nya agar bisa digunakan secara luas.
Aplikasi terdiri dari tiga fitur, yaitu:
-
Leap Year: Memeriksa apakah suatu tahun merupakan tahun kabisat.
-
Day Counter: Menghitung beberapa hari setelah atau sebelum hari tertentu.
-
Time Counter: Menghitung beberapa jam/menit setelah atau sebelum waktu tertentu.
Deployment aplikasi akan menggunakan Google Cloud Platform dengan memanfaatkan guideline deployment yang telah ada. Aplikasi ini tidak membutuhkan database dan diasumsikan environment development, test, dan production sama sehingga bagian application.properties
dapat dihiraukan untuk saat ini. Meskipun demikian, kamu diharapkan dapat memahami peran application.properties
.
Beberapa hal yang perlu diperhatikan.
- File
application.properties
dan beberapa versi environment tidak perlu dibuat. - Terdapat
Dockerfile
yang sudah disesuaikan. - Semua hal terkait database tidak perlu ditambahkan seperti dalam environment variables di GitLab dan Pipeline GitLab.
- Konfigurasi
.gitlab-ci.yml
dapat dilihat disini untuk melihat perbedaannya. - Variabel
IMAGE_NAME
danCONTAINER_NAME
diisi dengantutorial-7
.
-
Refactor implementasi fitur Leap Year:
-
Refactor implementasi fitur Day Counter:
- Mengurangi long method
- Memastikan setiap class memiliki responsibility yang sesuai
-
Refactor implementasi fitur Time Counter untuk mengurangi code duplication
-
Jalankan test yang telah disediakan untuk memastikan fitur dapat berjalan sebagaimana mestinya
-
Install SonarLint pada Intellij dan setup SonarQube untuk memastikan tidak ada code smell yang tersisa
-
Mengatur integrasi CI/CD untuk tahap pengecekan SonarQube
-
Deploy aplikasi pada GCP