Lançamos a limitação de taxa de Assemblies para mais estabilidade
Recentemente, tivemos alguns episódios de lentidão, com tempos de fila e taxas de erro elevados. Além das interrupções do Route 53, do RDS e da LAN que tivemos no EC2, parte desses problemas também foi causada pelo envio de requisições demais de uma só vez, por exemplo ao importar uma grande biblioteca de vídeos ou imagens. Hoje estamos resolvendo isso com a introdução da limitação de taxa.
De modo geral, o comportamento de um cliente não deveria afetar os demais. Como todos os nossos clientes ainda compartilham uma única fila de Jobs, não conseguimos garantir isso sem usar limites de taxa. Já resolvemos a maior parte dos problemas com a introdução de filas de prioridade (um cliente com X Jobs na fila terá seus próximos Jobs adicionados ao final da fila, enquanto os Jobs de outros clientes entram no início) e com a redução do tempo de escalonamento para 2 minutos por máquina de oito núcleos, entre outras medidas.
Mas, por mais rápido que consigamos escalar, sempre existem limites no mundo físico. No passado, tivemos grandes importações em lote, em que milhares de vídeos ou dezenas de milhares de imagens eram importados de uma só vez. Isso fez nossa plataforma escalar para 100 máquinas, mas Assemblies de outros clientes ainda podiam levar até 90 minutos para ser executadas, o que é totalmente inaceitável.
Além de importações em massa legítimas, um código de integração com bugs também pode fazer com que requisições demais sejam enviadas em um período muito curto. Isso pode gerar faturas altas no fim do mês, que o cliente não havia previsto.
Resumindo, estamos lidando com esses problemas limitando as requisições que você pode enviar.
Por enquanto, limitamos apenas o número de Assemblies que você pode criar a 250 por minuto. Acreditamos que isso é mais do que suficiente para um uso razoável. Vamos avaliar de perto o impacto dessa medida e introduzir mais limites conforme necessário.
Se você atingir o limite de taxa, receberá um erro 413 RATE_LIMIT_REACHED. O JSON do erro
tem uma subchave info.retryIn, que informa quantos segundos você precisa esperar antes de
criar sua próxima Assembly. Ao fornecer essa informação, esperamos facilitar uma
integração tranquila para nossos clientes e queremos garantir que sua importação não fique limitada
nem um segundo a mais do que o necessário.
Lembre-se de que os limites de requisições são um recurso para proteger nossa plataforma do uso excessivo (na maioria das vezes indevido), garantindo uma experiência mais estável para todos. Também permitimos limites de taxa diferentes para cada cliente. Então, se você achar que precisa de um limite de taxa maior, abra um ticket de suporte e eu terei prazer em aumentá-lo.
