Apdex

Postado por Paulo André Soares de Mendonça em November 20, 2019 · 5 minutos de leitura

Este artigo é o primeiro de muitos que virão para falar a respeito do tema performance. Irei também apresentar algumas ferramentas para mostrar na prática como funciona e algumas soluções de problemas. Para padronizar as métricas do nível de satisfação do usuário e inciar uma analise de performance é fundamental falar sobre Apdex.

Apdex

O Apdex (Application Performance Index) é um padrão aberto da indústria para medir o desempenho de aplicativos de software. Sua finalidade é medir o nível satisfação do usuário, especificando um padrão para analisar e relatar o grau em que o desempenho médio atende às expectativas do usuário.

Níveis

Apdex classifica níveis de tempo de resposta em:

Satisfeito: O usuário é totalmente produtivo. O tempo de resposta da aplicação é menor ou igual ao tempo (T) definido como aceitável.

Tolerante: O usuário nota atraso de desempenho em respostas, mas continua o processo. Se enquadra nesse nível tempos de respostas maiores que T e menores ou iguais a 4T.

Frustrado: O desempenho com um tempo de resposta maior que 4T segundos é inaceitável e os usuários podem abandonar o processo.

Vamos analisar uma aplicação da qual foi definido um tempo de resposta de 1.2 segundos, por exemplo:

Nível Intervalo Tempo de Resposta
Satisfeito T ou menos 1.2 segundos
Tolerante >T, <= 4T Entre 1.2 e 4.8 segundos
Frustrado > 4T Mais que 4.8 segundos

Cálculo do Apdex:

Apdex function

A pontuação no Apdex varia entre 0 e 1, sendo 0 a pior pontuação ou seja 100% de frustração no tempo de resposta e 1 é o melhor cenário possível, 100% de satisfação no tempo de resposta.

Durante um período de 2 minutos, um host processa 200 solicitações. Foi definido um limite do Apdex de T = 0,5 segundos (500ms).

Cenário:

  • 170 dos pedidos foram atendidos em 500 ms, portanto, são classificados como satisfeitos.
  • 20 dos pedidos foram tratados entre 500 ms e 2 segundos (2000 ms), portanto, eles são classificados como tolerantes.
  • Os 10 restantes não foram tratados adequadamente ou levaram mais de 2 segundos; portanto, são classificados como frustrados.

A pontuação Apdex resultante é 0,9: (170 + (20/2)) / 200 = 0,9.

Monitoramento

Uma forma para monitorar o nível de Apdex seria utilizando uma ferramenta de APM, eu irei abordar nos próximos artigos essas ferramentas com mais detalhes. Para exemplificar de forma rápida, será mostrado a seguir o funcionamento da análise de Apdex em ferramentas como DataDog APM e DynaTrace APM.

O exemplo a seguir mostra um gráfico de monitoramento de Apdex da ferramenta da DataDog, como podemos observar na imagem a seguir, foi ajustado o valor T = 0.5s, Ficando a critério do administrador a possibilidade de definir o seu próprio limite de Apdex.

Data Dog Apdex edit

A solução de APM da Dynatrace, tem algumas funcionalidades bem interessantes. Uma delas é a visualização geral do nível de Apdex, conforme observado nas imagens abaixo.

Dynatrace Apdex

Outro ponto interessante da ferramenta da Dynatrace é a possibilidade de ver o Apdex agrupado por área geográfica ou por funcionalidade, conforme exemplificado a seguir.

Dynatrace Apdex Geograf

Dynatrace Apdex Actions

Conclusão

A utilização do Apdex é uma excelente prática para o acompanhamento periódico do nível de satisfação do usuário e consequentemente a qualidade do serviço. É um bom termômetro para observar o impacto de determinas ações tanto negociais quanto a novas implementações na aplicação. E o ponto mais importante é que utilizando esse padrão de medida alinhado com uma boa solução de APM, você poderá identificar na estrutura do seu projeto todos os pontos críticos que estão afetando a performance.

Nos próximos artigos explicarei melhor o que é APM, as metodologias utilizadas e um tutorial de como instalar e fazer as primeiras melhorias de performance.

Referências

https://www.datadoghq.com/apm/
https://www.dynatrace.com/platform/application-performance-management/
http://apdex.org/overview.html
https://docs.newrelic.com/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction