Implementando rate limiting em uma API
Pergunta
Como você implementaria rate limiting por usuário em uma API com múltiplas instâncias rodando atrás de um load balancer?
Resposta esperada
O contador de requisições não pode viver na memória de cada instância — cada instância veria só uma fração do tráfego do usuário e o limite real seria multiplicado pelo número de instâncias. A implementação correta usa um store compartilhado (Redis, geralmente com um script Lua atômico ou comandos INCR+EXPIRE) para que todas as instâncias consultem e atualizem o mesmo contador. O retorno ao cliente deve incluir headers padrão (X-RateLimit-Remaining, Retry-After) para que ele saiba quando tentar de novo.
Por que perguntam isso
Esse é o erro mais comum de quem nunca rodou rate limiting em produção multi-instância: implementar em memória e o limite 'não funcionar' porque cada instância conta separado.