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
Recomendado por LinkedIn
Monitoreo sintético
Ventajas:
Desventajas:
Monitoreo de usuarios reales
Ventajas:
Desventajas:
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.