Pular para o conteúdo principal

Exception Tracking

Descrição​

Quando uma requisição falha, uma instância de serviço lança uma exceção com mensagem de erro e stack trace. Com muitas instâncias em várias máquinas, essas exceções ficam espalhadas e se repetem, o que dificulta saber quais são novas, quais são frequentes e quais já foram tratadas.

O padrão envia todas as exceções a um serviço central de rastreamento de exceções. Ele as agrupa (de-duplica), acompanha sua ocorrência, notifica as pessoas desenvolvedoras e permite registrar investigação e resolução.

As exceções devem continuar sendo registradas nos logs, além de reportadas ao serviço de rastreamento.

Problemas que resolve​

  • Entender o comportamento da aplicação e diagnosticar problemas a partir de falhas
  • De-duplicar, registrar, investigar e corrigir exceções espalhadas por instâncias
  • Reportar com baixo overhead em tempo de execução

Quando usar​

  • Muitos serviços e instâncias, onde ler logs para achar exceções é inviável
  • Equipes que precisam priorizar e acompanhar a correção de erros

Quando evitar​

  • Aplicações pequenas, em que os logs e alertas existentes dão conta
  • Quando dados sensíveis em stack traces e contexto não puderem ser enviados a um serviço externo

Trade-offs​

GanhoCusto / Risco
Visualização e acompanhamento da resolução de exceçõesO serviço de rastreamento é infraestrutura adicional para operar e manter
Agrupamento e notificação automáticaDados sensíveis podem vazar nos payloads de erro
Priorização por frequência e impactoTempestades de exceções exigem limitação de taxa e amostragem
  • Não deixe falhas do envio afetarem o serviço: reporte de forma assíncrona e tolerante a erros.

Diagrama​

Cada serviço reporta exceções ao serviço central, que as agrupa e notifica a equipe, enquanto os logs seguem para a agregação.

Padrões relacionados​

Referência​