O que é rastreamento distribuído?
O rastreamento distribuído analisa as solicitações de dados à medida que elas fluem por um sistema distribuído. A arquitetura moderna de microsserviços geralmente tem vários pequenos componentes independentes. Esses componentes se comunicam e trocam dados constantemente usando APIs para realizar trabalhos complexos. Com o rastreamento distribuído, os desenvolvedores podem rastrear (ou acompanhar visualmente) um caminho da solicitação em diferentes microsserviços. Essa visibilidade ajuda a solucionar erros ou corrigir bugs e problemas de desempenho.
Quais são os benefícios do rastreamento distribuído?
Os desenvolvedores de software podem implementar sistemas de rastreamento distribuídos em praticamente qualquer ambiente nativo de nuvem, bem como registrar rastreamentos distribuídos que as aplicações em nuvem geram. Além disso, as ferramentas de rastreamento oferecem suporte a várias linguagens de programação e pilhas de software, permitindo que as equipes de software monitorem e coletem dados de desempenho de diferentes aplicações na mesma plataforma.
As equipes de desenvolvimento usam o rastreamento distribuído para melhorar a observabilidade, bem como resolver problemas de desempenho que as ferramentas convencionais de depuração e monitoramento de software não conseguem resolver.
Veja a seguir mais benefícios do rastreamento distribuído.
Acelere a solução de problemas
As aplicações modernas dependem de vários microsserviços para trocar dados e atender às solicitações de serviço em sistemas distribuídos. Solucionar problemas de desempenho em uma arquitetura baseada em microsserviços é significativamente mais desafiador do que em uma aplicação de software monolítico. Ao contrário de uma aplicação monolítica, a causa raiz de um problema de software específico pode não ser aparente — as interações sobrepostas e complexas entre vários módulos de software podem dificultar o diagnóstico de problemas.
Com o rastreamento distribuído, as equipes de software podem monitorar dados que passam por caminhos complexos conectando vários microsserviços e armazenamento de dados. Usando ferramentas de rastreamento distribuído, as equipes de software rastreiam as solicitações e visualizam os caminhos de propagação de dados com precisão. As equipes de software podem resolver problemas de desempenho imediatamente e minimizar as interrupções no serviço.
Melhore a colaboração dos desenvolvedores
Vários desenvolvedores geralmente estão envolvidos na criação de uma aplicação em nuvem, sendo cada um responsável por um ou vários microsserviços. O processo de desenvolvimento de software fica mais lento se os desenvolvedores não conseguirem rastrear dados intercambiados em microsserviços. Com sistemas de rastreamento distribuídos, os desenvolvedores podem colaborar fornecendo dados de telemetria, como logs e rastreamentos, para cada solicitação de serviço feita pelo microsserviço. Os desenvolvedores podem responder com precisão a bugs e outros problemas de software descobertos durante os testes e a produção.
Reduzir o tempo de entrada no mercado
As organizações que implantam plataformas de rastreamento distribuído podem simplificar e acelerar os esforços para lançar aplicações de software para usuários finais. As equipes de software analisam os rastreamentos distribuídos para obter informações que aceleram o desenvolvimento de software, minimizam os custos de desenvolvimento, compreendem os comportamentos dos usuários e melhoram a disponibilidade para o mercado.
Quais são os diferentes tipos de rastreamento distribuído?
As equipes de software usam ferramentas de rastreamento distribuído para monitorar, analisar e otimizar aplicações.
Rastreamento de código
O rastreamento de código é um processo de software que inspeciona o fluxo de códigos-fonte em uma aplicação ao executar uma função específica. Ele ajuda os desenvolvedores a entender o fluxo lógico do código e a identificar problemas desconhecidos. Por exemplo, os desenvolvedores usam o rastreamento de código para validar se a solicitação de serviço invocou etapas para consultar um banco de dados. Se algumas funções do software não responderem, o sistema de rastreamento coletará o status de erro apropriado e chamará a atenção para o tempo de resposta.
Rastreamento de programas
O rastreamento de programas é um método em que os desenvolvedores podem examinar os endereços das instruções e variáveis chamadas por uma aplicação ativa. Quando uma aplicação de software é executado, ele processa cada linha de código que reside em um espaço de memória alocado específico. A aplicação também processa variáveis armazenadas na memória da máquina. Inspecionar mudanças no programa e nas memórias de dados é um desafio sem uma ferramenta automatizada. Com o rastreamento de programas, as equipes de software podem diagnosticar problemas profundos de desempenho, como estouro de memória, consumo excessivo de recursos e bloqueio de operações lógicas.
Rastreamento completo
Com o rastreamento completo, as equipes de desenvolvimento podem acompanhar a transformação dos dados ao longo do caminho da solicitação de serviço. Quando uma aplicação inicia uma solicitação, ele envia dados para outros componentes de software para processamento adicional. Os desenvolvedores usam ferramentas de rastreamento para rastrear e compilar as alterações pelas quais dados críticos passam de ponta a ponta. Ele oferece uma visão centrada na aplicação das solicitações que fluem pela aplicação.
Como o rastreamento distribuído de ponta a ponta funciona na arquitetura de microsserviços?
Ao usar aplicações, os usuários iniciam solicitações de serviço e diferentes componentes da aplicação processam a solicitação.
Considere um usuário fazer uma reserva de ingressos em uma aplicação de reserva de filmes on-line. O usuário insere seus dados de contato, detalhes do filme e informações de pagamento e escolhe Reservar agora. É criada uma solicitação que vai para:
- Microsserviço A que valida os dados inseridos pelo usuário.
- Microsserviço B que pega os dados de A e cria um registro no banco de dados do cliente.
- Microsserviço C que pega os dados de B e valida o pagamento.
- Microsserviço D que pega os dados de C, aloca um assento e gera dados de ingressos de cinema.
- Microsserviço E que pega os dados de D e cria um arquivo PDF de ingresso formatado.
Uma resposta contendo o PDF do ingresso é então retornada para a cadeia de microsserviços de E a D, de C a B a A, até que finalmente chegue ao usuário. O exemplo acima é simples: uma solicitação geralmente passa por várias dezenas de microsserviços e até cadeias de componentes de software de terceiros fora da aplicação. Isso torna o processo cada vez mais complexo.
Os sistemas de rastreamento distribuído rastreiam essas interações de solicitações de serviço com outros microsserviços e componentes de software no ambiente de computação distribuída. Um rastreamento distribuído representa o cronograma e todas as ações que ocorrem entre a geração da solicitação e o recebimento da resposta. As equipes de software usam o rastreamento para acompanhar a movimentação de dados por meio de vários microsserviços com os quais a solicitação inicial interage.
Período
Ao processar uma solicitação de serviço, uma aplicação pode realizar várias ações. Essas ações são representadas como períodos no rastreamento distribuído. Por exemplo, um período pode ser uma chamada de API, autenticação de usuário ou habilitação do acesso ao armazenamento. Se uma única solicitação resultar em várias ações, o período inicial (ou principal) pode se ramificar em vários períodos secundários. Essas camadas aninhadas de períodos pais e filhos formam uma representação lógica contínua das etapas tomadas para realizar a solicitação de serviço.
ID de rastreamento
O sistema de rastreamento distribuído atribui uma ID exclusiva a cada solicitação para rastreá-la. Cada período herda o mesmo ID de rastreamento da solicitação original à qual pertence. Os períodos também são marcados com um ID de extensão exclusivo que ajuda o sistema de rastreamento a consolidar os metadados, os logs e as métricas que ele coleta.
Coleção métrica
À medida que cada período passa por diferentes microsserviços, ele acrescenta métricas que fornecem aos desenvolvedores insights profundos e precisos sobre o comportamento do software. Você pode coletar taxa de erro, registro de data e hora, tempo de resposta e outros metadados com os períodos. Depois que o rastreamento completa um ciclo inteiro, a ferramenta de rastreamento distribuído consolida todos os dados coletados.
Por exemplo, uma chamada de API é avaliada com o tempo de resposta, o status do erro e a análise das funções secundárias cumpridas por vários serviços de terceiros. A ferramenta de rastreamento transforma os dados em formas visuais, destacando os principais indicadores e resumos de desempenho. Dessa forma, os engenheiros de confiabilidade do site podem identificar rapidamente erros, inspecionar elementos de dados críticos e colaborar com equipes de desenvolvimento para corrigir problemas de desempenho e garantir a conformidade com os Acordos de Nível de Serviço (SLAs).
O que são padrões de rastreamento distribuído?
Os padrões de rastreamento distribuído fornecem uma estrutura e ferramentas de software comuns para desenvolvedores. Esses padrões monitoram, visualizam e analisam solicitações de serviço em ambientes de aplicações modernas. Ao padronizar o fluxo de trabalho de rastreamento distribuído, as equipes de software podem instrumentar o rastreamento de solicitações sem ficarem sujeitas à dependência do fornecedor.
As seções a seguir descrevem os padrões introduzidos para permitir a interoperabilidade ao realizar o rastreamento distribuído.
OpenTracing
O OpenTracing é um padrão de rastreamento distribuído de código aberto desenvolvido pela Cloud Native Computing Foundation (CNCF). O OpenTracing se concentra em permitir que os desenvolvedores gerem rastreamentos com uma API de instrumentação. Isso permite que os desenvolvedores gerem rastreamentos distribuídos de diferentes partes da base de código, biblioteca ou outras dependências.
OpenCensus
O OpenCensus consiste em bibliotecas em vários idiomas capazes de extrair métricas de software e enviá-las aos sistemas de back-end para análise. Os desenvolvedores podem usar a API fornecida para gerenciar como os rastreamentos são gerados e coletados. Ao contrário do OpenTracing, os desenvolvedores trabalham com o OpenCensus a partir de um único repositório de projeto, em vez de bases de código e bibliotecas individuais.
OpenTelemetry
O OpenTelemetry unifica o OpenTracing e o OpenCensus. Ele combina os melhores recursos dos dois padrões para fornecer uma estrutura abrangente de rastreamento distribuído. O OpenTelemetry fornece extensos kits de desenvolvimento de software, APIs, bibliotecas e outras ferramentas de instrumentação para implementar o rastreamento distribuído com mais facilidade.
Qual é a diferença entre rastreamento distribuído e registro?
O registro é uma prática de registrar eventos específicos que ocorrem quando uma aplicação é executada. As ferramentas de registro coletam eventos com registro de data e hora, como erros do sistema, interações do usuário, status de comunicação e outras métricas, para ajudar as equipes de desenvolvimento a detectar anomalias no sistema. Geralmente, existem dois tipos de registro:
- O registro centralizado coleta todas as atividades registradas e as armazena em um único local.
- O registro distribuído armazena arquivos de log em locais separados na nuvem.
Ambos os métodos de registro fornecem uma visão geral estática dos incidentes que mostram aos desenvolvedores o que aconteceu na aplicação. Por outro lado, o rastreamento distribuído fornece uma trilha de auditoria que esclarece por que um incidente ocorreu ao correlacionar vários dados de telemetria coletados durante o período de uma solicitação de serviço. O rastreamento distribuído pode usar o registro e outros métodos de coleta de dados para rastrear uma solicitação de serviço específica.
Quais são os desafios do rastreamento distribuído?
O rastreamento distribuído simplificou os esforços dos desenvolvedores em diagnosticar, depurar e corrigir problemas de software. Apesar disso, as equipes de software devem estar atentas aos seguintes desafios ao escolher as ferramentas de rastreamento.
Instrumentação manual
Algumas ferramentas de rastreamento exigem que as equipes de software instrumentem manualmente seus códigos para gerar os rastreamentos necessários. Quando os desenvolvedores modificam códigos para rastrear solicitações, há riscos de erros de codificação que afetam as versões de produção. Além disso, a falta de automação complica o rastreamento, resultando em atrasos e possivelmente na coleta de dados imprecisa.
Cobertura limitada de front-end
Talvez os desenvolvedores não consigam obter uma supervisão completa dos problemas de desempenho se suas ferramentas de rastreamento estiverem restritas à análise de back-end. Em alguns casos, o sistema de rastreamento distribuído só começa a coletar dados quando o primeiro serviço de back-end recebe a solicitação. Isso significa que os desenvolvedores não podem detectar e inspecionar problemas decorrentes dos serviços de front-end durante a sessão de usuário correspondente.
Amostragem aleatória
Algumas ferramentas não permitem que as equipes de software priorizem o rastreamento, limitando a observabilidade a traços amostrados aleatoriamente. Com dados de amostra limitados, as organizações precisam de abordagens adicionais de solução de problemas de software para capturar os principais problemas que escapam da ferramenta de rastreamento.
Como a AWS pode ajudar com seus requisitos de rastreamento distribuído?
A AWS X-Ray é uma plataforma de rastreamento distribuído que ajuda desenvolvedores de software a rastrear solicitações de usuários e identificar gargalos em suas aplicações em nuvem. As organizações usam o X-Ray para visualizar métricas de aplicações e melhorar a disponibilidade de workload. Com a AWS X-Ray, você pode:
- Integrar todos as aplicações em execução nos serviços Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda e AWS Elastic Beanstalk.
- Defina a taxa de amostragem apropriada para fornecer visibilidade de ponta a ponta para os traços.
- Visualize dados agregados com um mapa de serviços, exibindo as principais métricas, como latência e taxas de falha.
Comece a usar o rastreamento distribuído na AWS criando uma conta hoje mesmo.
Próximas etapas na AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.