Neste artigo vamos explicar com detalhes o que é um rate limit e como ele funciona como medida de segurança aqui na Pluga.
Quando um grande volume de notificações é capturado ou enviado por uma ferramenta via API, pode acontecer uma sobrecarga nessa ferramenta e isso pode impactar significativamente o processamento dos dados.
Por isso, é comum que ferramentas web (que possuem algum método de integração) definam um limite para que sua API seja acionada ou consumida, tanto para a captura quanto para o envio de dados, a fim de evitar uma sobrecarga e, consequentemente, uma desestabilização da API.
As limitações em si podem variar de acordo com a ferramenta e com os métodos de captura dos dados. Atualmente, aqui na Pluga temos duas formas de captura.
Métodos de captura de dados.
Atualmente, há dois métodos diferentes de captura de dados nas ferramentas que temos integradas aqui na Pluga e eles podem variar de acordo com a ferramenta. Os métodos são:
Esse é um método em que a ferramenta de origem dos dados fica passiva aguardando que a Pluga busque os dados na API. Então, a cada 15 minutos a Pluga faz uma busca na ferramenta de origem e verifica se há novas informações desde a última busca para serem capturadas. Caso haja, esses dados serão processados e enviados para a próxima etapa do seu fluxo.
Pode ser que seus eventos sejam capturados antes dos 15 minutos, já que a busca ocorre a cada 15 minutos, ou seja, caso os dados que devem ser capturados sejam inseridos num momento próximo à captura seguinte, eles serão capturados em menos tempo.
A opção de 15 minutos é porque acreditamos ser um intervalo satisfatório para que o envio automático seja rápido sem sobrecarregar nosso sistema e principalmente as APIs dos parceiros que lidam com nossas verificações constantes.
Esse é um método em que a Pluga fica passiva aguardando que a ferramenta nos envie os dados através da URL de webhook. Nesse caso, o tempo de captura independe da Pluga, pois é a ferramenta de origem que faz o envio. Normalmente, nesse método os eventos são processados em um tempo bem menor que 15 minutos, pois assim que o gatilho é acionado na origem, a Pluga recebe os dados e já os envia para a próxima etapa do seu fluxo.
Mas, caso a ferramenta de origem passe por alguma instabilidade e demore mais tempo para enviar os eventos, a Pluga não consegue fazer essa busca na API da ferramenta e continua sendo passiva aguardando recebê-los.
Nesse método, a Pluga deve receber os dados da ferramenta de origem através de uma URL, que corresponde ao “endereço virtual” da sua automatização. É possível comparar com um endereço de e-mail, e tudo que for enviado para essa URL, será recebido pela sua automatização.
Rate Limit
Em ambos os métodos, pode ser que sua automatização gere uma quantidade muito grande de eventos em um intervalo curto de tempo. Por isso, a Pluga se coloca no direito de limitar a quantidade de notificações que deve processar em uma janela de captura.
Nos casos da integração via webhook, definimos o seguinte comportamento:
- Definimos o limite de receber até 30 notificações por segundo em cada URL individualmente;
- Caso esse limite seja atingido, será retornado um código de status 429 que indicará o rate limit;
- As notificações recebidas enquanto esse código for retornado deverão ser reenviadas depois de alguns minutos;
- É fundamental que a sua ferramenta de origem dos dados tenha uma lógica de reenviar essas notificações. Caso contrário, elas serão perdidas.
Esse limite para o consumo da API é importante para evitar que ela sofra uma sobrecarga e gere um impacto maior no processamento de eventos.
Essas são medidas tomadas a fim de prevenir impactos negativos na API e, consequentemente, no sistema de processamento de dados da Pluga.
Nós buscamos, à medida em que nosso produto e infraestrutura forem evoluindo, otimizar ainda mais esses processamentos. É um trabalho contínuo, em que nos dedicamos a oferecer uma experiência sempre melhor para os nossos clientes.
Dúvidas?
Caso ainda tenha dúvidas, é só solicitar um atendimento que nosso time de suporte entrará em contato dentro de algumas horas ;)