Apdex: ¿Están los clientes satisfechos con la API?
Las aplicaciones modernas tienen que funcionar, pero además responder rápido, si los usuarios interactúan con una aplicación lenta, su experiencia se verá degrada y por lo tanto existe la posibilidad de que no vuelvan más. Medir los tiempos de respuesta de nuestras aplicaciones, es fundamental en este contexto.
Sin embargo las mediciones aisladas de por sí o incluso un promedio de las mismas aunque útil no nos permite obtener mucha información sobre la percepción de los clientes con nuestro sistema. En este sentido nace una métrica especialmente diseñada para esto: el APDEX.
¿Qué es el APDEX?
El Apdex es una métrica utilizada para evaluar la satisfacción del usuario con el rendimiento de las aplicaciones, se basa en la idea de que la percepción del usuario sobre el rendimiento de una aplicación está relacionada con el tiempo de respuesta, el modo de funcionamiento es clasificando cada transacción que hacen los usuarios de acuerdo a tres posibles valores: satisfechas, tolerantes y frustrados, en función de un rango de tiempo predefinido.
La fórmula del Apdex se expresa como se muestra en la siguiente imagen:
Donde cada elemento de la ecuación es:
- Satisfactorias: son las respuestas dentro del umbral de tiempo deseado.
- Tolerantes: son las respuestas que superan el umbral pero aún son aceptables.
- Total de muestras: es el número total de respuestas evaluadas.
El resultado es un valor entre 0 y 1, donde 1 indica que todas las respuestas son satisfactorias, y 0 indica que todas son frustrantes.
Importancia de medir el APDEX
El objetivo de medir el apdex es poder conocer la percepción de los usuarios y tomar acciones para la mejora continua. Adicionalmente si nuestro sistema experimenta en una unidad de tiempo una degradación brusca del apdex puede significar que la aplicación en si, las aplicaciones de terceros con las que interactuamos o un elemento de infraestructura, por ejemplo la base de datos está experimentando inestabilidad y debe ser atendido.
En los proyectos y equipos de infraestructura el apdex es una de las métricas más usadas para emitir alertas.
Pudiéramos resumir la importancia del APDEX en los siguientes puntos:
- Experiencia de usuario: Al medir cómo perciben los usuarios el rendimiento, podemos identificar áreas de mejora y optimización para proporcionar una experiencia más satisfactoria.
- Identificación de problemas: La monitorización continua del Apdex permite identificar problemas de rendimiento de manera proactiva al implementar alertas sobre esta métrica para problemas puntuales o degradación paulatina.
- Toma de decisiones : La base para tomar decisiones acertadas es la información, teniendo el apdex no solo conoceremos la percepción de usuario, sino además el rendimiento de nuestra aplicación para tomar decisiones técnicas y de negocio alrededor del desempeño de la misma.
En proyectos de microservicios es un elemento fundamental su medición servicio a servicio.
Valores de referencia
No existe un valor de referencia exacto para definir que es una transacción satisfactoria o tolerable, en realidad depende de los casos de usos, no es lo mismo un sistema que se conecta a una base de datos local para brindar un información de un usuario a un sistema que necesite conectarse a sistemas externos para obtener información, en cada caso y en dependencia del negocio los que se considera satisfactorio pudiera ser diferente.
No obstante hay herramientas como New Relic que ya tienen out-the-box valores predefinidos (que luego podremos modificar a nuestras necesidades), en este caso usa: Satisfactorio por debajo de los 800ms, tolerado menor a 4 segundos y ya por encima de ese valor es inaceptable o frustrante.
Herramientas
En realidad el APDEX al ser un valor calculado en base a los tiempos de respuesta de las solicitudes de los usuarios pudiéramos medirlo tan artesanal o sofisticado como deseemos (o como el presupuesto lo permita).
Le medición básica sería tomamos el momento en el que entra el request y el momento en el que damos la respuesta, restamos y obtendremos el tiempo de duración del request, luego guardamos en una base de datos (de serie de tiempo preferentemente) y aplicamos la fórmula del APDEX en una unidad de tiempo determinada, por ejemplo: todas las transacciones en los últimos 30 minutos.
Si no queremos pasar trabajo, podemos usar herramientas que ya se encargan de obtener esta información como pueden ser las herramientas de código abierto Prometheus, Jaeger o Zipkin. Si hay presupuesto podemos ir a herramientas de pago profesionales como New Relic, que traen dashboards pre-armados listos para usar.
Espero te haya gustado el artículo, puede unirte a nuestra newsletter y apoyar este trabajo en Patreon con una pequeña contribución.