Testcontainers com .NET: testes que conversam com coisas de verdade
Testcontainers sobe um Postgres, Redis ou LocalStack de verdade em container Docker durante a execução dos testes, e derruba tudo no final, sem deixar rastro no ambiente local.
BLOG
Tecnologia, código, experimentos e algumas opiniões não solicitadas.
Testcontainers sobe um Postgres, Redis ou LocalStack de verdade em container Docker durante a execução dos testes, e derruba tudo no final, sem deixar rastro no ambiente local.
Uma suíte inteira de testes unitários com repositório, banco e API externa mockados pode passar 100% verde e ainda assim não provar que o sistema funciona quando essas peças de verdade entram em cena.
Rastrear chamada de modelo, tokens consumidos e ferramenta acionada é o que separa depurar um agente de tentar adivinhar por que ele respondeu daquele jeito à uma da manhã.
Um embedding transforma texto num vetor de números que representa significado, e comparar dois vetores com similaridade de cosseno é como um sistema decide se duas frases 'falam da mesma coisa'.
Amazon Bedrock dá acesso gerenciado a modelos de diferentes provedores, incluindo Claude, pela mesma API Converse, sem precisar gerenciar infraestrutura de inferência.
Um pipeline RAG em .NET é uma sequência concreta de etapas: ingerir texto, gerar embedding, guardar num vector store, buscar por similaridade e injetar o resultado no prompt antes de gerar a resposta.
MCP não compete com REST ou gRPC. Ele consome e envolve APIs já existentes para traduzir contexto e ação para um modelo de linguagem, numa camada diferente da que a API resolve.
Retry sem critério pode sobrecarregar um serviço já instável. Polly v8 no .NET oferece Circuit Breaker, Timeout e Fallback como parte da mesma pipeline de resiliência.
Monólito modular organiza o código em módulos fracamente acoplados dentro do mesmo processo, entregando parte da disciplina de microsserviços sem o custo operacional da distribuição.
Idempotência garante que repetir a mesma requisição ou reprocessar a mesma mensagem não produza efeito colateral duplicado, e isso muda como POST, filas e retries deveriam ser tratados.