Rate Limiting em APIs .NET: porque recursos não são infinitos
O middleware nativo do ASP.NET Core oferece quatro algoritmos de rate limiting, partição por IP ou usuário e resposta 429 configurável, sem biblioteca extra.
BLOG
Tecnologia, código, experimentos e algumas opiniões não solicitadas.
O middleware nativo do ASP.NET Core oferece quatro algoritmos de rate limiting, partição por IP ou usuário e resposta 429 configurável, sem biblioteca extra.
Resiliência em sistemas de IA não é uma única camada de proteção, é a combinação de validação de entrada, contingência de provedor e recuperação de formato, porque cada uma falha de um jeito diferente …
Um trace só continua fazendo sentido depois que atravessa a rede se o contexto de rastreamento for propagado no header de cada chamada HTTP entre serviços, algo que o .NET já faz automaticamente na ma …
Chamar um LLM dentro do ciclo síncrono de uma requisição web trava a interface por segundos: filas e o padrão Asynchronous Request-Reply resolvem isso sem esconder o problema, só adiam a resposta.
Quando o provedor principal de IA responde 429 ou 503, um pipeline de fallback com Polly permite alternar para um provedor secundário sem propagar o erro para quem fez a chamada original.
Strategy Pattern combinado com Keyed Services do .NET permite escolher, em tempo de execução, qual provedor de IA atende cada chamada, sem condicionais espalhadas pelo código.
Adicionar chamadas a um provedor de IA a um projeto em Clean Architecture não exige camada nova, só decidir onde a interface do cliente de IA mora e o que fica de fora do domínio.
Stryker.NET altera propositalmente o código de produção e roda a suíte de testes contra cada alteração. Se nenhum teste falhar, a suíte não teria percebido aquele bug se ele fosse real.
ActivitySource gera os traces, Meter gera as métricas, e o exportador OTLP manda tudo isso para o backend de observabilidade escolhido, sem acoplar o código da aplicação a um fornecedor específico.
Linha executada não é a mesma coisa que comportamento verificado. Um teste sem asserção relevante ainda conta como cobertura, e é exatamente aí que a métrica engana quem só olha o número final.