Executando verificação de segurança...
1

🔍 𝐓𝐫𝐚𝐜𝐢𝐧𝐠 𝐜𝐨𝐦 𝐎𝐩𝐞𝐧𝐓𝐞𝐥𝐞𝐦𝐞𝐭𝐫𝐲 + 𝐉𝐚𝐞𝐠𝐞𝐫

O 𝐎𝐩𝐞𝐧𝐓𝐞𝐥𝐞𝐦𝐞𝐭𝐫𝐲 é um projeto open-source que define uma abordagem consistente para instrumentação de aplicações em diferentes linguagens e frameworks. Uma aplicação instrumentada usando OpenTelemetry é capaz de exportar métricas, traces e logs de maneira fácil e intuitiva.

Um 𝐭𝐫𝐚𝐜𝐞 representa a jornada de um request através de vários componentes e serviços em um sistema distribuído. Ele ajuda a identificar gargalos de performance, latência e erros, trazendo uma visão unificada de como diferentes serviços interagem nos fluxos de negócio.

Já um 𝐬𝐩𝐚𝐧 representa uma operação dentro de um trace. Exemplos: query feita no banco de dados ou uma chamada HTTP para uma API externa.

O 𝐉𝐚𝐞𝐠𝐞𝐫 é uma ferramenta open-source para pesquisa, análise e visualização de traces/spans.

Na prática, como tudo isso funciona?

A imagem abaixo mostra o trace de um fluxo de negócio pertencente ao Syki (https://github.com/ZaqueuCavalcante/syki), um projeto para gerenciamento educacional que estou desenvolvendo.

Trata-se da criação de uma atividade pelo professor, decomposta em detalhes a seguir:

● 1️⃣ Chamada HTTP para a API (Back), criando a atividade:

  • POST teacher/classes/{id}/activities
  • Faz alguns selects no banco para validar dados
  • Insere a atividade + o evento ClassActivityCreatedDomainEvent

● 2️⃣ O Daemon é outra aplicação, responsável por processar os eventos:

  • Ele pega o evento pendente do banco e executa seu handler
  • Os comandos CreateNewClassActivityNotificationCommand e CreateClassActivityCreatedWebhookCallCommand são salvos como pendentes

● 3️⃣ O Daemon então processa os comandos:

  • CreateNewClassActivityNotificationCommand notifica todos os alunos sobre a nova atividade
  • CreateClassActivityCreatedWebhookCallCommand cria um WebhookCall e emite o evento WebhookCallCreatedDomainEvent

● 4️⃣ O Daemon novamente processa o evento pendente:

  • O handler do evento WebhookCallCreatedDomainEvent enfileira o comando CallWebhookCommand

● 5️⃣ E por fim, o comando CallWebhookCommand é executado, realizando a chamada HTTP POST spicy-alligator-90.webhook.cool com os dados da atividade criada.

O tracing nos mostra tudo que acontece nesse fluxo, desde o macro até o micro. Dá pra ver quais queries e requisições foram feitas, junto com quanto tempo cada operação levou.

Ainda é possível adicionar tags aos traces, como o id do evento/comando que está sendo processado.

Você já utiliza alguma ferramenta de tracing/observabilidade no seu dia a dia? Compartilhe nos comentários, valeu!

Carregando publicação patrocinada...