cara implementasi rate limiting dengan redis dan express",

cara implementasi rate limiting dengan redis dan express

Cara Implementasi Rate Limiting dengan Redis dan Express

Rate limiting itu penting banget buat melindungi API kamu dari spam request atau serangan DDoS. Nah, kombinasi Redis dan Express adalah solusi yang cukup populer dan efektif. Redis sebagai in-memory database yang super cepat, cocok banget buat nyimpen data sementara seperti jumlah request per user.

Kenapa Pakai Redis?

Redis punya fitur TTL (Time To Live) yang memungkinkan data otomatis hilang setelah waktu tertentu. Ini pas banget buat rate limiting karena kita bisa set counter request yang akan reset sendiri setiap menit atau jam. Plus, Redis itu cepat banget, jadi nggak akan bikin API kamu jadi lemot.

Setup Awal

Pertama, install dulu package yang dibutuhkan:

  • express - framework web
  • redis - client Redis untuk Node.js
  • express-rate-limit - middleware rate limiting
  • rate-limit-redis - store untuk express-rate-limit

Pastikan Redis server sudah running di komputer kamu. Kalau belum install, bisa pakai Docker atau install langsung sesuai OS yang kamu pakai.

Implementasi Sederhana

Konsep dasarnya gini: setiap kali ada request masuk, kita cek berapa kali IP address atau user ID tersebut sudah request dalam periode waktu tertentu. Kalau sudah melebihi batas, tolak requestnya dengan response 429 (Too Many Requests).

Kamu bisa bikin middleware custom atau pakai library yang sudah ada. Dengan rate-limit-redis, kamu tinggal setup connection ke Redis, tentuin berapa maksimal request yang diperbolehkan, dan berapa lama window timenya. Misalnya, maksimal 100 request per 15 menit.

Strategi Rate Limiting

Ada beberapa strategi yang bisa kamu pakai:

  • Fixed Window - counter reset di waktu yang fixed, misalnya setiap jam tepat
  • Sliding Window - lebih smooth, menghitung request dalam rolling time window
  • Token Bucket - setiap user punya "token" yang berkurang tiap request dan refill secara berkala

Untuk kebanyakan kasus, sliding window adalah pilihan terbaik karena lebih adil dan nggak ada "burst" request di awal window baru.

Tips Tambahan

Beberapa hal yang perlu diperhatikan: pertama, tentukan key yang tepat untuk tracking. Bisa pakai IP address, user ID, atau kombinasi keduanya. Kedua, kasih response yang informatif ke client, jangan cuma 429 aja tapi kasih tau kapan mereka bisa request lagi lewat header seperti X-RateLimit-Remaining dan Retry-After.

Terakhir, jangan lupa monitoring. Pantau berapa banyak request yang di-reject dan dari mana asalnya. Ini bisa bantu kamu detect serangan atau adjust limit yang lebih reasonable.

Dengan implementasi rate limiting yang proper, API kamu akan lebih aman dan stabil. Selamat mencoba!

Next Post Previous Post
No Comment
Add Comment
comment url