“Rate Limiters” são essenciais, mas precisam ser implementados do jeito certo

Em sistemas distribuídos, um rate limiter é utilizado para restringir o tráfego de uma aplicação cliente para os servidores. Toda vez que um limite de requisições é atingido, o excedente é contido (em uma fila, por exemplo) para processamento posterior ou é descartado. São essenciais, mas precisam ser implementados adequadamente.

A adoção de rate limiters previne problemas de negação de serviço (DoS), em função de uso abusivo, intencional ou não, de um recurso. Por isso, eles são comuns nas arquiteturas de sistemas projetados para a escalabilidade. O Twitter, por exemplo, restringe o número de tuítes, por usuário, a 2400 por dia. No Instagram, é possível realizar no máximo 200 chamadas às APIs por hora com um mesmo token

Além de evitar a negação de serviços, rate limiters ajudam a controlar custos, sobretudo em ambientes onde os gastos estejam associados a pagamentos para terceiros conforme ordem de uso.

Rate limiters podem ser implementados em client-side, server-side ou em um middleware. Implementações em client-side tem como mérito principal a redução da pressão sobre a rede. Já implementações em server-side ou middleware são mais “confiáveis”, por estarem em ambientes gerenciados, e robustas, visto que permitem regras mais complexas.

Como recomendação geral, os limites devem ser definidos levando-se em conta:

  1. uso racional máximo do sistema, como exemplificado pelos cases que indicamos no Twitter e no Instagram, impedindo anomalias causadas por erros de implementação ou comportamento malicioso.
  2. capacidade de recursos “gargalo”, ou seja, os mais escassos e que mais fragilizam o sistema, garantindo continuidade mesmo em cenários de estresse.

Por economia, recursos de infraestrutura deveriam ser provisionados de acordo com o uso racional do sistema (determinado a partir da análise sob a perspectiva do negócio). Estipular um “uso racional máximo” é um exagero essencial para mediar relação com clientes com demandas fora da curva, entretanto, esta não pode ser a base para o provisionamento da infraestrutura. Logo, estabelecer limites, sobretudo para os gargalos, é essencial para a garantia da estabilidade.

A adoção de rate limiters, mais que um desafio técnico (cada vez menor, devido a popularização de gateways, service meshes e WAFs, Azure API Management, etc.), é impactante para a experiência dos usuários. Aplicações que não são projetadas para “atingir o limite”, não comunicando usuários apropriadamente, nem considerando impacto na experiência, representam empecilho para o crescimento e amadorismo de quem as projeta.

Rate limiters devem ser projetados junto com as aplicações, demonstrando que o time entende os cenários de uso. Jamais deveriam ser implementados de maneira improvisada como “recurso de desesperados” para “contornar” falhas de projeto.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Gabriel Oliveira
Gabriel Oliveira
3 anos atrás

Excelente artigo!

AUTOR

Juares Rigotti
Especialista em Infraestrutura com ênfase em ambientes de TI complexos, de larga escala e alta disponibilidade.

INSIGHTS EXIMIACO

Arquitetura de Software

Evolução e modernização de aplicações para suportar mudanças de escala.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Software

Consciência Situacional: O Sucesso do Software em Constante Evolução

Arquiteto de Software com experiência executiva em Tecnologia
Arquitetura de Software

Automação de Processos de Negócio: A Chave para Operações Eficientes e Lucrativas

Arquiteto de software e solução com larga experiência corporativa
Arquitetura de Software

A Evolução da Arquitetura de Software para Produtos Digitais Escaláveis

Arquiteto de Software com experiência executiva em Tecnologia
1
0
Queremos saber a sua opinião, deixe seu comentáriox

A sua inscrição foi realizada com sucesso!

O link de acesso à live foi enviado para o seu e-mail. Nos vemos no dia da live.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

“Rate Limiters” são essenciais, mas precisam ser implementados do jeito certo

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

“Rate Limiters” são essenciais, mas precisam ser implementados do jeito certo

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?