Backend

Rate Limiting API dengan Token Bucket: Cara Simpel Menjaga Server Tetap Waras

Nuriskha Ainun Fahmi
27 September 2026 · 1 menit baca
Rate Limiting API dengan Token Bucket: Cara Simpel Menjaga Server Tetap Waras
Rate limiting itu bukan cuma soal menolak request. Dengan algoritma token bucket, kita bisa membatasi beban ke server dengan cara yang adil dan gampang dipahami. Ini penjelasan versi praktisnya.

Setiap API publik pasti menghadapi masalah yang sama, ada saja pengguna atau bot yang mengirim request jauh lebih banyak dari batas wajar. Kalau tidak dibatasi, satu pengguna rakus bisa menghabiskan sumber daya server dan pengguna lain yang normal ikut kena imbasnya. Di sinilah rate limiting berperan.

Algoritma yang paling sering saya pakai adalah token bucket. Bayangkan sebuah ember yang diisi token dengan kecepatan tetap, misalnya 25 token per detik sampai penuh. Setiap request yang datang harus mengambil satu token dari ember. Kalau tokennya ada, request diproses. Kalau embernya kosong, request ditolak dengan status 429 dan diminta menunggu.

Enaknya token bucket, dia tetap memberi ruang untuk lonjakan sesaat. Selama ember masih punya simpanan token, pengguna boleh mengirim beberapa request sekaligus. Tapi kalau lonjakannya terus-terusan, ember akan kosong dan laju request otomatis turun mengikuti kecepatan isi ulangnya. Adil buat pengguna normal, tetap tegas buat yang berlebihan.

Ada satu pelajaran menarik yang saya dapat waktu menguji variasi algoritma ini. Request tidak semuanya sama berat. Ada endpoint yang selesai dalam 5 milidetik, ada yang butuh 300 milidetik karena harus mengolah data. Kalau semua request dihitung satu token, endpoint berat jadi tidak terlindungi. Solusinya, biaya token dibuat dinamis mengikuti beban historis tiap endpoint, misalnya dari rata-rata waktu proses yang diperhalus dengan teknik EWMA.

Dengan biaya dinamis, endpoint yang sedang berat otomatis memakan token lebih banyak, jadi pengguna yang membombardir endpoint itu akan lebih cepat kena batas. Sementara endpoint ringan tetap longgar seperti biasa. Hasil ujinya cukup terasa, server lebih stabil saat ada perubahan beban mendadak dibanding pembatasan yang biayanya tetap.

Buat yang baru mulai, versi paling sederhana dari token bucket pun sudah jauh lebih baik daripada tidak ada rate limiting sama sekali. Implementasinya pendek, mudah diuji, dan bisa dikembangkan pelan-pelan sesuai kebutuhan.

Bagikan Artikel

Tags Artikel

APIRate LimitingBackend