- Published on
DORA metrics com Apache DevLake
- Authors
- Name
- Natália Granato
- @granatowp
O que são Métricas DORA?
O DevOps Research and Assessment (DORA), ou simplesmente Métricas DORA, foi criado há seis anos por uma equipe de pesquisadores que visavam entender o desempenho de equipes de desenvolvimento de software. O DORA se tornou um framework padrão focado na estabilidade e velocidade dos processos de desenvolvimento.
O DORA é utilizado para tomar decisões estratégicas, para justificar investimentos em melhorias de processos ou para comparar o desempenho de uma equipe com os padrões do setor. Existem quatro métricas DORA para medir aspectos críticos do DevOps:
Dentro da velocidade, existem duas métricas principais:
Frequência de deploy: Número de deployments bem-sucedidos em produção. Com que rapidez sua equipe está entregando aos usuários? A frequência de implantação é o número médio de implantações de código concluídas diariamente em qualquer ambiente. Este é um indicador da eficiência geral do DevOps, pois mede a velocidade da equipe de desenvolvimento, suas capacidades e o nível de automação.
Tempo de espera para mudanças (Lead time for changes): Quanto tempo leva desde o commit até o código estar rodando em produção? Essa métrica demonstra com qual rapidez uma equipe pode responder aos requisitos de usuários. Em organizações que não adotam a cultura DevOps, onde é mais comum mensurar as famosas GMUDs, medir o tempo de espera para mudanças pode ajudar a corrigir fluxos de trabalho e a maneira como uma implantação é feita.
A estabilidade é composta por duas métricas principais:
Taxa de falha de mudança (Change Failure Rate): Com que frequência um deploy causa falhas em produção? Para responder a essa pergunta, é preciso obter a porcentagem dessas falhas. Essa métrica é desafiadora, mas importante, pois frequentemente uma nova release ou um deploy para atender a um requisito pode inserir um bug em produção. A redução de tarefas em andamento e o aumento da automação podem ajudar na redução dessa métrica.
Tempo Médio para Restauração do Serviço (MTTR): Quanto tempo leva para uma equipe se recuperar adequadamente após ocorrer uma falha e ela ser identificada? Seja para corrigir uma ameaça de segurança ou um bug, as equipes de DevOps devem ser capazes de responder rapidamente com:
- Correções de bugs
- Atualizações
- Correções de vulnerabilidades
Você pode experimentar mensurar o desempenho de entrega de software da sua equipe em alguns minutos utilizando o Take the DORA Quick Check. A comunidade DORA fornece aprendizado, discussões e materiais sobre o tema, acessíveis em https://dora.community/.
Implementando DORA metrics com Apache DevLake
O Apache DevLake é uma plataforma de dados que ingere, analisa e visualiza dados de ferramentas DevOps, entre elas o Git. Se a sua equipe de DevOps é adepta da integração contínua, provavelmente o Git é utilizado como a principal fonte da verdade.
O que pode ser realizado com o DevLake?
Integração de dados unificada: Reúna dados de DevOps de todo o ciclo de vida de desenvolvimento de software.
Insights prontos para uso: Acesso a métricas de engenharia por meio de dashboards intuitivos no Grafana.
Customizável: É possível estender o DevLake, adicionando diferentes fontes de dados, métricas e dashboards conforme as necessidades.
Implementação de padrões: Use o DevLake para aplicar métricas DORA e para otimizar o desempenho de DevOps.
Crie uma cultura próspera: O DevLake é centrado em práticas saudáveis que podem ajudar as equipes a adotar e construir uma cultura prática orientada por dados.
O Apache DevLake pode ser implementado usando Docker Compose
ou Helm
. Agora vamos a uma demonstração:
Instalando via Docker Compose
Faça o download do arquivo
docker-compose.yml
eenv.example
da release mais recente e estável, nesse caso utilizaremos a v1.0.1, acessível para download aqui.Renomeie o arquivo
env.example
para.env
. Este arquivo contém as variáveis de ambiente que o servidor Devlake usará.Gere uma chave de criptografia segura usando um método como o OpenSSL. Eexecute o seguinte comando para gerar uma string de 128 caracteres composta por letras maiúsculas:
openssl rand -base64 2000 | tr -dc 'A-Z' | fold -w 128 | head -n 1
Copie a string gerada. Defina o valor da variável de ambiente ENCRYPTION_SECRET no arquivo .env
.
Agora execute
docker compose up -d
para iniciar o servidor. A saída será algo semelhante a:[+] Running 4/4 ✔ Container devlake-mysql-1 Running 0.0s ✔ Container devlake-grafana-1 Running 0.0s ✔ Container devlake-devlake-1 Running 0.0s ✔ Container devlake-config-ui-1 Started 0.4s
Você pode acessar o DevLake em http://localhost:4000/
e o Grafana em http://localhost:3002/
, utilizando admin
como usuário e senha.
Realizando integrações e coletando dados
Na página inicial, clique em
Connections
. Aqui podemos fazer integrações comGithub
,Gitlab
,Jenkins
e utilizarWebhook
.Utilizarei o Github como conexão em
Create a new Connection
. O nome da minha conexão seránataliagranato.github.io
e será realizada com oPersonal Access Token
.Em projetos, clique em
Create New Project
e informe um nome.Com a conexão e o projeto criados, precisamos adicionar nosso escopo de dados à conexão e associá-lo a um projeto existente. É possível obter métricas de uma organização inteira, um perfil ou um único repositório.
Em seu projeto, você verá a opção Add a Connection
. Selecione a que você criou anteriormente e clique em next
. Selecione seu Data Scope
e clique em save
. Agora inicie a coleta de dados em Collect Data
. Será disparada uma pipeline para obter seus dados, que podem ser visualizados no menu Advanced.
- O Grafana do DORA possui alguns dashboards que contribuem com a visualização dos dados, por exemplo:

Aqui eu tenho dados de quantos pull requests foram mesclados no repositório, quantos foram mesclados ao longo do mês, quais não foram vinculados, tempo médio de mesclagem e etc.

Nesse outro exemplo, temos o tempo médio de um ciclo de pull request, tempo médio de codificação, de revisão e etc.