Na era tecnológica atual, ficou mais difícil para as equipes de DevOps terem visibilidade da pilha de aplicações, pois as operações de serviço se tornaram mais distribuídas por natureza. Isso tornou mais difícil conhecer a extensão total de um problema relacionado ao desempenho e como ele afeta toda a infraestrutura. Por exemplo, métricas de desempenho como "Tempo de resposta" e "Chamadas externas" nos informam que provavelmente existe um problema no sistema, mas não esclarecem onde exatamente o problema pode ser encontrado.
Como as aplicações modernas empregam uma abordagem de microsserviço amplamente distribuída para gerenciar suas operações de TI, a equipe de DevOps geralmente enfrenta dificuldades para rastrear, isolar e depurar problemas de desempenho antes que os usuários finais sejam afetados. O melhor que se pode fazer é descobrir o subsistema no qual o problema existe e, em seguida, começar a se aprofundar. No entanto, essa abordagem exige que os desenvolvedores dediquem uma grande quantidade de tempo e esforço que podem ser redirecionados para os esforços de produção e implementação.
É nesse ponto que o rastreamento distribuído entra em cena. Por meio da instrumentação, tornou-se possível para as equipes de TI e DevOps rastrear uma solicitação do início ao fim e correlacionar os dados distribuídos para identificar o ponto exato em que a aplicação está com dificuldades de desempenho.
O rastreamento distribuído é uma técnica de monitoramento para entender a jornada que uma solicitação percorre na pilha de aplicações. Ao usar tags identificadoras exclusivas, o rastreamento distribuído captura as informações de desempenho de cada operação pela qual a solicitação passa. Isso ajuda os desenvolvedores a diferenciar as operações em um sistema distribuído e o tempo que cada serviço leva para ser executado. O rastreamento distribuído também mapeia a relação entre diferentes operações dentro da pilha de aplicações para desenhar uma representação visual de toda a jornada de rastreamento para facilitar a depuração.
Em uma arquitetura monolítica, uma visão panorâmica geralmente é suficiente para obter a observabilidade da aplicação, pois todo o sistema opera como uma única unidade em que todas as operações são locais, executando um número rastreável de funções a qualquer momento. Nesse caso, o rastreamento tradicional dá conta do recado, pois a solicitação flui por um único sistema em que todos os componentes estão acoplados.
No entanto, as aplicações criadas em uma arquitetura de microsserviços têm uma enorme rede de serviços que são interconectados para realizar diferentes operações. Essa abordagem é amplamente preferida pelas equipes administrativas de TI que buscam um ambiente de aplicativos flexível e facilmente dimensionável. Como pequenas equipes de desenvolvimento podem gerenciar cada um dos serviços, a abordagem de microsserviços dá a elas a flexibilidade de implementar novas pilhas de tecnologia para operações individuais e usar APIs bem definidas para garantir uma comunicação perfeita entre si. Além disso, as equipes também podem testar e implementar atualizações sem interferir na operação de outros serviços.
Um ambiente de microsserviços garante a independência entre os componentes, o que evita que o sistema entre em colapso total. Em vez disso, o problema seria isolado em uma única operação que pode ser facilmente isolada e depurada sem causar um grande impacto. No entanto, isso levanta a questão de como se pode isolar esse problema.
Apesar das muitas vantagens que uma arquitetura de microsserviços oferece, ter essa personalização e flexibilidade também tem seu lado negativo. Veja por quê:
Por exemplo, uma solicitação pode fluir por uma variedade de serviços conectados em diferentes ambientes de aplicações, e cada serviço pode estar lidando com tarefas de várias operações. Portanto, sempre que ocorrer uma transação, uma solicitação poderá chamar vários serviços, um após o outro. Nesse caso, se houver lentidão em um dos serviços, as operações subsequentes serão afetadas e também ficarão mais lentas. Essa cadeia de eventos aumenta coletivamente o tempo de resposta geral de uma determinada transação ou evento, tornando mais difícil para os administradores de TI identificar a origem do problema.
Usando o rastreamento distribuído, as equipes de DevOps podem visualizar a interação e o relacionamento entre os serviços para obter informações detalhadas sobre o problema de desempenho enfrentado pela pilha de aplicações. Depois de identificar o serviço exato que está demorando muito para ser processado, as equipes de TI relevantes podem ser notificadas. Elas podem então identificar facilmente as falhas, depurá-las e realizar otimizações em sua infraestrutura de TI para obter uma colaboração mais eficiente entre os microsserviços.
No entanto, isso não significa que os monólitos não se beneficiarão do rastreamento distribuído. Uma estrutura monolítica também pode precisar de rastreamento distribuído para melhorar a velocidade e a qualidade da depuração.
Para entender como funciona o rastreamento distribuído, vamos considerar um cenário em que um usuário está tentando fazer login em sua conta em uma aplicação da Web:

Quando o usuário tenta fazer login em sua conta, uma solicitação HTTP é gerada a partir do front-end da aplicação da Web, onde passa por uma série de serviços para recuperar dados do servidor de banco de dados. Vamos considerar que a solicitação HTTP tenha que passar por uma cadeia de ações para executar todo o processo completamente. Nesse caso, o fluxo da solicitação HTTP seria: front-end → serviço-1 → serviço-2 → serviço-3 → servidor de banco de dados e retorna.
Vamos considerar um caso em que foi constatado que os usuários tiveram de esperar muito tempo para adicionar o produto ao carrinho. Esse evento certamente frustrará os usuários finais, que poderão sair do processo de compra, causando um enorme impacto nas operações e na receita da empresa. Após a inspeção, os desenvolvedores só podem saber sobre o tempo de resposta da transação como um todo, sem visibilidade da eficiência operacional dos serviços envolvidos.
Aqui, o rastreamento distribuído pode ser aproveitado por meio da coleta de dados em cada etapa do fluxo de solicitações até chegar ao ponto final. Ao analisar os dados de rastreamento distribuído, as equipes de DevOps poderão identificar visualmente o serviço específico que consumiu uma grande parte do tempo de resposta e levou a um grande aumento no tempo de resposta geral.
Com base no cenário acima, o rastreamento distribuído funciona atribuindo uma ID de rastreamento à solicitação, de modo que ela siga pelos serviços e pelo servidor de banco de dados. O intervalo de cada serviço é calculado com base no tempo que eles levam para receber uma solicitação e concluí-la completamente.
Dessa forma, o intervalo D representa o momento em que a solicitação HTTP é recebida pelo servidor do serviço-3. Já o intervalo C começa quando uma solicitação é enviada ao servidor de banco de dados e termina quando uma resposta é recebida. Da mesma forma, o intervalo B termina quando a resposta HTTP é recebida pelo serviço-2 e o intervalo A termina quando a resposta HTTP é recebida pelo serviço-1. Nesse cenário, A seria o intervalo pai do intervalo filho, B. Da mesma forma, B seria o intervalo pai C e assim por diante.
Quando um aumento repentino no tempo de resposta de uma transação é detectado, os administradores de TI podem seguir os rastros de cada intervalo. Ao passar por cada intervalo, eles perceberiam que todos os intervalos de A a C teriam um tempo de resposta alto, enquanto o intervalo D não apresentaria anormalidades. Como C seria o intervalo filho mais baixo, a solução do problema nesse estágio geralmente resolveria o problema, pois os intervalos pai são apenas dependências. Esse problema pode ser devido a vários motivos, como pico de tráfego, aumento de uso, bugs, erros, sobreposições de trabalho e outros.
Agora, se uma ação inteira levar muito tempo para ser executada, um sistema que executa o rastreamento distribuído é normalmente usado para coletar métricas de desempenho importantes em cada serviço. Usando uma ferramenta de monitoramento de desempenho de aplicações, como o Applications Manager, você pode executar o rastreamento distribuído para obter um detalhamento visual de cada intervalo e descobrir onde ele está atrasado.
Com apenas algumas etapas simples, é fácil fazer o download do Applications Manager e configurá-lo em seu sistema. No painel de controle, você pode criar um novo monitor para aplicações da Web executados em Java, node js, .Net, Ruby on rails, Python, PHP ou .Net core. Depois de configurá-lo, é muito fácil executar o rastreamento distribuído.
O Applications Manager tem um painel "APM" dedicado que consolida todos os monitores de aplicações em um só lugar. Ao navegar por cada monitor, veja como você pode executar o rastreamento distribuído com o Applications Manager:
Você pode encontrar um gráfico de barras que lista os "5 principais rastreamentos de desempenho mais lento" em ordem.

Para cada rastreamento, você obtém o tempo de resposta correspondente.

Ter uma ferramenta de monitoramento de desempenho de aplicações com recursos de rastreamento distribuído incorporados tem as seguintes vantagens:
Solução de problemas mais rápida - Como as equipes podem ver todas as etapas do rastreamento de transações, fica mais fácil identificar componentes defeituosos. Os desenvolvedores não precisarão analisar cada registro e gastar horas na depuração. Em vez disso, eles são notificados instantaneamente sobre o que precisam focar e começam a trabalhar diretamente. Isso reduz significativamente o MTTR, diminuindo assim o tempo de inatividade. Por exemplo, se o problema for a adição ao carrinho, o rastreamento distribuído pode ajudar no problema de desempenho do back-end.
Maior produtividade por meio da colaboração da equipe - como os microsserviços geralmente são gerenciados por equipes diferentes, o rastreamento distribuído ajuda a identificar o módulo de serviço específico que requer atenção. Dessa forma, quando uma equipe está enfrentando um problema em todo o fluxo de solicitações, ela pode identificar e notificar a equipe relevante que é responsável pela causa da lentidão. Assim, elas podem ajudar a corrigir o problema.
Flexibilidade - o emprego do rastreamento distribuído na estratégia de gerenciamento de aplicações pode facilitar o dimensionamento das organizações sempre que necessário. Isso permite que elas expandam seu ambiente de microsserviços com novas operações de serviço sem hesitação, já que contam com o apoio do rastreamento distribuído.
Melhorar a experiência do usuário final - Sempre que um usuário final tem dificuldade para navegar em uma aplicação da Web, na maioria das vezes, o problema geralmente se origina de uma única operação de serviço. Como resultado, todo o processo fica mais lento, afetando o nível de satisfação (pontuação APDEX) dos usuários. O rastreamento distribuído é uma maneira de eliminar o problema sem permitir que ele afete a experiência digital dos usuários finais.
À medida que mais aplicações da Web estão migrando para uma arquitetura de microsserviços, torna-se essencial ter também visibilidade distribuída. Com o rastreamento distribuído, as equipes de TI e DevOps podem identificar, otimizar e solucionar problemas para garantir um ambiente de serviço confiável em toda a pilha de aplicações. Isso lhes dá a confiança necessária para tomar decisões informadas sobre a otimização do desempenho e resolver problemas em um ritmo mais rápido.
Em resumo, o rastreamento distribuído é um dos principais elementos que as ferramentas de instrumentação devem oferecer para obter uma visão completa das interdependências das aplicações. O Applications Manager é uma dessas ferramentas que incorpora o rastreamento distribuído ao monitoramento do desempenho das aplicações que pode ser usado com eficácia pelas empresas para garantir que aplicações comerciais atendam às expectativas do usuário final.
Comece agora fazendo o download da nossa avaliação gratuita de 30 dias para experimentar todos os recursos da nossa solução de monitoramento ou agende uma demonstração personalizada para um tour guiado.
Ela nos permite rastrear métricas cruciais, como tempos de resposta, utilização de recursos, taxas de erro e desempenho de transações. Os alertas de monitoramento em tempo real nos notificam imediatamente sobre quaisquer problemas ou anomalias, permitindo tomar medidas imediatas.
Função de Revisor: Pesquisa e Desenvolvimento