O que são “Spans” e por que são importantes?

Elemar Júnior

Nos posts anteriores, definimos “distributed tracing. Depois,  apresentamos o padrão OpenTracing e uma de suas implementações (Jaeger).

Nesse post, iremos discutir o conceito de Span (no contexto de tracing distribuído)

O que são Spans?

Citando a documentação do OpenTracing:

The “span” is the primary building block of a distributed trace, representing an individual unit of work done in a distributed system.

Each component of the distributed system contributes a span – a named, timed operation representing a piece of the workflow.

Spans can (and generally do) contain “References” to other spans, which allows multiple Spans to be assembled into one complete Trace – a visualization of the life of a request as it moves through a distributed system.

Um span inicia e se encerra com eventos específicos. Por exemplo, a interface pode abrir um span quando inicia o atendimento de uma solicitação do usuário e encerrar quando a solicitação estiver atendida. De forma análoga, o servidor pode iniciar um span quando recebe uma requisição e encerrar quando responder para a aplicação cliente. Ou ainda, podemos iniciar um Span antes de fazer uma consulta contra um banco de dados e encerrar quando um resultado for retornado.

Spans são organizados de forma hierárquica e sequencial. Ou seja, por estarem devidamente relacionados, podemos criar visualizações interessantes que nos permitem descobrir a composição de tempo e recursos consumidos.

 

OpenTracing define um padrão coerente para que possamos definir spans, em ambientes distribuídos,  como indicado na visualização entregue pelo Jaeger, mostrada acima.

Por que é importante?

O tracing de uma execução (ou atendimento de request) é fundamental para que possamos entender e resolver problemas em produção. Afinal, o tracing “conta a história” do que aconteceu (onde, quando, quanto tempo, que recursos foram consumidos)Quando estamos falando em aplicações distribuídas, a “história” acontece em máquinas diferentes, rodando,  muitas vezes, aplicações desenvolvidas com tecnologias diferentes.

Analisar tracings ajuda na produção de insights para melhoria de performance. É útil, tanto quando desejamos reduzir tempos de execução, bem como quando desejamos reduzir consumo de recursos. Para isso, é fundamental que fique claramente identificado o que está consumindo mais tempo e afetando a performance.

O tracing, para ter qualidade, depende de boa instrumentação. Ou seja, precisamos garantir que todos os eventos relevantes estejam sendo registrados (de forma semelhante como faríamos em processos de logging convencionais). Entretanto, é necessário, também, que pensemos a execução como Spans (como explicado acima).

A análise, a partir dos Spans permite que “vejamos” rapidamente (e graficamente), que operações estão consumindo mais tempo e recursos.

Por enquanto… era isso

Nesse post, definimos um dos conceitos chaves para a implementação de bons mecanismos para tracing distribuído.

Nos próximos posts, vamos começar a adotar uma abordagem mais prática, mostrando  como instrumentar aplicações usando as APIs do OpenTracing, usando Jaeger como ferramenta de persistência e visualização.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas
Infraestrutura e Nuvem

Migração para a nuvem, mais do que mudança tecnológica, implica em mudança da cultura organizacional

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

O que são “Spans” e por que são importantes?

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?