Diseñar e implementar métricas y consultas

Completado

La recopilación de métricas asociadas con el ciclo de vida del proyecto permite a las organizaciones obtener información sobre sus prácticas de desarrollo de software y simplificar sus procesos de DevOps. Al habilitar la recopilación de datos de telemetría de las actividades del proyecto, los equipos pueden realizar un seguimiento de las ejecuciones de canalización, las actualizaciones de elementos de trabajo y otros eventos relacionados con DevOps en tiempo real.

¿Por qué importan las métricas del proyecto?

Este enfoque es importante por varias razones:

Mejora de la visibilidad:

  • Ver el estado en tiempo real de todos los proyectos y equipos
  • Comprender la distribución y capacidad del trabajo
  • Seguimiento del progreso hacia hitos y fechas límite
  • Identificar las dependencias y los bloqueadores al principio

Supervisión del rendimiento:

  • Medición de la velocidad y el rendimiento del equipo
  • Seguimiento del tiempo de ciclo y tendencias de tiempo de ejecución
  • Supervisión de las tasas de éxito de compilación e implementación
  • Identificación de patrones de degradación del rendimiento

Optimización del ciclo de vida de desarrollo de software:

  • Identificación de cuellos de botella en el flujo de trabajo del proyecto
  • Tomar decisiones controladas por datos sobre las mejoras del proceso
  • Mejorar continuamente las prácticas de desarrollo
  • Correlación de las actividades de desarrollo con el rendimiento de la aplicación

Ventajas clave:

  • Permite a los equipos tomar decisiones controladas por datos
  • Proporciona métricas objetivas para retrospectivas
  • Admite el planeamiento y la previsión de la capacidad.
  • Habilita la administración proactiva de riesgos

Comparación de plataformas: GitHub frente a Azure DevOps

Tanto GitHub como Azure DevOps incluyen compatibilidad para recopilar y analizar telemetría relacionada con el proyecto, pero sus funcionalidades difieren significativamente:

Funcionalidades de seguimiento de proyectos de GitHub

Características de GitHub Insights:

  • Métricas integradas: Actividad del repositorio, rendimiento de solicitudes de incorporación de cambios, involucración de la comunidad
  • Vista de actividad: Resumen de actividad para repositorios
  • Gráfico de colaboradores: Contribuciones de código a lo largo del tiempo
  • Análisis de tráfico: Vistas, clones, referencias

Limitaciones:

  • El análisis de seguimiento de proyectos se limita en comparación con las herramientas de administración de proyectos dedicadas.
  • Menos métricas predefinidas para la administración de proyectos ágiles
  • Funcionalidades básicas de visualización
  • Opciones limitadas de informes personalizados
  • Ninguna integración integrada con Azure Monitor

Funcionalidades de seguimiento de proyectos de Azure DevOps

Características de Azure DevOps Analytics:

  • Conjunto completo de características de análisis e informes diseñadas específicamente para la supervisión de proyectos
  • Paneles personalizables: Widgets de arrastrar y colocar para vistas personalizadas
  • Funcionalidades enriquecidas de informes: Integración de Power BI, fuentes de OData
  • Amplia gama de métricas y consultas predefinidas: Velocidad, agotamiento, tiempo de ciclo, tiempo de ejecución
  • Facilitar el seguimiento del progreso del trabajo durante el ciclo de vida de desarrollo de software

Ventajas:

  • Diseñado específicamente para la administración de proyectos ágiles
  • Amplia biblioteca de widgets para paneles
  • Funcionalidades avanzadas de consulta con el lenguaje de consulta WIT
  • Integración profunda con los servicios de Azure

Ampliación de la supervisión con servicios de Azure

Además de la funcionalidad de telemetría integrada en GitHub y Azure DevOps, puede ampliar el ámbito de supervisión aprovechando los servicios de Azure , como Azure Monitor y Application Insights:

Funcionalidades de integración:

  • Azure DevOps: Ofrece una integración más enriquecida y simplificada que GitHub
  • Conectores nativos: Las canalizaciones de Azure DevOps se integran de forma nativa con Application Insights
  • Anotaciones de versión: Correlación automática de implementaciones con métricas de rendimiento
  • Integración de elementos de trabajo: Creación de elementos de trabajo directamente desde alertas de Application Insights
  • Paneles unificados: Combinación de métricas de proyecto con telemetría de aplicaciones

Uso del seguimiento de proyectos integrado de GitHub

En los proyectos de GitHub, el seguimiento del progreso implica la supervisión de métricas de desarrollo clave:

Métricas clave de GitHub:

  • Flujo de procesamiento de incidencias: Tasa de creación y cierre de incidencias
  • Problema de envejecimiento: Cuánto tiempo permanecen abiertos los problemas
  • Plazo de revisión de código: Tiempo desde la creación del PR hasta la primera revisión y aprobación
  • Tiempo de integración de solicitudes de incorporación de cambios: Duración desde la creación de la solicitud hasta su integración.
  • Actividad colaborador: Frecuencia y volumen de contribuciones

Estas métricas ofrecen información sobre el estado del proyecto, la eficiencia del equipo y la calidad del código, lo que ayuda a identificar áreas para mejorar.

GitHub Insights

La manera más sencilla de revisar las métricas es usar la funcionalidad insights:

  • Visualización de la actividad del repositorio a lo largo del tiempo
  • Realizar un seguimiento del rendimiento de los pull requests (abiertos, combinados, cerrados)
  • Supervisar la participación de la comunidad (bifurcaciones, estrellas, observadores)
  • Visualización de estadísticas del colaborador y frecuencia del código

Automatización personalizada con Acciones de GitHub

Cree flujos de trabajo de Acciones de GitHub personalizados que automaticen la recopilación de métricas:

  • Basado en desencadenadores: Eventos como solicitudes de incorporación de cambios, problemas o inserciones de código
  • Programado: Ejecutar según las programaciones de cron para informes periódicos
  • Acciones: Recopilación y análisis de métricas, generación de informes, publicación en paneles

Acceso mediante programación con la API REST

Aproveche la API rest de GitHub para acceder a los datos del proyecto mediante programación:

  • Métricas de pull requests e incidencias
  • Estadísticas de colaboradores
  • Datos de actividad del repositorio
  • Creación de paneles o informes personalizados mediante herramientas de análisis

Uso del seguimiento de proyectos integrado de Azure DevOps

Azure DevOps ofrece un gran número de métricas integradas que reflejan varios aspectos de la administración de proyectos: tiempo de ciclo, tiempo de ejecución, eficiencia del flujo de trabajo y estado del trabajo pendiente. Estas métricas se pueden agrupar en varias categorías:

Métricas de elementos de trabajo

  • Recuento de elementos de trabajo: Supervisar el número total de elementos de trabajo creados, completados o en curso con el tiempo
  • Edad del elemento de trabajo: Realizar un seguimiento de la antigüedad de los elementos de trabajo abiertos para identificar las tareas vencidas
  • Velocidad: Medir la velocidad a la que se completan los elementos de trabajo sobre iteraciones o sprints
  • Crecimiento del trabajo pendiente: Supervisar la tasa de creación de nuevos elementos de trabajo frente a la finalización
  • Distribución de elementos de trabajo: Seguimiento de tipos de elementos de trabajo (errores, características, tareas)

Métricas de compilación y versión

  • Tasa de éxito de compilación: Supervisión del porcentaje de compilaciones correctas frente a compilaciones con errores
  • Frecuencia de implementación de versión: Realizar un seguimiento de la frecuencia con la que se implementan las versiones en producción u otros entornos
  • Tasa de éxito de implementación: Medición del porcentaje de implementaciones correctas para identificar problemas de implementación
  • Duración de la compilación: Seguimiento del tiempo de finalización de las compilaciones
  • Tiempo de despliegue: Tiempo desde la confirmación del código hasta la producción

Métricas de prueba

  • Tasa de pase de casos de prueba: Supervisión del porcentaje de casos de prueba superados frente a casos de prueba con errores
  • Tiempo de ejecución de los casos de prueba: Seguimiento del tiempo necesario para ejecutar los casos de prueba e identificar cuellos de botella de rendimiento
  • Tendencias de errores de casos de prueba: Análisis de tendencias en errores de casos de prueba para identificar problemas periódicos
  • Cobertura de pruebas: Porcentaje de código cubierto por pruebas
  • Detección de pruebas poco confiables: Identificación de pruebas no confiables

Métricas de código

  • Renovación de código: Medición de la cantidad de código agregado, modificado o eliminado a lo largo del tiempo
  • Métricas de calidad del código: Supervisar la cobertura de código, la complejidad ciclomática y el índice de mantenimiento
  • Métricas de solicitud de incorporación de cambios: Tiempo de revisión, tasas de aprobación
  • Comentarios de revisión de código: Frecuencia y tipos de comentarios

Métricas de rendimiento del equipo

  • Sprint Burndown: Hacer un seguimiento de los objetivos del sprint monitorizando el trabajo restante en relación con el tiempo
  • Velocidad del equipo: Medición de la cantidad media de trabajo completada por el equipo en cada sprint
  • Tiempo de ejecución: Supervisar el tiempo necesario para la creación de un elemento de trabajo hasta su finalización
  • Tiempo de ciclo: Hora desde el inicio del trabajo hasta la finalización
  • Rendimiento: Elementos de trabajo completados por período de tiempo

Paneles y análisis personalizados

Puede mostrar y analizar estas métricas mediante paneles accesibles directamente en el portal de Azure DevOps. Para más información, cree informes personalizados basados en consultas en Azure DevOps Analytics.

Consultas analíticas comunes

Algunas de las consultas, agrupaciones y visualizaciones más usadas son:

1. Análisis de tiempo de ciclo:

  • Consulta: Calcular el tiempo de ciclo (tiempo necesario para completar un elemento de trabajo de principio a fin) para distintos tipos de elementos de trabajo
  • Agrupación: Elementos de trabajo por estado (Activo, Resuelto, Cerrado)
  • Cálculo: Diferencia de hora entre la fecha de inicio y la fecha de finalización
  • Visualización: Promedio de tiempo de ciclo por estado a lo largo del tiempo
  • Propósito: Identificación de cuellos de botella y mejora de la eficiencia del proceso

2. Distribución del tiempo de ejecución:

  • Consulta: Análisis de la distribución de tiempo de espera (creación hasta finalización) para diferentes equipos o áreas
  • Agrupación: Elementos de trabajo por ruta de área o asignación al equipo
  • Cálculo: Tiempo de espera para cada elemento de trabajo
  • Visualización: Histograma o gráfico de cuadros que muestra la distribución
  • Propósito: Identificar valores atípicos y optimizar el flujo de trabajo en áreas específicas para reducir el tiempo de entrega

3. Diagrama de flujo acumulado (CFD):

  • Consulta: Seguimiento del número de elementos de trabajo en cada estado (Por hacer, En progreso, Terminado) a lo largo del tiempo
  • Agrupación: Elementos de trabajo por estado, ordenados por fecha de cambio de estado
  • Cálculo: Conteo acumulado de elementos de trabajo en cada estado a intervalos regulares (diario, semanal)
  • Visualización: CFD que muestra el flujo de elementos de trabajo
  • Propósito: Supervisión del flujo a través de las fases del proyecto e identificación de la congestión o los retrasos

4. Análisis de envejecimiento de elementos de trabajo:

  • Consulta: Analizar el envejecimiento de los elementos de trabajo en fases pendientes o fases específicas
  • Agrupación: Elementos de trabajo por edad (días desde la creación), prioridad o tipo
  • Cálculo: Promedio de edad, porcentaje vencido, distribución de envejecimiento entre categorías
  • Visualización: Tendencias de envejecimiento a lo largo del tiempo
  • Propósito: Priorizar el limpieza de trabajos pendientes y garantizar la entrega oportuna de los elementos de alta prioridad

Uso de Azure Monitor y Application Insights para el seguimiento de proyectos

Hay muchas maneras de integrar el seguimiento de proyectos con Azure Monitor y Application Insights. Uno de los enfoques más usados implica combinar la supervisión continua, las anotaciones de versión y la integración de elementos de trabajo. Esto optimiza el ciclo de vida de desarrollo de software por:

Ventajas:

  • Proporcionar información valiosa sobre cuellos de botella de rendimiento
  • Facilitar la resolución proactiva de problemas
  • Habilitación de la toma de decisiones informada
  • Entrega correcta de software de alta calidad

Integración de supervisión continua

Con la supervisión continua, los pipelines de entrega pueden incorporar datos de supervisión de Application Insights.

Puertas de calidad basadas en la telemetría:

  • Una alerta de Application Insights puede bloquear o revertir una implementación controlada hasta que se resuelva la alerta.
  • Supervisión de métricas como la tasa de errores, el tiempo de respuesta, el recuento de excepciones durante la implementación
  • Impedir que las implementaciones defectuosas lleguen a producción
  • Por el contrario, si se superan las comprobaciones de supervisión, las implementaciones pueden continuar automáticamente sin intervención manual.

Escenario de ejemplo:

  1. Despliegue de pipeline en el entorno de ensayo
  2. La puerta posterior a la implementación supervisa Application Insights durante 15 minutos
  3. Si la tasa de errores es menor de >1%, la implementación se bloquea
  4. Si las métricas son correctas, la implementación continúa automáticamente a producción.

Anotaciones de lanzamiento

Las anotaciones designan eventos en la canalización de CI/CD:

Propósito:

  • Captura de la correlación entre la entrega de versiones de software y el rendimiento resultante de la aplicación
  • Marcar eventos de implementación en gráficos de Application Insights
  • Ver exactamente cuándo se produjeron cambios de rendimiento en relación con las implementaciones
  • Identificación rápida de si una implementación provocó una regresión de rendimiento

Implementación:

  • Azure DevOps: Admite la generación automática de anotaciones mediante canalizaciones de compilación.
  • Anotaciones personalizadas: Creación de anotaciones arbitrarias mediante PowerShell
  • Metadatos: Incluir el número de compilación, las notas de la versión, el entorno de implementación

Caso de uso: El gráfico de métricas de rendimiento muestra el pico de tiempo de respuesta. La anotación de la versión de lanzamiento revela que los picos coinciden con el despliegue de la versión v2.3.1, permitiendo identificar inmediatamente la versión problemática.

Integración de elementos de trabajo

La funcionalidad de integración de elementos de trabajo facilita la inserción de datos contextuales de Application Insights al generar elementos de trabajo en GitHub y Azure DevOps:

Características que facilitan la captura de datos y la generación de elementos de trabajo:

Campos avanzados:

  • Rellenar automáticamente los hitos, los proyectos o los destinatarios asignados
  • Establecimiento de la prioridad en función de la gravedad de la alerta
  • Etiqueta con los componentes o servicios afectados
  • Vínculo a elementos de trabajo relacionados

Varias configuraciones:

  • Compatibilidad con cualquier número de repositorios o tipos de elementos de trabajo
  • Diferentes configuraciones para diferentes tipos de alertas
  • Plantillas de elementos de trabajo específicas del entorno

Consultas KQL precompiladas y personalizables:

  • Adición automática de datos de Application Insights a elementos de trabajo
  • Incluir recuentos de errores, usuarios afectados, seguimientos de pila
  • Adjuntar entradas de registro pertinentes
  • Insertar gráficos de rendimiento

Plantillas de cuaderno personalizables:

  • Crear formatos de elementos de trabajo estandarizados
  • Incluir listas de comprobación de solución de problemas
  • Vínculo a runbooks y documentación
  • Rellenar previamente la información de diagnóstico

Flujo de trabajo de ejemplo:

  1. Application Insights detecta una tasa elevada de excepciones
  2. La alerta se desencadena automáticamente
  3. Elemento de trabajo creado en Azure DevOps con:
    • Título: "Alta tasa de excepciones en ProductService"
    • Descripción: resultados de la consulta KQL que muestran las principales excepciones
    • Asignado: ingeniero de guardia del equipo de servicio
    • Prioridad: alta (basada en el impacto del usuario)
    • Datos adjuntos: últimas 100 trazas de pila de excepciones
    • Vínculos: Consultas relacionadas de Application Insights, anotación de implementación
  4. El ingeniero recibe una notificación y tiene toda la información de diagnóstico inmediatamente