Observability

Distributed tracing: uma introdução de alto nível

Distributed tracing: uma breve introdução

As vantagens das arquiteturas de microsserviços para o desenvolvimento são uma realidade, já para o monitoramento… A natureza desconexa dessas arquiteturas torna o monitoramento da performance de aplicações complexo, demorado e caro, quando comparado ao de arquiteturas monolíticas. Mais que isso: exige ferramentas novas, tornando-se inviável com as soluções que as empresas têm em casa. O resultado é a baixa visibilidade do todo e, consequentemente, de incidentes que afetam o desempenho. 

Como identificar problemas nesses ambientes, onde múltiplos serviços interagem entre si?

A boa notícia é que as ferramentas de monitoramento não ficaram para trás. Elas evoluíram junto com as arquiteturas. É dessa evolução que surge o distributed tracing ou, como alguns chamam por aqui, tracing distribuído.

O distributed tracing é um mecanismo de monitoramento de microsserviços relativamente recente, desenvolvido em 2010 dentro do Google no projeto Dapper. Em 2015, ele se tornou open source, sendo a base sobre a qual continuou a ser desenvolvido, dando origem a várias ferramentas do mercado e inspirando o surgimento de muitas outras.

Como tudo que é recente, o distributed tracing ainda está sendo descoberto pelas equipes de operações de TI das empresas, normalmente ao passo da modernização de suas arquiteturas. Logo, não raro existem dúvidas sobre o que está em jogo.

Neste artigo, você vai dominar esse conceito, como funciona, conhecer as ferramentas e várias outras informações sobre distributed tracing.

 

O que é distributed tracing?

O trace é um conceito conhecido quando se trata de obter informações sobre a performance de aplicações. Porém, no universo de arquiteturas distribuídas, como a de microsserviços, é impossível fazer monitoramento de traces por meio das soluções tradicionais.

Os motivos são bem conhecidos e inerentes à arquitetura. É que uma mesma requisição pode ser transacionada em múltiplas instâncias que rodam em diferentes locais e diferentes ambientes. 

O distributed tracing vem para resolver esse desafio em monitoramento. Ele habilita o rastreamento do fluxo completo de uma solicitação ou transação em uma arquitetura de microsserviços ou distribuída.

Com o tracing distribuído, as equipes de operações e desenvolvimento se informam sobre o comportamento do sistema em tempo real, identificando problemas mais cedo e, principalmente, tendo total visibilidade sobre o fluxo em que ele ocorreu.

 

Como o distributed tracing funciona?

No tracing distribuído, cada solicitação ou transação que um usuário executa recebe um identificador exclusivo

Esse identificador se move conforme o fluxo da transação, e toda operação realizada sobre ela a contém – o parent span –, além de receber seu próprio novo identificador único – o span.

Cada span é um trecho do caminho da transação, portanto, ele carrega consigo informações sobre o serviço que realizou a operação, mas também os spans anteriores, criando uma sequência

As ferramentas de distributed tracing correlacionam os dados desses spans, criando visualizações ou enviando alertas para as equipes de TI.

Assim, quando ocorre um problema, como bugs, as equipes têm total visibilidade sobre as aplicações, independentemente da complexidade do ecossistema. Elas conseguem identificar rapidamente onde o problema ocorreu e que serviços foram afetados por ele.

Na prática, isso significa um menor tempo de descoberta de incidentes, mas também de investigação e análise de causa raiz. Assim, o tempo de recuperação também se torna menor, garantindo o nível de serviço adequado da aplicação.

Esses benefícios tornam o distributed tracing uma ferramenta fundamental em serviços com alto nível de criticidade, onde um bug pode custar alto para a organização.

 

Ferramentas de distributed tracing

As equipes de operações e de desenvolvimento já têm à disposição várias ferramentas de mercado para fazer distributed tracing, desde opções open sourcing até soluções de fornecedores externos. Ainda assim, boa parte delas é construída com base em abordagem open source. 

Vamos enumerar as principais aqui para você pesquisar:

Open source

  • OpenTelemetry: projeto open-source gerenciado pelo CNCF – Cloud Native Computing Foundation, que tem como base o OpenTracing e o OpenCensus.
  • OpenTracing: APIs estandardizadas para tracing.
  • OpenCensus: desenvolvido dentro do Google com base em plataforma interna, mas dirigido pela Microsoft após a abertura do código.
  • Jaeger: criado e mantido pela Uber, usando o padrão OpenTracing.
  • Zipkin: criado dentro do Twitter, também tendo como base o padrão OpenTracing.

 

Soluções enterprise

  • Splunk APM: baseada no padrão OpenTelemetry, com recursos para integração com outras ferramentas.
  • AWS X-Ray: usa o padrão AWS para coletar dados.
  • AppDynamics: plataforma de APM, com tracing distribuído baseado no padrão Open Tracing.
  • New Relic One Distributed Tracing: baseada em OpenTelemetry
  • Dynatrace: solução baseada na tecnologia de PurePath
  • Instana: Solução da IBM que usa AutoTrace.
  • LightStep: solução que usa os padrões OpenTracing e OpenTelemetry, também com interface para integração com outras ferramentas.
  • Datadog: baseada em OpenTracing e OpenTelemetry, com recursos para integração com outras ferramentas.

 

Pontos de atenção ao implementar distributed tracing

  • Instrumentação manual

No caso de linguagens de programação sem suporte nativo para instrumentação, a adição do código de rastreamento será manual, o que leva tempo e dá trabalho. Considere isso na tomada de decisão.

  • Limitação de cobertura ao back-end

Algumas soluções geram o trace ID apenas quando a requisição chega no back-end. Isso significa falta de visibilidade no nível de dispositivos e front-end. 

 

Tenha visão do micro e do macro

A distribuição dos ecossistemas de TI é um caminho sem volta, dados os inegáveis benefícios em termos de desenvolvimento, mas também de sustentação. 

Da mesma maneira, o monitoramento também precisou evoluir, para dar conta da complexidade adicional desses ambientes.

Ferramentas não faltam. Não abra mão da visibilidade sobre o desempenho de seu ambiente. Sua equipe e seus usuários vão agradecer por isso.

 

Precisando de um parceiro? Conte com a DataRunk.

Explore conteúdos relacionados:

Observability

Benefícios da observability

Observability

Synthetic monitoring: 7 razões para considerar essa ferramenta