Cara Membuat Rate Limiter

Cara Membuat Rate Limiter

Cara Membuat Rate Limiter untuk Aplikasi Kamu

Pernah nggak sih aplikasi kamu tiba-tiba down gara-gara ada yang spam request? Nah, di sinilah rate limiter berperan penting. Rate limiter itu kayak satpam digital yang ngatur berapa banyak request yang boleh masuk dalam waktu tertentu. Yuk, kita bahas cara bikinnya!

Kenapa Perlu Rate Limiter?

Sebelum mulai coding, penting banget buat paham kenapa kita butuh rate limiter. Fungsinya simpel tapi crucial:

  • Mencegah abuse dan spam dari user atau bot jahat
  • Melindungi server dari overload
  • Memastikan semua user dapat akses yang fair
  • Menghemat biaya infrastruktur

Konsep Dasar Rate Limiting

Ada beberapa algoritma yang bisa kamu pakai, tapi yang paling populer adalah Token Bucket dan Sliding Window. Token Bucket itu ibaratnya kamu punya ember berisi token, setiap request mengambil satu token. Kalau tokennya habis, ya request ditolak. Token ini diisi ulang secara berkala.

Sedangkan Sliding Window menghitung jumlah request dalam periode waktu yang bergeser. Misalnya, maksimal 100 request per menit, sistem akan ngecek berapa request yang masuk dalam 60 detik terakhir.

Implementasi Sederhana

Untuk implementasi basic, kamu bisa pakai in-memory storage seperti dictionary atau hash map. Simpan IP address atau user ID sebagai key, dan tracking jumlah request plus timestamp-nya. Setiap ada request masuk, cek dulu apakah sudah melebihi limit atau belum.

Kalau aplikasi kamu sudah production dan pakai multiple server, lebih baik pakai Redis atau Memcached. Kenapa? Karena mereka bisa di-share antar server dan punya fitur expiry otomatis yang memudahkan hidup kamu.

Tips Implementasi

  • Tentukan limit yang masuk akal. Jangan terlalu ketat sampai user normal kena block, tapi jangan terlalu longgar juga
  • Kasih response header yang informatif seperti X-RateLimit-Remaining biar user tahu sisa quota mereka
  • Implementasikan different tiers untuk user berbeda. Premium user bisa dapat limit lebih tinggi
  • Jangan lupa logging untuk monitoring dan debugging

Error Handling

Kalau user kena rate limit, kembalikan HTTP status code 429 (Too Many Requests) dengan pesan yang jelas. Kasih tahu juga kapan mereka bisa coba lagi lewat header Retry-After. User experience yang baik itu penting!

Rate limiter yang baik adalah yang balance antara proteksi dan user experience. Mulai dari implementasi sederhana dulu, terus improve seiring kebutuhan aplikasi kamu berkembang. Happy coding!

Next Post Previous Post
No Comment
Add Comment
comment url