Sawastik Bhullar, seorang mahasiswa ilmu komputer, berhasil membangun distributed API gateway dari nol menggunakan Node.js. Proyek yang dipublikasikan melalui GitHub ini mencakup fitur reverse proxy, rate limiting dengan Redis, autentikasi JWT, serta dashboard analitik real-time yang diperbarui dalam waktu kurang dari 200 milidetik.
API gateway merupakan komponen krusial dalam arsitektur mikroservis yang berfungsi sebagai pintu gerbang tunggal untuk mengatur lalu lintas permintaan antar layanan. Tidak seperti tutorial klon pada umumnya, proyek ini dirancang dengan pendekatan production-grade dan telah melalui tujuh tahap pengembangan yang sistematis.
Bhullar memulai dari pembuatan reverse proxy menggunakan http-proxy-middleware. Ia menghadapi bug di mana Express menghapus path mount sehingga permintaan yang masuk ke /api/users justru diteruskan ke upstream sebagai /users. Solusinya adalah pathRewrite untuk mengembalikan path asli. Pengalaman ini menunjukkan pentingnya penguasaan middleware saat membangun gateway.
Lapisan keamanan ditambahkan melalui middleware JWT yang memvalidasi setiap permintaan sebelum diteruskan. Token tidak valid akan langsung ditolak dengan status 401, tanpa ada forwarding ke layanan belakang. Standar ini wajib diterapkan pada gateway mana pun.
Fitur yang paling menarik adalah rate limiting menggunakan algoritma token bucket dengan Redis. Setiap klien mendapat bucket sendiri dengan token yang terisi secara berkala. Jika token habis, server mengembalikan status 429. Pendekatan ini lebih fleksibel dibandingkan fixed window karena mampu menangani lonjakan lalu lintas secara lebih mulus.
Untuk menghindari penambahan latensi akibat pencatatan log, Bhullar menggunakan BullMQ sebagai antrean pekerjaan. Setiap permintaan langsung direspons sementara pekerjaan log dikirim ke antrean dan diproses secara asinkron oleh worker terpisah. Hasilnya, latensi kritis berkurang hingga 35 persen.
Worker BullMQ tidak hanya menulis ke MongoDB, tetapi juga mengirim event melalui Socket.io ke dashboard React yang dibuat dengan Vite dan Recharts. Dashboard menampilkan metrik seperti tingkat permintaan per detik, hit rate limit, dan persentil latensi secara real-time.
Keberhasilan proyek ini membuktikan bahwa kombinasi Redis, BullMQ, dan Socket.io dapat menghasilkan sistem yang responsif dan informatif. Bagi developer di Indonesia, terutama yang bekerja di startup dengan arsitektur mikroservis, implementasi seperti ini sangat relevan.
Di Indonesia, penggunaan API gateway masih didominasi oleh solusi komersial seperti Kong atau AWS API Gateway. Namun, proyek open source seperti ini membuka peluang bagi tim pengembang untuk membangun gateway yang disesuaikan dengan kebutuhan spesifik tanpa biaya lisensi.
Bhullar menekankan bahwa latensi menjadi musuh utama dalam sistem terdistribusi. "Never do sync I/O on the request path. Ever," tegasnya dalam dokumentasi proyek. Pelajaran ini menjadi pengingat pentingnya arsitektur asinkron dalam menjaga performa.
Ke depan, proyek ini dapat dikembangkan lebih lanjut dengan menambahkan fitur load balancing, health checks, dan dukungan multi-data center. Bagi mahasiswa atau developer yang ingin mempelajari sistem terdistribusi, kode sumber di GitHub Bhullar bisa menjadi titik awal yang solid.
Keseluruhan proyek ini membuktikan bahwa mahasiswa sekalipun mampu membangun infrastruktur yang kompleks dengan alat yang tepat. Dengan semakin matangnya ekosistem Node.js dan Redis, bukan tidak mungkin akan lahir lebih banyak inovasi serupa dari developer Indonesia.