Parabéns pelo vídeo, cara! Muito didático. Sobre o tema, tenho uma dúvida: qual seria a diferença, vantagens e desvantagens dessa implementação do Rate Limiting usando o pacote Go para usar o Redis, por exemplo? Qual caso de uso/cenários você recomenda mais um ou outro?
Obrigado pelo comentário! Sobre a diferença: o Rate Limiting em Go (in-memory) é mais simples, rápido e ideal para aplicações rodando em uma única instância, mas não funciona bem em ambientes distribuídos. Já com Redis, você consegue sincronizar limites entre várias instâncias, o que é bom para aplicações distribuídas, mas adiciona dependência, aplicação/cluster externo e um pouco de latência de rede. Recomendo in-memory para soluções simples e Redis para arquiteturas escaláveis
O ideal para caso eu tenha um limite geral de requisições seria então fazer o limiter global em conjunto com o limiter por ip? Tentando evitar que apenas um ip gaste todo o limite mas também evitando um estouro por uma quantidade grande de usuários
Seria legal uma configuração dessa sim, isso coloca uma grande camada de segurança na aplicação. O bloqueio por IP nem sempre é tão necessário, acaba sendo bem específico, mas funciona muito bem se implementado.
Parabéns pelo vídeo, cara! Muito didático. Sobre o tema, tenho uma dúvida: qual seria a diferença, vantagens e desvantagens dessa implementação do Rate Limiting usando o pacote Go para usar o Redis, por exemplo? Qual caso de uso/cenários você recomenda mais um ou outro?
Obrigado pelo comentário!
Sobre a diferença: o Rate Limiting em Go (in-memory) é mais simples, rápido e ideal para aplicações rodando em uma única instância, mas não funciona bem em ambientes distribuídos. Já com Redis, você consegue sincronizar limites entre várias instâncias, o que é bom para aplicações distribuídas, mas adiciona dependência, aplicação/cluster externo e um pouco de latência de rede.
Recomendo in-memory para soluções simples e Redis para arquiteturas escaláveis
@@huncoding , genial. Obrigado!
O ideal para caso eu tenha um limite geral de requisições seria então fazer o limiter global em conjunto com o limiter por ip? Tentando evitar que apenas um ip gaste todo o limite mas também evitando um estouro por uma quantidade grande de usuários
Pensa no exemplo do Stripe, tu gera uma Key que pode ter X numero de req/s. Seria a mesma coisa
Seria legal uma configuração dessa sim, isso coloca uma grande camada de segurança na aplicação. O bloqueio por IP nem sempre é tão necessário, acaba sendo bem específico, mas funciona muito bem se implementado.