No post anterior, conceituamos Distributed Tracing e estabelecemos conexão entre o conceito e modelos de concorrência. Agora, iremos começar a tratar de práticas, padrões e tecnologias de mercado para implementação de Distributed Tracing no mundo real.
Nesse post, apresentamos OpenTracing e Jaeger.
O que é OpenTracing
OpenTracing é um padrão aberto que direciona o desenvolvimento de frameworks e ferramentas para Distributed Tracing.
A motivação desse projeto é muito bem descrita nos trechos abaixo, extraídos desse post de Ben Sigelman
OpenTracing is a new, open distributed tracing standard for applications and OSS packages. Developers with experience building microservices at scale understand the role and importance of distributed tracing: per-process logging and metric monitoring have their place, but neither can reconstruct the elaborate journeys that transactions take as they propagate across a distributed system. Distributed traces are these journeys.
[..] OpenTracing is that “single, standard mechanism.” OpenTracing allows developers of application code, OSS packages, and OSS services to instrument their own code without binding to any particular tracing vendor. Every component of a distributed system can be instrumented in isolation, and the distributed application maintainer can choose (or switch, or multiplex) a downstream tracing technology with a configuration change.
O que é Jaeger?
Jaeger é uma solução open-source, com código-fonte no GitHub para Distributed Tracing em conformidade com o padrão OpenTracing. Foi desenvolvida e é mantida pela Uber.
Atualmente Jaeger é suportada pela Cloud Native Computing Foundation (CNCF).
Como ter um primeiro contato com Jaeger e OpenTracing?
O time do Jaeger desenvolveu um excelente tutorial, prático, de primeiros passos para pessoas interessadas em começar a utilizar Jaeger e, consequentemente, entender OpenTracing.
O tutorial utiliza uma aplicação de exemplo, com código-fonte disponível no Github, com alguns microsserviços e que é instrumentada segundo o padrão determinado por OpenTracing. Esta aplicação é uma “miniatura” do Uber – ou seja, é uma aplicação para chamada de carros.
Tanto o Jaeger quanto a aplicação de exemplo podem ser executadas a partir de containers Docker. Logo, não será necessário instalar nada em seu computador.
O tutorial indica, na interface no Jaeger, como identificar o relacionamento entre os diversos serviços e como fazer o trace detalhado do atendimento de um request mostrando de forma bem instrutiva os cenários comuns que enfrentamos.
Resumindo
Sempre dizemos que problemas importantes já tem soluções muito boas, desenvolvidas por gente muito competente. Não é necessário que reinventemos a roda.
Distributed Tracing é um problema importante. OpenTracing é uma solução desenvolvida por gente muito competente e Jaeger é uma das implementações mais competentes disponíveis para essa solução.
Você conhecia Jaeger? O que tem usado?