Rate limiting dasar untuk API web: algoritma dan cara menerapkannya
Rate limiting membatasi jumlah permintaan yang boleh dikirim klien dalam jangka waktu tertentu. Tujuannya melindungi server dari penyalahgunaan, serangan brute force, dan lonjakan beban. Server yang melampaui batas sebaiknya membalas dengan status 429 beserta header Retry-After.
Apa itu rate limiting dan kenapa penting?
Rate limiting adalah kontrol yang menolak permintaan berlebih dari satu klien. Tanpanya, bot atau skrip yang salah tulis bisa menghabiskan sumber daya server sehingga pengguna lain terdampak.
- Mencegah tebakan kata sandi pada endpoint login.
- Melindungi endpoint mahal seperti pencarian atau ekspor laporan.
- Menjaga keadilan pemakaian antar pelanggan.
- Mengendalikan biaya jika API memanggil layanan berbayar.
Algoritma apa yang umum dipakai?
Tiga pendekatan paling lazim adalah fixed window, sliding window, dan token bucket. Fixed window paling sederhana, tetapi bisa menerima dua kali lipat batas di pergantian jendela waktu.
- Fixed window: hitung permintaan per menit, mudah tetapi kasar.
- Sliding window: jendela bergeser sehingga lebih adil.
- Token bucket: ember token yang terisi ulang, mengizinkan lonjakan singkat.
Gunakan status 429
RFC 6585 mendefinisikan kode 429 Too Many Requests. Sertakan header Retry-After agar klien tahu kapan boleh mencoba lagi.
Cara menerapkannya
Terapkan batas di lapisan terdepan, misalnya API gateway atau reverse proxy, lalu tambahkan batas khusus per endpoint di aplikasi. Simpan hitungan di penyimpanan cepat seperti Redis agar konsisten antar server.
- Tentukan identitas pembatas: alamat IP, kunci API, atau ID pengguna.
- Tetapkan batas awal yang longgar lalu perketat berdasarkan data.
- Beri batas lebih ketat pada login dan reset kata sandi.
- Dokumentasikan batas agar klien yang sah bisa menyesuaikan.
Ringkasan dan langkah berikutnya
Mulai dari endpoint yang paling sensitif, ukur trafik normal, lalu tetapkan batas sedikit di atas pemakaian wajar.
- Kode status: 429 Too Many Requests.
- Header penting: Retry-After.
- Penyimpanan hitungan: Redis atau sejenisnya.
- Rujukan: RFC 6585 di rfc-editor.org.
Topik terkait yang bisa Anda baca berikutnya: rate limit untuk API AI, webhook yang andal, pagination API, dan OWASP Top 10.
Kesalahan yang perlu dihindari
Jangan membatasi berdasarkan IP saja jika banyak pengguna berbagi satu IP kantor. Jangan pula membalas dengan pesan galat yang membuka detail internal. Pastikan batas tidak memblokir pemantau uptime dan webhook yang sah.
Pertanyaan singkat seputar topik ini
Kode status apa untuk permintaan yang melebihi batas?
Gunakan 429 Too Many Requests, didefinisikan dalam RFC 6585, disertai header Retry-After.
Algoritma rate limiting mana yang paling umum?
Fixed window, sliding window, dan token bucket. Token bucket populer karena mengizinkan lonjakan singkat tetapi tetap membatasi rata-rata.
Pertanyaan yang sering muncul
Ya, tanpa komitmen. Kami balas dalam 1×24 jam kerja.
Tentang Tim AnabisolutionsStudio digital dari Pekanbaru yang mengerjakan website, aplikasi, dan sistem untuk klien di Riau dan sekitarnya.
Anabisolutions

