System Design/04 - Cloud Design Patterns/Design & Implementation2 min
Ambassador
- Que problema isso resolve?
- Quando usar / quando NÃO usar?
- Qual o principal trade-off?
- Como isso falha em produção?
Conceito
Um proxy que intermedeia as chamadas de saída da aplicação para serviços externos, cuidando de retry, timeout, circuit breaker, TLS e telemetria.
aplicação → ambassador → serviço remoto
É um Sidecar especializado no tráfego de saída. Enquanto o sidecar genérico trata entrada e saída, o ambassador foca em proteger a aplicação das dependências externas.
Trade-offs
O caso de uso mais forte é o legado: uma aplicação antiga que não pode ser modificada — sem código-fonte, sem time, sem build funcional — ganha resiliência moderna sem nenhuma alteração. Retry com backoff, circuit breaker e mTLS passam a existir porque o ambassador os implementa.
O segundo é o poliglota: a mesma política de resiliência para todas as linguagens, atualizável centralmente.
Os custos repetem os do sidecar — mais um processo, mais latência local, mais uma camada para depurar — com um agravante próprio: a aplicação não sabe que existe retry. Ela vê uma única chamada demorada onde o ambassador fez três tentativas. Isso confunde a interpretação de métricas e, pior, pode multiplicar retries se a aplicação também tentar de novo por conta própria (Retry Storm).
Por isso a regra: decida onde o retry mora e retire dos outros lugares. Retry no ambassador e na aplicação, simultaneamente, é amplificação garantida.
Hoje, na prática, o padrão raramente é implementado isoladamente: ele vem embutido no service mesh, que trata entrada e saída com a mesma configuração.
Exemplo prático
Uma aplicação legada em COBOL chama um gateway de pagamento por HTTP simples, sem timeout, sem retry, sem TLS.
O ambassador é colocado no caminho: a aplicação passa a chamar localhost:8080, e o proxy cuida do resto — TLS até o gateway, timeout de 5 s, três tentativas com backoff e jitter, circuit breaker após cinco falhas, métricas e traces.
Zero linha alterada na aplicação. E o ganho não é apenas resiliência: pela primeira vez existe visibilidade sobre latência e taxa de erro daquela integração.
Relacionado
Parte de Design & Implementation · roadmap.sh/system-design