Uma Nova Abordagem para Visualização de Desempenho de Microserviços
Apresentando um novo método pra analisar melhor o desempenho de microserviços em várias requisições.
― 8 min ler
Índice
Analisar o Desempenho de Microserviços pode ser complicado. Quando um usuário manda um pedido, isso muitas vezes envolve várias chamadas para diferentes serviços e máquinas. Pra ajudar com isso, muitos profissionais usam ferramentas que rastreiam como esses Pedidos se movem pelo sistema. Essas ferramentas permitem que os usuários acompanhem os passos de um pedido e vejam quanto tempo cada parte leva. Mas, apesar de serem ótimas pra olhar pedidos individuais, elas não dão uma visão clara de como todo o sistema tá se saindo.
Neste artigo, vamos discutir uma nova maneira de visualizar o desempenho de microserviços que permite entender melhor o desempenho em múltiplos pedidos ao mesmo tempo. Esse novo método se baseia em técnicas existentes e tem como objetivo dar aos engenheiros as informações que eles precisam pra analisar o desempenho de forma mais eficaz.
Microserviços e Seus Desafios
Microserviços são uma maneira moderna de construir software, quebrando tudo em pedaços pequenos e independentes. Essa abordagem facilita testar e lançar novas funcionalidades rapidamente, o que é essencial no mercado de software rápido de hoje. No entanto, há desafios ao trabalhar com microserviços, especialmente em relação ao desempenho.
Um grande problema é que pode ser difícil garantir que o software funcione bem devido à sua complexidade. Com muitos serviços diferentes interagindo entre si, problemas de desempenho podem surgir do nada. Além disso, microserviços frequentemente passam por muitas atualizações em um dia, o que pode afetar seu desempenho sob padrões de uso que mudam.
Pra lidar com esses desafios, os desenvolvedores de software costumam confiar em ferramentas de rastreamento distribuído, que ajudam a monitorar como os microserviços funcionam em tempo real. Essas ferramentas capturam o fluxo de pedidos e podem visualizar os passos dados pra completar um pedido. No entanto, as visualizações atuais tendem a focar em pedidos individuais, tornando difícil analisar o desempenho geral em muitos pedidos.
A Necessidade de uma Visualização Melhor
As ferramentas atuais que rastreiam desempenho, como Jaeger ou Dapper, usam visualizações chamadas diagramas de swimlane. Esses diagramas podem mostrar como cada parte de um pedido contribui para seu tempo de resposta total, ajudando a identificar qualquer parte lenta. No entanto, essas visualizações têm limitações. Muitas vezes, o desempenho de cada pedido não pode ser completamente entendido sem compará-lo a outros pedidos.
Os engenheiros geralmente querem ver tendências de desempenho em muitos pedidos, em vez de olhar só pra um pedido. Isso significa que, às vezes, eles têm que alternar entre diferentes ferramentas e visualizações, o que pode ser um processo chato.
Pra resolver essas questões, estamos propondo um novo método de visualização que facilita analisar o desempenho de múltiplos pedidos ao mesmo tempo. Nosso objetivo é criar uma maneira clara e simples de mostrar a relação entre diferentes características dos pedidos e seus tempos de resposta.
Nossa Abordagem de Visualização Inovadora
O método que estamos propondo consiste em um Painel com duas partes principais: uma árvore interativa e um histograma. A árvore mostra os fluxos de trabalho dos pedidos em termos de seus caminhos de execução, enquanto o histograma mostra a distribuição dos tempos de resposta desses pedidos. Essa visualização combinada permite que os usuários analisem vários aspectos dos pedidos ao mesmo tempo.
A parte da árvore da nossa visualização se baseia em ferramentas existentes que comparam os caminhos de dois pedidos. No entanto, nós estendemos esse método pra analisar grupos inteiros de pedidos. Cada parte da árvore representa uma chamada de serviço específica, e o layout mostra como os pedidos se movem pelos diferentes serviços.
Pra ajudar os usuários a identificar facilmente padrões nos pedidos, usamos cores pra destacar diferenças dentro de um grupo. Se uma chamada de serviço aparecer o mesmo número de vezes em todos os pedidos, ela será colorida de branco. Se o número de vezes que foi chamada variar muito, será representada em vermelho. Essa codificação por cores chama rapidamente a atenção pra chamadas de serviço que têm comportamentos diferentes e precisam ser investigadas mais a fundo.
Quando os usuários clicam em uma chamada de serviço específica, eles podem ver informações mais detalhadas sobre suas características, o que pode ajudá-los a determinar como isso impacta os tempos de resposta.
Investigando Padrões de Desempenho
Diferentes tipos de pedidos podem se comportar de maneira diferente em termos de desempenho. Ao olhar para o histograma, os engenheiros podem identificar diferentes comportamentos de tempo de resposta, ou "modos". Por exemplo, considere uma situação em que o carregamento de um site demora tempos diferentes com base em chamadas específicas a serviços. Se uma determinada chamada de serviço sempre aumenta o tempo de resposta, os engenheiros podem facilmente identificá-la usando nossas novas ferramentas.
Nós também planejamos permitir que os usuários procurem diferentes características mudando a maneira como codificamos as informações na árvore. Por exemplo, eles poderiam examinar como a duração da chamada de serviço afeta os tempos de resposta gerais ou como diferentes valores de cabeçalho impactam o desempenho.
Pra facilitar a compreensão, os usuários podem começar sua análise tanto pela árvore quanto pelo histograma. Se escolherem começar pelo histograma, podem selecionar um intervalo de tempo de resposta específico, que então atualizará a codificação de cores da árvore pra refletir como aqueles pedidos diferem do resto.
Desafios no Desenvolvimento
Enquanto estamos animados com essa nova abordagem de visualização, reconhecemos alguns desafios pela frente. Um desafio é lidar com grandes quantidades de dados. O rastreamento distribuído pode criar enormes quantidades de dados todo dia, o que pode tornar difícil gerar visualizações rapidamente.
Pra lidar com isso, planejamos organizar e pré-processar os dados coletados, de modo que as visualizações possam ser criadas de maneira mais eficiente.
Outro desafio é garantir uma boa experiência pro usuário. Quando muita informação é apresentada de uma vez, isso pode sobrecarregar os usuários. Pra reduzir esse risco, queremos manter nosso painel simples e amigável. Se certos tipos de pedidos gerarem árvores complexas, vamos permitir que os usuários escondam seções da árvore pra facilitar a navegação.
Progresso Atual e Objetivos Futuros
Atualmente, estamos construindo um protótipo do nosso método de visualização. Pra nossos testes, estamos usando um conjunto de dados de um estudo anterior. Esses dados simulam um ambiente de microserviços pra que possamos ver como nossa visualização funciona na prática.
Até agora, desenvolvemos a interface básica do usuário do nosso protótipo, incluindo os componentes da árvore e do histograma. No entanto, ainda estamos trabalhando em refinar o motor de processamento de dados e os sistemas de backend que suportam o painel. Embora não possamos fornecer uma captura de tela completa do protótipo funcionando ainda, criamos um mock-up pra mostrar como esperamos que fique o visual final.
Nas próximas etapas do nosso desenvolvimento, planejamos ampliar as capacidades do nosso protótipo pra analisar características adicionais de pedidos e permitir análises mais interativas. Nosso objetivo de longo prazo é possibilitar a análise simultânea de múltiplos fatores que influenciam o desempenho.
Além disso, continuaremos avaliando nossa abordagem usando estudos de caso relevantes e buscaremos dados do mundo real de grandes sistemas de microserviços pra garantir que nosso método possa ser aplicado efetivamente além dos nossos testes iniciais.
Pesquisas Relacionadas
Estudos anteriores olharam pra maneiras de visualizar sistemas distribuídos, mas muitos focam em pedidos únicos ou comparações entre apenas dois pedidos. Ferramentas como ShiViz e Jaeger avançaram na visualização do desempenho de pedidos individuais, mas ainda carecem de capacidades robustas pra analisar padrões em muitos pedidos de uma vez.
Outras ferramentas comerciais começaram a abordar essa lacuna, incorporando recursos de análise de desempenho agregados. No entanto, poucas dessas ferramentas ligam especificamente as características dos pedidos ao comportamento geral de desempenho.
Nosso trabalho visa preencher essa lacuna, fornecendo uma abordagem de visualização que se concentra em entender como diferentes características dos pedidos se relacionam com seu desempenho.
Conclusão
Neste artigo, apresentamos um novo método de visualização pra analisar o desempenho de microserviços. Nossa abordagem visa fornecer uma visão mais clara de como diferentes pedidos se comportam e como suas características influenciam seus tempos de resposta. Usando ferramentas interativas como uma árvore e um histograma, esperamos tornar o processo de analisar o desempenho de microserviços mais eficiente e perspicaz pros engenheiros. Conforme continuamos a desenvolver nosso protótipo e refinar nossos métodos, estamos ansiosos por potenciais melhorias nas práticas de análise de desempenho na indústria de software.
Título: Enhancing Trace Visualizations for Microservices Performance Analysis
Resumo: Performance analysis of microservices can be a challenging task, as a typical request to these systems involves multiple Remote Procedure Calls (RPC) spanning across independent services and machines. Practitioners primarily rely on distributed tracing tools to closely monitor microservices performance. These tools enable practitioners to trace, collect, and visualize RPC workflows and associated events in the context of individual end-to-end requests. While effective for analyzing individual end-to-end requests, current distributed tracing visualizations often fall short in providing a comprehensive understanding of the system's overall performance. To address this limitation, we propose a novel visualization approach that enables aggregate performance analysis of multiple end-to-end requests. Our approach builds on a previously developed technique for comparing structural differences of request pairs and extends it for aggregate performance analysis of sets of requests. This paper presents our proposal and discusses our preliminary ongoing progress in developing this innovative approach.
Autores: Jessica Leone, Luca Traini
Última atualização: 2023-02-24 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2302.12734
Fonte PDF: https://arxiv.org/pdf/2302.12734
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.