Um problema que sempre nos deparamos quando temos um software de grande demanda de usuários e integrações com outros sistemas é a latência de respostas, que é um tempo de delay nas respostas de requisições HTTP, ou em uma query rodando no banco de dados. Esse “delay” pode parecer algo normal e que sempre está presente, porém quando temos estruturas mal planejadas ou queries não otimizadas esse tempo de latência aumenta, e então nos deparamos com uma lentidão enorme no sistema, causando a abertura de novos chamados pelo cliente e até usuário parando de usar o sistema, o que causa um impacto direto no financeiro da sua empresa. Onde de acordo com um artigo divulgada pela Amazon em 2008 menciona que a cada 100ms de latência pode impactar em 1% das vendas.
Sabemos então o que é a latência e como ela pode impactar negativamente um sistema, mas como identificar qual a real latência do sistema? Para isso podemos aplicar um padrão chamado Long Tail Latency, uma forma de observar o real impacto para os usuários.
Para criar um gráfico de Long Tail Latency, precisamos analisar alguns dos processos mais utilizados no sistema, onde no meu caso utilizei como dado amostral 20 queries distintas, e então anotamos seus tempos.
Agora organizando esses dados de forma crescente podemos começar a descobrir os pontos que chamamos de: p50, p75, p90, p99, p99.9. Que indicam respectivamente o tempo médio de latência de uma query, as 25% das queries mais lentas, os 10% das queries mais lentas, até chegarmos a casos extremos que seriam o 0,1% das queries do sistema. Para o p50 podemos utilizar a mediana que descobrimos com base na nossa amostra, para os demais pontos, podemos utilizar a seguinte formula:
(ponto ÷ 100) × Total de amostras = posição
Dessa forma descobriremos os pontos de latência para cada cenário.
E por fim podemos criar um gráfico para podermos analisar melhor o que esses dados representam.
Analisando os resultados do teste:
Podemos analisar com o gráfico de percentual de latência que na média o usuário tem uma latência de 188ms de respostas de cada queries que rodam no sistema. Porém vemos como é exponencial o aumento do tempo de resposta, onde as 25% das queries mais lentas do sistema demora 1,3 segundos para rodar, e caso olharmos os piores cenários, temos uma latência de 6 segundos ou mais, o que está muito longe de um cenário ideial.
Portanto com esses dados em mãos podemos criar planos de ação para curto, médio e longo prazo e tomar decisões mais assertivas para a evolução do sistema. Como implementar algoritmos de cache, refatorar códigos repetitivos ou até mesmo planejar uma arquitetura mais performática e eficiente, garantindo facilidade de manutenção e feedbacks mais positivos do cliente final.



Top comments (0)