O que é Rate Limit? O Guia Completo para Controlar Requisições em APIs
Diogo Dourado
Imagine que a infraestrutura da sua aplicação é um castelo medieval. Cada sistema cumpre uma função: o palácio do rei (o core do negócio), a forjaria (uma feature específica), os estábulos (a plataforma de suporte). A única forma de interagir com o mundo exterior é através dos grandes portões — seus Gateways e APIs.

Agora, como você controla o fluxo nesses portões? Se qualquer um puder entrar e sair quantas vezes quiser, você pode gerar um caos: sobrecarga de recursos, abuso por parte de alguns usuários e até mesmo ataques coordenados.
É aqui que entram os guardas com um livro de regras. Eles aplicam o Rate Limiting: uma política que define um limite de quantas vezes um visitante pode passar pelos portões em um certo período. Se alguém exceder esse limite, o acesso é temporariamente bloqueado.
Neste guia, vamos traduzir essa analogia para o universo da engenharia de software, entendendo por que e como implementar o controle de requisições em seus sistemas.
Por que o Rate Limiting é Essencial?
A gestão de acesso não é apenas uma boa prática, é uma necessidade estratégica baseada em três pilares.
1. Equidade e Prevenção de Abuso
O objetivo principal do Rate Limiting é garantir o uso justo (fair use) dos recursos. Ele impede que um único usuário (ou um script mal-intencionado) monopolize a capacidade do sistema, degradando a experiência para todos os outros.
No nosso castelo:Não queremos que um único comerciante use o portão 100 vezes por hora, impedindo que outros cidadãos façam suas travessias diárias.
2. Controle de Custos e Modelo de Negócio
Cada requisição (request) que seu sistema recebe tem um custo computacional. Em uma arquitetura de microsserviços ou ao consumir APIs de terceiros (como a do Google Maps), esse custo pode ser diretamente financeiro.
Muitas APIs comerciais estruturam seus planos de preços com base no volume de requisições. Implementar um Rate Limiter internamente é crucial para gerenciar esses custos e até para criar seu próprio modelo de monetização.
No nosso castelo:Comerciantes que precisam de mais acesso pagam uma taxa maior, pois demandam mais atenção dos guardas e mais recursos do reino.

Custo API de Mapas sobre informações de ambiente da Google
3. Segurança e Proteção
Do ponto de vista da segurança, o Rate Limiting é sua primeira linha de defesa contra diversos tipos de ataques de negação de serviço (DoS) e força bruta.
Imagine um atacante que descobre o endpoint de "reset de senha". Sem um limite, ele pode disparar milhões de requisições, sobrecarregando o sistema ou tentando adivinhar tokens de segurança. Ao impor um limite (ex: 5 tentativas por minuto por IP), você mitiga drasticamente o risco. Frequentemente, sistemas implementam um bloqueio exponencial: a cada violação, o tempo de espera aumenta, desencorajando o atacante.
Como Implementar um Rate Limiter?
Entendemos o "porquê", mas como colocar isso em prática? A métrica central aqui é a de Requisições Por Segundo (RPS), que mede a vazão (throughput) do seu sistema. O desafio é criar uma lógica que monitore e bloqueie os acessos de um cliente que ultrapasse o limite definido (ex: 5 RPS).
A implementação envolve armazenar o histórico de requisições de cada cliente (identificado por IP, chave de API ou token de usuário) e verificar a contagem a cada nova chamada.
Para entender o conceito em detalhes e ver a construção de um Rate Limiter do zero, assista à minha live completa sobre o assunto:
Neste vídeo, eu explico a fundo o papel do Gateway, a estrutura de dados necessária (HashMap) para guardar o estado das requisições e os desafios de uma implementação inicial em memória.
Escalando a Solução com Redis
A solução inicial, que usa um mapa em memória, funciona bem para uma única instância da aplicação. Mas o que acontece quando seu sistema precisa escalar horizontalmente, com múltiplos servidores rodando em paralelo? Cada servidor teria seu próprio mapa, tornando o Rate Limit inconsistente.
É aqui que entram soluções de estado distribuído.
Seu desafio prático é: Evoluir a solução inicial para um ambiente distribuído, garantindo que o limite de 5 requisições por segundo por cliente seja respeitado em toda a sua infraestrutura.
A ferramenta ideal para centralizar esse controle de estado de forma performática é o Redis.
Para te guiar nesta missão, preparei um vídeo prático focado em como implementar um Rate Limiter escalável com Redis, abordando desde a configuração com Docker até o uso de comandos atômicos para evitar condições de corrida.