Projetar e implementar métricas e consultas

Concluído

A coleta de métricas associadas ao ciclo de vida do projeto permite que as organizações obtenham insights sobre suas práticas de desenvolvimento de software e simplifiquem seus processos de DevOps. Ao habilitar a coleta de dados de telemetria das atividades do projeto, as equipes podem acompanhar execuções de pipeline, atualizações de item de trabalho e outros eventos relacionados ao DevOps em tempo real.

Por que as métricas do projeto são importantes

Esta abordagem é importante por várias razões:

Melhorar a visibilidade:

  • Veja o status em tempo real de todos os projetos e equipes
  • Compreender a distribuição e a capacidade de trabalho
  • Acompanhe o progresso em direção a objetivos e prazos
  • Identificar dependências e bloqueadores com antecedência

Monitorização do desempenho:

  • Meça a velocidade e a taxa de transferência da equipe
  • Acompanhe o tempo de ciclo e as tendências de lead time
  • Monitore as taxas de sucesso de compilação e implantação
  • Identificar padrões de degradação de desempenho

Otimizando o ciclo de vida de desenvolvimento de software:

  • Identificar gargalos no fluxo de trabalho do projeto
  • Tome decisões orientadas por dados sobre melhorias de processos
  • Melhorar continuamente as práticas de desenvolvimento
  • Correlacione as atividades de desenvolvimento com o desempenho do aplicativo

Principais benefícios:

  • Capacita as equipes a tomar decisões baseadas em dados
  • Fornece métricas objetivas para retrospetivas
  • Suporta planejamento e previsão de capacidade
  • Permite o gerenciamento proativo de riscos

Comparando plataformas: GitHub vs. Azure DevOps

Tanto o GitHub quanto o Azure DevOps incluem suporte para coletar e analisar telemetria relacionada ao projeto, mas seus recursos diferem significativamente:

Recursos de rastreamento de projetos do GitHub

Recursos do GitHub Insights:

  • Métricas integradas: Atividade do repositório, desempenho de pull request, envolvimento da comunidade
  • Vista de pulso: Resumo da atividade para repositórios
  • Gráfico de contribuidores: Contribuições de código ao longo do tempo
  • Análise de tráfego: Visualizações, clones, referências

Limitations:

  • As análises de acompanhamento de projetos são limitadas em comparação com ferramentas dedicadas de gerenciamento de projetos
  • Menos métricas predefinidas para gerenciamento ágil de projetos
  • Recursos básicos de visualização
  • Opções limitadas de relatórios personalizados
  • Sem integração interna com o Azure Monitor

Recursos de acompanhamento de projetos do Azure DevOps

Recursos do Azure DevOps Analytics:

  • Conjunto abrangente de recursos de análise e relatórios projetados especificamente para monitoramento de projetos
  • Painéis personalizáveis: Widgets de arrastar e soltar para exibições personalizadas
  • Capacidades avançadas de geração de relatórios: Integração Power BI, OData feeds
  • Ampla gama de métricas e consultas predefinidas: Velocidade, burndown, tempo de ciclo, tempo de entrega
  • Facilitar o acompanhamento do progresso do trabalho durante todo o ciclo de vida de desenvolvimento de software

Vantagens:

  • Criado especificamente para o gerenciamento ágil de projetos
  • Extensa biblioteca de widgets para painéis
  • Recursos avançados de consulta com a linguagem de consulta WIT
  • Integração profunda com os serviços do Azure

Estendendo o monitoramento com os serviços do Azure

Além da funcionalidade de telemetria incorporada no GitHub e no Azure DevOps, você pode estender o escopo do monitoramento aproveitando os serviços do Azure , como o Azure Monitor e o Application Insights:

Capacidades de integração:

  • Azure DevOps: Oferece integração mais rica e simplificada do que o GitHub
  • Conectores nativos: Os pipelines do Azure DevOps integram-se nativamente com o Application Insights
  • Anotações de versão: Correlação automática de implantações com métricas de desempenho
  • Integração de itens de trabalho: Crie itens de trabalho diretamente a partir de alertas do Application Insights
  • Painéis unificados: Combine métricas de projeto com telemetria de aplicativos

Usando o acompanhamento de projetos integrado do GitHub

Nos projetos do GitHub, o acompanhamento do progresso envolve o monitoramento das principais métricas de desenvolvimento:

Principais métricas do GitHub:

  • Taxa de processamento de problemas: Taxa de criação e encerramento de problemas
  • Problema de envelhecimento: Por quanto tempo as questões permanecem em aberto
  • Tempo de resposta da revisão do código: Tempo desde a criação do RP até a primeira revisão e aprovação
  • Tempo de mesclagem de solicitação pull: Duração desde a criação do RP até à fusão
  • Atividade do contribuidor: Frequência e volume das contribuições

Essas métricas oferecem informações sobre a integridade do projeto, a eficiência da equipe e a qualidade do código, ajudando a identificar áreas para melhoria.

GitHub Insights

A maneira mais simples de revisar métricas é usando a funcionalidade Insights:

  • Visualize a atividade do repositório ao longo do tempo
  • Acompanhe o desempenho da solicitação pull (aberta, mesclada, fechada)
  • Monitore o envolvimento da comunidade (garfos, estrelas, observadores)
  • Ver estatísticas dos colaboradores e frequência de alterações de código

Automação personalizada com ações do GitHub

Crie fluxos de trabalho personalizados do GitHub Actions que automatizam a coleta de métricas:

  • Baseado em gatilho: Eventos como solicitações pull, problemas ou envio de código
  • Programado: Executar em agendamentos cron para a geração de relatórios periódicos
  • Ações: Colete e analise métricas, gere relatórios, publique em painéis

Acesso programático com API REST

Aproveite a API REST do GitHub para acessar os dados do projeto programaticamente:

  • Métricas de solicitação de emissão e pull
  • Estatísticas de contribuintes
  • Dados de atividade do repositório
  • Crie painéis ou relatórios personalizados usando ferramentas de análise

Usando o acompanhamento de projetos interno do Azure DevOps

O Azure DevOps oferece um grande número de métricas internas que refletem vários aspetos do gerenciamento de projetos: tempo de ciclo, tempo de execução, eficiência do fluxo de trabalho e integridade da lista de pendências. Essas métricas podem ser agrupadas em várias categorias:

Métricas de Itens de Trabalho

  • Contagem de itens de trabalho: Monitorar o número total de itens de trabalho criados, concluídos ou em andamento ao longo do tempo
  • Idade do Item de Trabalho: Acompanhe a idade dos itens de trabalho abertos para identificar tarefas em atraso
  • Velocidade: Meça a taxa na qual os itens de trabalho são concluídos em iterações ou sprints
  • Crescimento do backlog: Monitorize a taxa de criação de novos itens de trabalho em comparação com a conclusão
  • Distribuição de itens de trabalho: Controlar tipos de itens de trabalho (bugs, recursos, tarefas)

Crie e libere métricas

  • Taxa de sucesso das builds: Monitore a percentagem de builds bem-sucedidas versus com falha
  • Frequência de implantação da versão: Controlar a frequência com que as versões são implantadas em ambientes de produção ou outros
  • Taxa de sucesso da implantação: Meça a porcentagem de implantações bem-sucedidas para identificar problemas de implantação
  • Duração do build: Monitorize o tempo necessário para concluir builds
  • Prazo de implementação: Tempo desde o compromisso até à produção

Métricas de teste

  • Taxa de aprovação no caso de teste: Monitore a porcentagem de casos de teste aprovados versus casos de teste reprovados
  • Tempo de execução do caso de teste: Acompanhe o tempo necessário para executar casos de teste para identificar gargalos de desempenho
  • Tendências de falha de caso de teste: Analise tendências em falhas de casos de teste para identificar problemas recorrentes
  • Cobertura do teste: Percentagem de código abrangida pelos ensaios
  • Deteção de teste flutuante: Identificar testes instáveis

Métricas de código

  • Code Churn: Meça a quantidade de código adicionado, modificado ou removido ao longo do tempo
  • Métricas de qualidade de código: Monitore a cobertura do código, a complexidade ciclomática e o índice de manutenibilidade
  • Métricas de pull request: Tempo de revisão, taxas de aprovação
  • Comentários de revisão de código: Frequência e tipos de feedback

Métricas de desempenho da equipe

  • Sprint Burndown: Acompanhe o progresso das metas de sprint monitorizando o trabalho restante em relação ao tempo
  • Velocidade da Equipa: Meça a quantidade média de trabalho concluído pela equipe em cada sprint
  • Tempo de espera: Monitorar o tempo necessário desde a criação de um item de trabalho até sua conclusão
  • Tempo de ciclo: Tempo desde o início do trabalho até à conclusão
  • Rendimento: Itens de trabalho concluídos por período de tempo

Painéis e análises personalizadas

Você pode exibir e analisar essas métricas usando painéis acessíveis diretamente no portal do Azure DevOps. Para obter informações adicionais , crie relatórios personalizados baseados em consultas no Azure DevOps Analytics.

Consultas analíticas comuns

Algumas das consultas, agrupamentos e visualizações mais usados incluem:

1. Análise de Tempo de Ciclo:

  • Consulta: Calcular o tempo de ciclo (tempo necessário para concluir um item de trabalho do início ao fim) para diferentes tipos de itens de trabalho
  • Agrupamento: Itens de trabalho por estado (Ativo, Resolvido, Fechado)
  • Cálculo: Diferença horária entre a data de início e a data de conclusão
  • Visualização: Tempo médio de ciclo por estado ao longo do tempo
  • Finalidade: Identificar gargalos e melhorar a eficiência do processo

2. Distribuição do Tempo de Entrega:

  • Consulta: Analise a distribuição do lead time (da criação à conclusão) para diferentes equipes ou áreas
  • Agrupamento: Itens de trabalho por área ou atribuição de equipa
  • Cálculo: Prazo de entrega para cada item de trabalho
  • Visualização: Histograma ou gráfico de caixa mostrando a distribuição
  • Finalidade: Identificar valores atípicos e otimizar o fluxo de trabalho em áreas específicas para reduzir o tempo de entrega

3. Fluxograma cumulativo (CFD):

  • Consulta: Acompanhar o número de itens de trabalho em cada estado (A Fazer, Em andamento, Concluído) ao longo do tempo
  • Agrupamento: Itens de trabalho por estado, ordenados por data de alteração de estado
  • Cálculo: Contagem cumulativa de itens de trabalho em cada estado em intervalos regulares (diário, semanal)
  • Visualização: CFD mostrando o fluxo do item de trabalho
  • Finalidade: Monitore o fluxo através das etapas do projeto e identifique congestionamentos ou atrasos

4. Análise de envelhecimento do item de trabalho:

  • Consulta: Analise o envelhecimento de itens de trabalho em backlog ou estágios específicos
  • Agrupamento: Itens de trabalho por idade (dias desde a criação), prioridade ou tipo
  • Cálculo: Idade média, percentagem em atraso, distribuição do envelhecimento entre categorias
  • Visualização: Tendências de envelhecimento ao longo do tempo
  • Finalidade: Priorize a preparação da lista de pendências e garanta a entrega oportuna de itens de alta prioridade

Usando o Azure Monitor e o Application Insights para acompanhamento de projetos

várias maneiras de integrar o acompanhamento de projetos com o Azure Monitor e o Application Insights. Uma das abordagens mais comumente usadas envolve a combinação de monitoramento contínuo, anotações de liberação e integração de itens de trabalho. Isso otimiza o ciclo de vida de desenvolvimento de software ao:

Benefícios:

  • Fornecer informações valiosas sobre estrangulamentos de desempenho
  • Facilitar a resolução proativa de problemas
  • Permitir uma tomada de decisão informada
  • Fornecimento bem-sucedido de software de alta qualidade

Integração de monitoramento contínuo

Com o monitoramento contínuo, os pipelines de liberação podem incorporar dados de monitoramento do Application Insights:

Portões de qualidade baseados em telemetria:

  • Um alerta do Application Insights pode bloquear ou reverter uma implantação fechada até que o alerta seja resolvido
  • Monitore métricas como taxa de erro, tempo de resposta, contagem de exceções durante a implantação
  • Evitar que implementações falhas cheguem à produção
  • Por outro lado, se as verificações de monitoramento forem aprovadas, as implantações poderão prosseguir automaticamente sem intervenção manual

Exemplo de cenário:

  1. Implantação de pipeline no ambiente de estágio
  2. O portão pós-implantação monitora o Application Insights por 15 minutos
  3. Se a taxa de >erro for de 1%, a implantação será bloqueada
  4. Se as métricas estiverem íntegras, a implantação prosseguirá automaticamente para a produção

Anotações de versão

As anotações designam eventos no pipeline de CI/CD:

Objetivo:

  • Capturar a correlação entre a entrega de versões de software e o desempenho resultante do aplicativo
  • Marcar eventos de implantação em gráficos do Application Insights
  • Veja exatamente quando ocorreram alterações de desempenho em relação às implantações
  • Identifique rapidamente se uma implantação causou uma regressão de desempenho

Execução:

  • Azure DevOps: Suporta geração automática de anotações por pipelines de build
  • Anotações personalizadas: Criar anotações arbitrárias usando o PowerShell
  • Metadados: Inclua o número da compilação, notas de versão, ambiente de implantação

Caso de uso: O gráfico de métricas de desempenho mostra o pico de tempo de resposta. A anotação de lançamento revela que o pico coincide com a implantação da versão v2.3.1, identificando imediatamente a versão problemática.

Integração de itens de trabalho

A funcionalidade de integração de itens de trabalho facilita a incorporação de dados contextuais do Application Insights ao gerar itens de trabalho no GitHub e no Azure DevOps:

Recursos que facilitam a captura de dados e a geração de itens de trabalho:

Campos avançados:

  • Populamento automático de cessionários, projetos ou etapas.
  • Definir prioridade com base na severidade do alerta
  • Etiquetar os componentes ou serviços afetados
  • Link para itens de trabalho relacionados

Várias configurações:

  • Suporte para qualquer número de repositórios ou tipos de item de trabalho
  • Diferentes configurações para diferentes tipos de alerta
  • Modelos de itens de tarefa específicos para o ambiente

Consultas KQL pré-construídas e personalizáveis:

  • Adicionar dados do Application Insights a itens de trabalho automaticamente
  • Incluir contagens de erros, usuários afetados, rastreamentos de pilha
  • Anexar entradas de log relevantes
  • Incorporar gráficos de desempenho

Modelos de pasta de trabalho personalizáveis:

  • Criar formatos de item de trabalho padronizados
  • Incluir listas de verificação de solução de problemas
  • Link para runbooks e documentação
  • Pré-preencher informações de diagnóstico

Exemplo de fluxo de trabalho:

  1. O Application Insights deteta uma taxa de exceção elevada
  2. Alerta de incêndios automaticamente
  3. Item de trabalho criado no Azure DevOps com:
    • Título: "Alta taxa de exceção no ProductService"
    • Descrição: resultados da consulta KQL mostrando as principais exceções
    • Cessionário: Engenheiro de plantão da equipe de serviço
    • Prioridade: Alta (com base no impacto do usuário)
    • Anexos: Últimos 100 rastreamentos de pilha de exceção
    • Links: Consultas relacionadas ao Application Insights, anotação de implantação
  4. Engenheiro recebe notificação e tem todas as informações de diagnóstico imediatamente