segunda-feira, 5 de janeiro de 2026

Trace Id - O que é e como implementar

        Nesse artigo não vou trazer uma implementação via código do Trace Id, mas o como implementar vai estar ligado a ideia de o que você precisa saber para implementar. 

        Um Trace Id é um Id único que percorre todas as etapas de uma requisição em microsserviços, devendo passar por todos os microsserviços compondo seu log. O Objetivo: Se der um erro, precisamos saber o fluxo completo da requisição para ajudar a identificar a causa raiz, os impactos e se os fluxos de rollback relacionados ao erro deram certo (no caso de um SAGA por exemplo, embora o SAGA tenha o SAGA ID), entre outras coisas. Qual a mensagem origem? Como eram seus dados? Sempre que perguntarmos por algo o Trace Id vai estar relacionado com essa pergunta.

        Para manter o fluxo do Trace Id você vai ter que:

  • Usar filtros para pegá-lo assim que receber a requisição web em todas as APIs;
  • Usar Interceptors para colocá-lo antes de enviar chamadas de uma API para outra;
  • Usar interceptors para o Kafka para colocá-lo no header do producer (ou alguma forma manual) andes de enviar
  • Pegar no @Listener do Kafka para setar no projeto
  • Salvar em bancos que guardam estado (bancos que salvam dados em seus estágios intermediários entre o processamento(Outbox Pattern ou outros)
  • Salvar em tabelas de auditoria (dependendo do caso)
  • Usar em logs
        É algo que vai interferir em todo o projeto, se esquecer em uma etapa fica um buraco de difícil solução. Então implementar requer cuidado, atenção, paciência e teste.

        Fica mais complicado se trabalhar com:
  • Chamada Assíncronas
  • Startar outras threads
  • WebFlux
  • Kafka Consumer
        É preciso estudar o cenário e opções corretas para se ter uma boa implementação pois caso contrário vai falhar. É o tipo de coisa que o conceito a simples, a implementação nem tanto.


Nenhum comentário:

Postar um comentário