Rate limiting evita abuso e uso injusto. Implemente na app (middleware) ou na borda (WAF, nginx). Use limites por IP ou por chave; retorne 429 e Retry-After. Redes tier-III muitas vezes têm proteção DDoS a montante.
Por que rate limit
- Abuso: Bots e scrapers podem sobrecarregar sua API ou consumir cota. Rate limits limitam quanto um cliente pode fazer.
- Uso justo: Garante que um usuário pesado não prive os outros. Limites por usuário ou chave suportam cota e níveis.
- Custo e estabilidade: Reduz picos de tráfego inesperados e ajuda a dimensionar e orçar capacidade.
Onde implementar
- Aplicação: Middleware ou decorator que verifica contagem de requisições por chave/IP e retorna 429 quando passar do limite. Controle total; pode usar Redis para limites distribuídos.
- Borda: Nginx limit_req, WAF ou API gateway. Descarrega a app; consistente em todos os endpoints. Combine com nível de app para limites por usuário/chave.
- Provedor: Alguns hosts oferecem mitigação DDoS e rate limiting básico na borda. Complementa limites de app/borda.
Como implementar
- Por IP: Simples; bom para tráfego anônimo ou não autenticado. Pode ser contornado com muitas IPs (botnets).
- Por chave de API ou usuário: Melhor para APIs autenticadas; prende o limite à identidade. Use quando tiver chaves ou sessões.
- Janela deslizante ou fixa: Conte requisições em uma janela de tempo; deslizante é mais justo. Retorne 429 Too Many Requests e header Retry-After para clientes fazerem backoff.
Resumo
Rate limit na app ou na borda; use por IP ou por chave; retorne 429 e Retry-After. Reduz abuso e garante uso justo; combine com proteção DDoS do provedor para ataques volumétricos.




