System Init
0%
LOADING_ASSETSv2.0.26
blogs/microservices-vs-monolith-dalam-mengatur-jadwal-kuliah
//Khay
Read in English

Microservices vs Monolith Dalam Mengatur Jadwal Kuliah

ProgrammingSystemDaily

Kemaren gue ngeliat temen gue ngebuka kalender di hp-nya, dan gue sumpah itu kalender bentuknya udah kayak kode legacy yang ga pernah di-maintain sejak tahun 2010. Semuanya numpuk jadi satu blok gede: jadwal kuliah, deadline tugas, jadwal ngegym, janjian nongkrong, sampe jadwal nelpon nyokapnya.

Terus dia ngeluh ke gue kalo dia ngerasa idupnya kacau balau. Kalo satu jadwal aja telat lima belas menit, semua jadwal di belakangnya langsung berantakan kayak efek domino.

Gue hela napas panjang. Bro, masalah lu itu sebenernya murni masalah arsitektur sistem. Lu lagi ngejalanin idup lu pake arsitektur Monolith.

Buat yang ga tau, Monolith itu pendekatan jadul di dunia software di mana semua fungsi aplikasi dibangun di dalem satu wadah raksasa. Kalo satu fitur error, lu harus nge-restart seluruh server. Sama kayak idup temen gue tadi. Dia telat bangun pagi (fitur alarm error), dampaknya dia telat masuk kelas pagi, tugasnya ga sempet diprint, moodnya ancur buat ngegym, dan janjian nongkrong malemnya batal. Satu failure point menghancurkan seluruh sistem harian dia.

Terus solusinya apa? Tentu aja kita butuh refactor ke arsitektur Microservices.

Microservices itu memecah aplikasi gede jadi layanan-layanan kecil yang independen. Tiap layanan punya database sendiri, logic sendiri, dan bisa di-deploy tanpa ganggu layanan lain. Kalo fitur chat error, fitur payment tetep jalan. Kalo diterapin ke jadwal kuliah, ini ngebawa efisiensi yang luar biasa.

Cara nerapinnya gampang. Pertama, pisahin domain idup lu jadi beberapa service. Misal: AcademicService, HealthService, dan SocialService.

Kedua, bikin mereka loosely coupled alias jangan terlalu bergantung satu sama lain. Jangan bikin janjian ngerjain tugas kelompok tepat lima menit setelah jam selesai kelas. Kasih buffer atau jeda waktu. Ini ibarat lu ngasih API gateway buat ngatur traffic biar server lu ga overload. Kalo dosen lu telat keluar kelas 20 menit (yang mana ini adalah kejadian harian di kampus gue), SocialService lu ga bakal langsung nge-throw error karena lu punya buffer 30 menit.

Ketiga, terapin prinsip fault tolerance. Kalo satu service down, idup lu harus tetep jalan. Misal AcademicService lu lagi ancur gara-gara nilai kuis dapet D. Jangan biarin ini ngerusak HealthService lu. Lu tetep harus makan siang dan tidur yang cukup. Di sistem Microservices, kalo satu service mati, ada fallback mechanism. Jangan biarin idup lu single point of failure.

Tapi emang bener sih, Microservices itu kerasa lebih ribet di awal karena lu harus manage banyak komponen. Lu butuh orchestator kayak Kubernetes buat mastiin semuanya jalan harmonis. Dalam konteks idup lu, Kubernetes itu ya kedisiplinan mental lu sendiri. Lu harus tau prioritas mana service yang critical dan mana yang bisa ditunda.

Kalo lu ngerasa jadwal lu terlalu kompleks, mending audit ulang cara lu nyusun kegiatan. Jangan-jangan lu memaksakan arsitektur jadul buat ngadepin masalah modern yang dinamis.

  • Khay