[Dica rápida] Métricas de Latência
Veja neste post rápido os que são as métricas (…P90, P95 e P99)
Dando continuidade ao meu artigo: Entendendo métricas de latência e throughput, neste abordarei o que são as métricas de latência (…P90, P95 e P99) e como é importante medi-las.
Como já sabemos, as métricas de latência são fundamentais para avaliar o desempenho de aplicações e serviços. Elas ajudam a identificar a rapidez com que um sistema responde às requisições, fornecendo uma visão mais detalhada sobre a experiência do usuário e a saúde do sistema sob diferentes cargas.
Para nos auxiliar na análise e no monitoramento dessas métricas, ferramentas especializadas de observabilidade e monitoramento, como Datadog, New Relic e Prometheus, desempenham um papel crucial.
Elas possibilitam a coleta, visualização e análise dos percentis de latência em tempo real, ajudando as equipes a identificar e resolver problemas de desempenho de maneira proativa.
Para ficar mais claro, vamos imaginar o seguinte cenário:
Considere um sistema que recebe requisições ao longo do dia, com tempos de resposta que podem variar bastante — desde respostas quase instantâneas até atrasos mais significativos em momentos de maior carga ou problemas pontuais.
Por exemplo, ao analisar as latências das requisições de um sistema X nos temos:
[44ms, 72ms, 23ms, 62ms, 71ms, 72ms, 389ms, 697ms]
Retirando a média deles nós teriamos: 178,75ms.
Aqui é onde mora o problema, note que essa não seria uma realidade, pois a nossa aplicação esta retornando em alguns momentos menos de 100ms.
Note que embora a média seja uma métrica útil, ela pode mascarar a realidade quando há picos de latência. Isso ocorre porque valores extremamente altos podem distorcer a média, fazendo com que ela não reflita com precisão a experiência da maioria dos usuários.
Para resolver este problema nós podemos utilizar uma medida chamada percentil que consiste em ordenar uma amostra de forma crescente e dividir ela em 100 partes, cada uma com uma porcentagem dos dados aproximadamente igual.
Para ficar mais claro, vamos retornar no nosso exemplo anterior, onde obtemos a média de 178,75ms, vejamos como extrair os percentis destes temos:
Primeiro vamos ordenar os valores: [23, 44, 62, 71, 72, 72, 389, 697]
Agora, vejamos como analisar o P50 e P90:
- P50: descartamos 50% (em ordem) dos valores da amostra e recuperamos o primeiro valor que “sobra”, ou seja, nosso P50 = 72ms
- P90: descartamos 90% (em ordem) dos valores da amostra e recuperamos o primeiro valor que “sobra”, no caso o P90 = 697ms
A seguir temos uma imagem retornando alguns dos percentis para uma chamada em uma aplicação X:
Mas qual seria a vantagem de se utilizar percentil?
Pegando o percentil 90 como exemplo, nos podemos constatar que em 90% das amostras se encontram abaixo desse valor, e apenas 10% excedem esse limite.
Por exemplo, se o P90 de uma latência é de 697 ms, isso significa que 90% dos usuários têm uma experiência com tempos de resposta de até 697 ms, enquanto apenas 10% enfrenta tempos superiores a esse valor.
Por esse motivo essa métrica é muito utilizada em dashboards de monitoramento :)
Bom, com isso finalizo mais este artigo, espero que tenham gostado e até a próxima pessoal.