00:00Oke, kali ini kita bakal ngobrolin gimana sih caranya bikin backend yang rapi dan gampang di-maintain pakai Express.js.
00:06Ada beberapa pola desain keren banget yang bisa bantu kita lho.
00:09Nah, ini dia nih pertanyaan kuncinya.
00:11Gimana caranya kita desain backend biar code base-nya bisa melebar, bukan cuma meninggi alias makin panjang?
00:16Ini kan masalah klasik yang pasti dialami semua developer pas aplikasinya udah mulai gede.
00:21Coba bayangin deh, awalnya kita bikin server simple aja.
00:24Tapi begitu nambah root buat user, terus buat email, buat produk,
00:28Eh, tau-tau file server utama kita jadi isinya if-else bercabang-cabang yang panjang dan berantakan banget.
00:34Nah, model pertumbuhan vertikal kayak gini tuh udah resep pasti buat munculnya bug dan bikin pusing tujuh keliling.
00:38Jelas banget kita butuh cara yang lebih pinter buat ngatur kodenya.
00:42Terus, solusinya gimana?
00:43Yang pertama, pakai pola desain router.
00:46Ini cara paling klasik dan ampuh buat membongkar blok if-else yang numpuk dan bikin pusing dadi.
00:51Lihat deh proses refactoring-nya. Simple banget kan?
00:53Logika buat di-approach, kita angkat keluar jadi fungsi sendiri-sendiri.
00:56Terus, blok if-else yang berantakan tadi kita ganti aja sama panggilan ke fungsi-fungsi baru itu.
01:02Sederhana, tapi dampaknya luar biasa.
01:04Jadi intinya, tugas si router ini cuma satu.
01:06Dia lihat ada request masuk, terus dia putusin, oke, request ini harus di-offer ke fungsi yang mana ya?
01:11Udah, gitu aja.
01:12Dan voila, ini hasil akhirnya.
01:14Lihat deh file index.js kita sekarang.
01:16Jadi ringkas banget.
01:17Tugasnya sekarang cuma jadi dirijen, dia cuma import router-router yang ada dan bilang ke aplikasi,
01:22Eh, pakai ini ya, jauh lebih bersih dan enak dilihat.
01:25Nah, inilah yang dimaksud dengan scaling secara horizontal yang dari tadi kita omongin.
01:30Kita nambah fitur dengan cara nambah file baru, bukan nambahin baris kode di file yang udah ada.
01:34Keren kan?
01:35Oke, masalah routing udah beres, udah rapi, tapi, eh, muncul masalah baru lagi.
01:40Sekarang kita lihat ada banyak kode yang diulang-ulang di dalam setiap fungsi route itu.
01:45Nah, kita bahas solusinya yuk.
01:46Misalnya nih, logging atau nyatet aktivitas, terus proses autentikasi, atau nge-parsing data dari request.
01:52Itu kan dibutuhin di banyak tempat.
01:54Masa iya kita mau copy paste kode yang sama terus-terusan?
01:56Capek dong.
01:58Nah, untuk masalah-masalah yang sifatnya lintas batas kayak gini,
02:01atau istilah kerennya cross-cutting concerns,
02:03Express punya solusi yang super elegan.
02:05Namanya middleware.
02:07Coba bayangin ini kayak pabrik dengan ban berjalan.
02:09Setiap kali request yang masuk itu, kayak produk yang lewat di ban berjalan itu.
02:12Nah, di sepanjang jalan, ada pos-pos kerja.
02:14Ya, itulah middleware.
02:16Setiap pos bisa melakukan sesuatu ke produk itu.
02:18Misalnya, ngecek kualitas, ngasih stempel,
02:21sebelum akhirnya dioper ke pos berikutnya pakai fungsi next.
02:23Dan bagian paling keran dari pola ini adalah soal reusability,
02:26atau bisa dipakai ulang.
02:27Kita bisa aja ganti logger bikinan kita sendiri yang simple,
02:30dengan library yang udah canggih dan teruji kayak Morgan.
02:32Cuma ganti satu baris kode aja loh, fleksibel banget.
02:35Tapi, gimana kalau middleware-nya butuh di-setting dulu?
02:37Misalnya, mau kita kasih konfigurasi khusus?
02:40Nah, disinilah konsep middleware factory masuk.
02:42Contoh gampangnya, bodyparser.json itu kan factory.
02:45Kita bisa panggil dia sambil ngasih settingan,
02:47misalnya batas ukuran request.
02:49Eh, dan tau nggak, express.router yang tadi kita pakai,
02:52itu sebenarnya juga middleware factory yang canggih banget.
02:55Oke, jadi dari semua ini, apa sih kesimpulan besarnya?
02:58Ini bukan cuma soal trik modding yang pinter ya,
03:00tapi lebih dalam lagi, ini soal filosofi desain.
03:03Dan filosofi intinya adalah ini,
03:04kode yang dirancang dengan baik,
03:06itu nggak banyak diubah, tapi cuma ditambahin.
03:09Jadi pas kita mau nambah fitur baru,
03:11sebisa mungkin kita cuma nambah file baru,
03:13bukan ngoprek-ngoprek file lama.
03:14Kenapa?
03:15Biar resiko ngerusak fitur yang udah jalan,
03:17jadi kecil banget.
03:18Jadi, tiga prinsip utamanya,
03:20organisir pakai router biar tiap bagian punya tugasnya sendiri-sendiri,
03:23abstraksikan logika yang berulang pakai middleware,
03:25dan selalu usahakan untuk nambah kode baru,
03:27bukan ngubah kode lama.
03:29Inilah kunci buat bikin sistem yang tangguh,
03:31gampang di-scale,
03:31dan yang paling penting, enak buat di-maintain.
03:33Sekarang coba deh lihat lagi proyek yang lagi Anda kerjain.
03:36Ada nggak sih logika yang diulang-ulang di banyak tempat?
03:39Nah, itu kandidat kuat buat dijadiin middleware.
03:42Pola abstraksi kayak gini tuh ada di mana-mana,
03:44dan sekarang Anda udah punya bekal buat menerapkannya di Express.
Komentar