Projetar e implementar métricas e consultas
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
Há 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:
- Implantação de pipeline no ambiente de estágio
- O portão pós-implantação monitora o Application Insights por 15 minutos
- Se a taxa de >erro for de 1%, a implantação será bloqueada
- 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:
- O Application Insights deteta uma taxa de exceção elevada
- Alerta de incêndios automaticamente
- 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
- Engenheiro recebe notificação e tem todas as informações de diagnóstico imediatamente