Rate limit distribuído com Redis: quando um servidor não basta
Com vários servidores, cada um conta as requisições sozinho e o limite real vira o dobro ou o triplo. Como fazer rate limiting distribuído com Redis.
Por Equipe We Codex3 min de leitura
O rate limiting com contadores em memória funciona bem com um único servidor (Rate limiting em Node.js: como proteger suas APIs contra sobrecarga e abusos sem afetar a UX). Quando a aplicação roda em várias instâncias — ou em funções serverless —, cada uma conta separadamente. Um limite de 100 requisições por minuto vira 300 com três servidores, e o login protegido contra força bruta fica três vezes mais vulnerável.
A solução: um contador compartilhado
Todas as instâncias consultam e incrementam o mesmo contador num armazenamento central e rápido. O Redis é a escolha mais comum.
import { RedisStore } from 'rate-limit-redis'
export const loginLimiter = rateLimit({
windowMs: 15 * 60_000,
limit: 5,
store: new RedisStore({ sendCommand: (...args: string[]) => redis.call(...args) }),
})Algoritmos
- Janela fixa: simples; permite rajadas na virada da janela.
- Janela deslizante: distribuição mais justa.
- Token bucket: permite pequenas rajadas e controla a média — ótimo para APIs.
Cuidados
- 1.E se o Redis cair? Decida: liberar (prioriza disponibilidade) ou bloquear (prioriza proteção). Para login, um limite local de emergência é um bom meio-termo (Degradação graciosa: funcionar pela metade é melhor que sair do ar).
- 2.Chaves bem definidas: por IP, usuário, rota e combinações.
- 3.Expiração automática das chaves para não acumular memória.
- 4.Latência: o Redis próximo da aplicação.
Serverless
Funções sem estado exigem obrigatoriamente um contador externo (Serverless na Vercel: limites que você precisa conhecer).
O cliente também participa
Respostas 429 com Retry-After e clientes que respeitam o backoff (Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente).
Veja Segurança Anti-Hacker da We Codex ou fale com a gente.
- Rate Limit
- Redis
- Escalabilidade
- Segurança
Resolver de vez, com quem faz isso todo dia
Quer saber quão exposto está o seu sistema hoje?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Segurança- Ler artigo
Segurança3 min
Rate limiting em Node.js: como proteger suas APIs contra sobrecarga e abusos sem afetar a UX
Sem limite de requisições, um script mal-intencionado (ou um bug no seu próprio app) derruba a API. Veja como aplicar rate limit no Node.js sem bloquear clientes legítimos.
- Ler artigo
Backend & APIs3 min
Serverless na Vercel: limites que você precisa conhecer
Funções serverless escalam sozinhas e custam pouco — até baterem em limites de tempo, memória ou conexões com o banco. O que saber antes de depender delas.
- Ler artigo
Segurança3 min
Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente
Seu app recebe 429 e responde tentando de novo imediatamente — piorando tudo. Veja como implementar exponential backoff com jitter e dar um feedback decente ao usuário.