Monitoreo sintético vs Monitoreo de usuarios reales

¿El monitoreo de usuarios reales (RUM por sus iniciales en ingles) puede suplantar al monitoreo sintético? ¿Uno es mejor que otro?. Ambos pueden monitorear servicios de distintas maneras, y aunque arrojan distintos tipos de resultados, no se excluyen entre si.

Para entender si ambos pueden trabajar en conjunto primer hay que saber que significa cada uno y como trabajan.

--------------------------------------------------------------------------------------------------------------

Monitoreo sintético

El monitoreo sintético es una simulación de las interacciones de los usuarios, trata de generar una situación artificial y emular las conexiones (HTTP, TCP o SSL), esto permite verificar que un servicio este activo, que devuelva correctamente los datos, que cumpla condiciones pre-definidas y garantice un tiempo de respuesta.

Por lo general el monitoreo sintético corre desde un servidor dentro de la infraestructura de la organización (aunque también puede correr de manera externa) en donde se instala un programa que es el encargado de ejecutar las solicitudes contra los servicios que necesitemos monitorear. Estas solicitudes se ejecutan cada X tiempo y son construidas de manera manual tratan de simular un usuario final; entonces al ser artificial el monitoreo sintético permite definir claramente que se va a medir, como y las condiciones que se deben cumplir (como ser timeout, código de respuesta HTTP, y búsqueda de expresiones regulares en la respuesta), de esta manera el monitoreo sintético permite medir de manera controlada la aplicación sin generar una carga indeseada sobre la misma y así poder establecer condiciones que puedan satisfacer al usuario (SLO), alertas que se disparen ante un mal funcionamiento y testeos que validen que una aplicación puede pasar al entorno de producción. En contrapartida la misma manera de trabajar del monitoreo sintético hace que se complique medir muchas aplicaciones donde hay una entrada de información que pueda generar datos falsos en el mismo servicio, el hecho de definir testeos de manera manual hace imposible poder contemplar todos los casos que puedan generar los usuarios reales y esto a su vez conduce a que muchas veces las métricas que se obtienen no sean del todo concluyentes o estén bastante alejadas de la percepción del usuario real, y no solo esto, sino que puede existir la posibilidad de medir servicios que no sean significativos para el usuario creando puntos ciegos de los cuales no tenemos conocimientos hasta que ya es demasiado tarde.

Monitoreo de usuarios reales

Por otro lado el monitoreo de usuarios reales, corre en las mayorías de los casos insertando un script JavaScript en el HTML que por ende va a correr del lado del cliente, esto implica que cada usuario que utilice la aplicación es una fuente de datos que envía métricas a nuestro servidor. El RUM tiene como principal objetivo registrar cada interacción que tiene el usuario con la aplicación, medir el tiempo de respuesta de las transacciones, el tiempo de carga de la pagina( imágenes, fuentes, recursos) redirecciones de vínculos y los errores que puedan aparecer; en resumen mide la experiencia del usuario.

Al estar dispuesto por los usuarios que usen la aplicación, puede abarcar el total de los navegadores y diferentes equipos que se usen para realizar una consulta a la misma, esto conduce a una visión mucho mas amplia del uso de la aplicación, donde se pueden ver datos reales y que muchas veces nos alerta sobre puntos en nuestro servicio que no estábamos viendo. Es una herramienta de ayuda para los desarrolladores al poder visualizar cual parte del código es un problema para los usuarios(por ej.: por baja performance, indisponibilidad, errores de JavaScript, etc), así como también es de ayuda al negocio en la toma de decisiones al poder analizar si los cambios realizados en la aplicación han tenido los resultados esperados y si una nueva funcionalidad es usada o no y como impacta en la experiencia de los usuarios.

Por ejemplo:

Un sitio puede tener 2 maneras de recorrer el mismo, con una barra de búsqueda o con un índice lateral que nos lleve a las diferentes paginas, el RUM podría mostrarnos cual de las dos opciones usan mas los usuarios y hasta podría indicarnos el porque. Vamos a decir que en nuestro servidor de monitoreo aparecen datos que nos indican que los usuarios prefieren la barra de búsqueda sobre el índice lateral, y si revisamos los datos que nos ofrece el RUM seguramente podríamos ver que el índice no funciona siempre y a veces lleva a resultados que no son los esperados por los usuarios, además también nos informa que en la ultima versión de Chrome no se pueden cargar bien algunos recursos del índice y que desde San Luis (Argentina) experimentan mayor tiempo de respuesta que en otras provincias.

Este es un ejemplo muy simplificado de una situación real, pero sirve para mostrar como el RUM puede darnos información relevante para la toma de decisiones. Tomando el ejemplo de arriba se podría tomar la decisión de sacar el índice o de arreglar el índice para que funcione con la nueva versión de Chrome y posiblemente de sacar un notificado avisando del tiempo de demora en San Luis.

Ventajas y desventajas

Monitoreo sintético

Ventajas:

  • Permite diseñar pruebas personalizadas para testear algún servicio especifico.
  • Al poder configurar un intervalo de chequeo entre pruebas reduce el impacto en la aplicación.
  • Puede ser integrado en etapas tempranas de desarrollo para tener una medición continua de la aplicación.
  • Puede ser incluida en los etapas de los pipelines para correr testeos antes de un deploy.
  • Se puede generar desde distintos lugares geográficos o desde distintos prestadores de servicio.
  • Puede emular una carga masiva (test de carga) para poder comprobar la resiliencia y performance de la aplicación.
  • Permite medir servicios externos.
  • Permite validar si un servicio esta corriendo o no. Mediciones de uptime.

Desventajas:

  • Puede generar carga de datos en la aplicación de manera no real.
  • Solo genera datos desde los puntos definidos.
  • Las simulaciones solo miden lo que se defina a priori y nunca abarca el 100% de los casos que puedan experimentar los usuarios reales.
  • Es necesario complementar con otra herramienta para medir la experiencia UX.
  • Si los indicadores están mal definidos puede traer datos no significativos o incluso muy diferentes a los que experimentan los usuarios reales.

Monitoreo de usuarios reales

Ventajas:

  • Abarca el 100% de los casos actuales.
  • Deja ver desde que puntos geográficos se conectan así como el tipo de navegador o equipo que usan los usuarios.
  • Registra errores de JavaScript
  • Al ser un monitoreo en tiempo real permite detectar errores de manera mas rápida.
  • Mide la experiencia UX.
  • En algunos casos permite visualizar cual característica de una aplicación es mas consumida.

Desventajas:

  • Necesita tener un flujo de datos, lo cual no lo hace recomendable para ambientes de pre-producción, u horarios donde haya poco consumo de la aplicación.
  • Es necesario medir cuantos datos pueden ser procesados, si es demasiado el flujo de datos podría influir en la performance de la aplicación.
  • Solo puede medir servicios propios, esto seria un problema por ejemplo si se tratara de medir a un servicio tercerizado o a la competencia.
  • No informa sobre la disponibilidad de un servicio, No funciona como un testeo uptime de un servicio.

Resumen

Los 2 tipos de monitoreo sirven para determinar el estado de un servicio, obtener métricas que consoliden los indicadores del producto (SLI - service level indicator) y definir SLO's (service level indicators) y/o SLA's (service level agreement), también ayuda a los desarrolladores a obtener una percepción del funcionamiento de sus aplicaciones y a los dueños del producto le da una herramienta para medir el nivel de satisfacción de sus productos, medir la fiabilidad y pivotear en la toma de decisiones de si seguir desarrollando funcionalidades o parar a mejorar la confiabilidad del producto.

Ambos tipos de monitoreo se pueden utilizar en una organización y no son excluyentes, porque mientras que el monitoreo de usuarios reales entrega datos sobre los usuarios que consumen la aplicación, el monitoreo sintético puede generar pruebas programadas. El monitoreo sintético puede abarcar las horas de poco consumo para no dejar horarios sin monitorear, puede ser usado para realizar pruebas en ambientes de pre-producción, verificar la disponibilidad de un servicio y monitorear servicios externos.

Por otro lado RUM permite obtener métricas cercanas a la realidad, transacciones y percepciones reales de nuestros usuarios. Nos ayuda a entender de manera real como los usuarios experimentan nuestra aplicación.

Sin duda ambas se pueden utilizar para testear performance, monitorear disponibilidad y ayudarnos en la toma de decisiones. Se complementan para definir indicadores y poder definir mejores SLO's y SLA's.

Inicia sesión para ver o añadir un comentario.

Más artículos de Alejo Gomez Omil

Otros usuarios han visto

Ver temas