Telemetria en el software ¿Qué es y para que se usa?
A raíz de la polémica por la inclusión de una herramienta de telemetría en Audacitiy, se me ocurrió que resultaría interesante conocer de qué se trata exactamente y cuál es la función que cumple. Cabe mencionar que no es la primera vez que el tema sale a reducir. Ya había pasado con VS Code, el editor de código de Microsoft Y, aunque no se trate exactamente de telemetría, con los datos que Unity, el escritorio de Ubuntu, recopilaba para mostrar resultados relevantes de Amazon
Telemetría en el software ¿Qué es?
Las herramientas de telemetría se encargan de rastrear, registrar y supervisar la infraestructura mediante la observación y el análisis de los eventos generados por el sistema.
En el caso de sistemas complejos (o de múltiples usuarios corriendo un programa en equipos de diferentes características) la telemetría proporciona información útil para los desarrolladores y mantenedores que los usuarios no siempre están en condiciones de comunicar. Las herramientas de telemetría están pensadas para recopilar, transformar y comunicar datos sobre el rendimiento, la funcionalidad, la velocidad de procesamiento, los errores y los eventos de seguridad de los sistemas de producción. Pueden presentarse en múltiples formas, desde un registro centralizado hasta el rastreo de seguimientos de los datos a través de los microservicios.
Cabe mencionar, que como el prefijo tele indica, para hablar de telemetría en el software, los datos tienen que ser enviados a alguna parte, no se trata de un simple registro local de eventos
Funciones de la telemetría de software
- Métricas de uso : Mide como, cuando y cuanto se usa el producto. Están destinadas básicamente al sector comercial de la empresa desarrolladora ya que le permiten medir la fidelidad de los clientes y el éxito del producto.
- Detección y diagnóstico de problemas: La telemetría se usa para realizar un seguimiento remoto del funcionamiento del programa para entender, solucionar y prevenir problemas.
- Validación de decisiones de diseño: Se sabe que los grupos focales no siempre son una buena forma de evaluar un producto ya que los usuarios, al saberse observados, no actúan como lo harían en una situación real. Usando la telemetría, los desarrolladores pueden saber si las decisiones de diseño fueron correctas ya que reciben información sin que el usuario sea consciente.
Todo esto suena tremendamente invasivo, a pesar de que existen reglas estrictas sobre como deben tratarse esos datos. Es por eso, que por muy molesto que sea hay que leer la famosa Licencia de Uso de Usuario Final.
En general, el proceso de telemetría consta de 5 etapas
- Determinación de las métricas: Una métrica es una medida de rendimiento, por ejemplo la cantidad de tiempo de uso sin que se produzcan errores. No tiene sentido la simple recopilación de datos si no sabemos cuáles nos interesa y para qué los queremos. Generalmente se parte de una hipótesis ( Por ejemplo que un programa puede funcionar más de 100 horas sin errores), se establece un curso de acción en caso de que la hipótesis se valide o se niegue y se fija un lapso de vigencia para la métrica. Una métrica puede ser el resultado de combinar dos o más datos usando una fórmula.
- Instrumentación: En esta etapa se determinan que datos son relevantes para la determinación de la métrica y como se van a conseguir y transmitir.
- Transmisión y almacenamiento de los datos: Tanto para el cumplimiento de requisitos legales como para la protección del cliente, es necesario determinar cómo y de qué forma se van a transmitir los datos. Por ejemplo, si estamos haciendo el seguimiento de una aplicación móvil, el cliente no agradecerá que se envíen datos cada 5 minutos utilizando su plan de datos. Lo más adecuado sería recopilarlos localmente y esperar a que el dispositivo esté conectado a una red Wifi. También es posible que convenga cifrarlos antes de enviarlo o eliminar información que permita la identificación del cliente. Una vez que se recibieron los datos hay que decidir como almacenarlos. Una buena idea es hacer un muestreo lo que reduce la cantidad a guardar.
- Procesamiento: En este paso se combinan los datos para obtener la información que va a resultar útil para la toma de decisiones.
- Evaluación: En esta etapa se analiza la información obtenida a partir del procesamiento de los datos obtenidos y se compara con la hipótesis formulada al comienzo del procedimiento. A continuación se determinan los cursos futuros de acción.