Software Testing & QA Services

Coleccionando Métricas: Guía paso a paso

September 30, 2024

Tags: Tecnologías
metricas

 

Tienes una aplicación completa, parece estar funcionando bien. Los usuarios finales te estan dando buen feedback. Tu percepción te dice que hay un cambio positivo de la forma en la que se hacía antes. ¿Cómo podríamos mejorar esta experiencia? ¿Que nos garantiza que lo que percibimos es cierto?

 

No siempre podemos estar contentos con solamente tener una señal de aprobación y ahí es cuando tenemos que armar una manera objetiva de calificar el funcionamiento de nuestros sistemas, para esto necesitamos crear métricas. Estas serán variables que con el tiempo cambiarán y nos ofrecerán otra herramienta más para evaluar nuestros procesos. A nivel de negocio se define qué datos necesitamos para discernir un buen indicador y después empezamos el trabajo de coleccionar estas métricas.

 

Coleccionar métricas no es más que utilizar herramientas existentes o nuevas y de manera explícita instrumentar para que generen o reporten los datos que hemos solicitado como métricas. Muchas veces nuestros sistemas por sí solos ya se encuentran reportando y guardando datos genéricos no contextualizados y solo es cuestión de dejar un desarrollo mínimo que empezará a ampliar nuestro entendimiento de que ocurre en nuestras aplicaciones.  

 

metricas analisis

 

Las métricas nos pueden ayudar a lograr los siguientes objetivos:

 

  • Priorización para nuestro siguiente feature
  • Resaltar áreas populares de nuestra aplicación, pensemos en una funcionalidad o una vista en particular
  • Traer atención a problemas de rendimiento
  • Revelar problemas latentes o medir impacto de problemas ya conocidos
  • Dar transparencia a áreas interesadas
  • Mejora la objetividad para nuestra toma de decisiones

 

Potencial herramienta para marketing

 

En este sentido dependiendo de lo que nos propongamos, coleccionar métricas puede tener muchas funciones. El proceso inicial para coleccionarlas suele tener un impacto alto en el esfuerzo necesitado pero con el tiempo registrar nuevos datos e instrumentar nuevos procesos se vuelve más fácil y rápido porque el negocio ha descifrado su interés y el área técnica ha logrado abstraer esta funcionalidad para cuando se solicite.

 

Metodologia

 

La forma en la que se colecciona la data va a depender de las fuentes que utilicemos. Es posible utilizar bases de datos transaccionales para crear boards que nos informen sobre algún proceso o nos puedan dar reportes acumulados de interés. Muchas veces esto evoluciona de tal manera que somos cuidadosos de ejecutar estos procesos analiticos en horas estrategicas o inclusive ajustamos nuestros proyectos para que podamos consumir estos en ambientes que no afecten nuestras operaciones utilizando migraciones y ETLs para transferir nuestra información a un data warehouse donde podemos utilizar herramientas encima del mismo para BI.

 

Otro método popular es utilizar terceros para parametrizar variables, donde intencionalmente usamos tags y ejecutamos sentencias en nuestro código que se integran con el tercero. Una vez completado este proceso en la plataforma de destino podemos visualizar por medio de reportes, funnels o timelines la data reportada. La ventaja de este approach es que no necesitamos invertir recursos de nuestra base de datos para este objetivo, a la misma vez el proceso es más fácil de iniciar sin tener que armar un sistema que nos guarde nuestros datos de cero.

 

Implementacion

 

Basta con hacer una simple búsqueda con las palabras claves "custom metric collection tools" para encontrar miles y miles de soluciones, desde open source hasta servicios en la nube pre-armados. En este artículo nos concentramos en la colección de métricas desde el cliente o navegador y vamos a utilizar dos soluciones de ejemplo: google analytics y datadog.

 

Google Analytics

 

En el caso de google, utilizando su plataforma en https://analytics.google.com (GA) podemos crear una cuenta, definir fuentes de información y tags. Una vez registremos nuestro app o apps guardamos nuestra api key y de lado de nuestra aplicacion utilizando una libreria cliente para google analytics podemos configurar con nuestro api key, tags, eventos, acciones que le enviaremos a GA.

 

// google analytics logger
const gaLogger = Analytics({
 app: 'my-logger',
 version: 100,
 plugins: [
   googleAnalytics({
     trackingId: 'UA-33333333',
   }),
 ],
});
const begin = +Date();
const result = await runProcess();
const end = +Date()l
gaLogger.track('process-duration', {
 duration: end - begin,
 type: 'main-process'
});
gaLogger.track('process-result', {
 value: result.code,
});


Datadog

 

Datadog es una plataforma para traer observabilidad a nuestros sistemas. Si bien se podría considerar overkill utilizar datadog sólo para coleccionar métricas, en el caso que ya tengamos integraciones con terceros similares tenemos que analizar dentro de las opciones que ya utilizamos en nuestros proyectos si su solución satisface nuestras necesidades de coleccionar métricas. De esta manera podemos tener todo bajo una sola plataforma en vez de utilizar varios servicios para distintas funcionalidades. Datadog sigue un flujo similar al de GA, instalamos una libreria de cliente en nuestro app y comenzamos a reportar valores de contexto a nivel de servidor o cliente (navegador).

 

import { datadogRum, DefaultPrivacyLevel} from '@datadog/browser-rum';
datadogRum.addAction(key, {
 value: elapsedTime,
});
const begin = +Date();
const result = await runProcess();
const end = +Date()l
datadogRum.addAction('process-duration', {
 duration: end - begin,
 type: 'main-process',
});
datadogRum.addAction('process-result', {
 value: result.code,
});


En la plataforma de datadog podemos ver como los eventos emitidos desde nuestros apps son registrados y en base a esos datos podemos armar widgets por medio de su funcionalidad de creacion de dashboards. No solo tenemos acceso a nuestros eventos customs sino que también podemos utilizar cualquier otro dato que datadog capture por defecto para enriquecer nuestros reportes. De la misma manera lo que reportemos a datadog se puede utilizar potencialmente en cualquier de sus módulos para otros propósitos como para hacer troubleshooting o identificar áreas de bajo rendimiento.

 

Conclusion

 

Una vez tenemos un framework para modelar nuestra métricas, podemos conocer nuestro sistema con un grado de confianza más alto. Es posible tomar decisiones de manera data-driven y determinar el siguiente objetivo de nuestro equipo de una manera más eficiente. A la misma vez proveemos un nivel de transparencia para cualquier área interesada en los procesos relacionados al app. Muchas de las métricas colectadas pueden pasar a ser parte de KPIs que se utilicen para la operación de nuestro proyecto, negocio o presentar a nuestras audiencias o clientes.

 

Te recomendamos en video