Métricas DevOps (DORA)
Esta aula apresenta as quatro métricas DORA (Deployment Frequency, Lead Time, Change Failure Rate e MTTR) que são fundamentais para medir a eficácia de práticas DevOps. Cada métrica é explicada com exemplos práticos e sua importância para a melhoria contínua dos processos de entrega de software.
As métricas DORA (DevOps Research and Assessment) são um conjunto de quatro indicadores-chave de desempenho (KPIs) que ajudam equipes de desenvolvimento e operações a medir a eficácia de suas práticas DevOps. Elas foram definidas pela equipe DORA do Google Cloud e são amplamente utilizadas para avaliar a maturidade e a performance de entrega de software. Nesta aula, vamos explorar cada uma dessas métricas, entender como calculá-las e interpretá-las, e ver exemplos práticos de sua aplicação.
Deployment Frequency
Deployment Frequency (Frequência de Implantação) mede quantas vezes uma equipe realiza implantações de código em produção ou em ambientes de homologação. Uma alta frequência indica que a equipe está entregando mudanças rapidamente, o que é um sinal de maturidade DevOps. A métrica pode ser calculada como o número de implantações bem-sucedidas em um período (ex.: por dia, por semana).
Exemplo:
- Equipe A: 10 implantações por semana (alta frequência)
- Equipe B: 1 implantação por mês (baixa frequência)
Código fictício para coletar dados:
# Simulação de contagem de deploys
from datetime import datetime, timedelta
def deployment_frequency(deploy_logs, period):
count = 0
start = datetime.now() - period
for log in deploy_logs:
if log['timestamp'] >= start:
count += 1
return count
# Uso
weekly_deploys = deployment_frequency(logs, timedelta(days=7))
Lead Time
Lead Time (Tempo de Entrega) mede o tempo que leva desde o momento em que um commit é feito até que ele seja implantado em produção. É um indicador da velocidade do pipeline de entrega. Um lead time curto significa que as mudanças são testadas e implantadas rapidamente. O cálculo pode ser feito pela diferença entre o timestamp do commit e o timestamp da implantação bem-sucedida.
Exemplo:
- Commit: 2023-10-01 10:00
- Deploy: 2023-10-01 14:00
- Lead time: 4 horas
Código fictício:
def lead_time(commit_time, deploy_time):
return deploy_time - commit_time
# Agregação: mediana dos lead times
lead_times = [lead_time(c, d) for c, d in zip(commits, deploys)]
median_lead_time = sorted(lead_times)[len(lead_times)//2]
Change Failure Rate
Change Failure Rate (Taxa de Falha de Mudanças) mede a porcentagem de implantações que causam uma falha em produção, como um incidente ou degradação do serviço. Uma baixa taxa de falha indica que as mudanças são seguras e bem testadas. A métrica é calculada dividindo o número de implantações que resultaram em falha pelo número total de implantações em um período.
Exemplo:
- Total de deploys: 100
- Deploys que causaram incidentes: 5
- Change Failure Rate: 5%
Código fictício:
def change_failure_rate(total_deploys, failed_deploys):
return (failed_deploys / total_deploys) * 100
# Uso
cfr = change_failure_rate(100, 5) # 5.0%
MTTR
MTTR (Mean Time to Recovery) mede o tempo médio que uma equipe leva para se recuperar de uma falha em produção. É um indicador da capacidade de resposta a incidentes. Um MTTR baixo significa que a equipe consegue restaurar o serviço rapidamente. O cálculo é feito pela média do tempo entre a detecção do incidente e a resolução completa.
Exemplo:
- Incidente 1: 30 minutos
- Incidente 2: 45 minutos
- Incidente 3: 25 minutos
- MTTR: (30+45+25)/3 = 33.3 minutos
Código fictício:
def mttr(recovery_times):
return sum(recovery_times) / len(recovery_times)
# Uso
mttr_value = mttr([30, 45, 25]) # 33.33
Referências
Exercícios
-
Explique por que a Deployment Frequency é uma métrica importante para equipes DevOps.
A Deployment Frequency mede a frequência com que uma equipe implanta código em produção. Uma alta frequência indica que a equipe está entregando valor rapidamente, reduzindo o tempo entre a escrita do código e sua disponibilidade para os usuários. Isso também permite feedback mais rápido e iterações mais ágeis, sendo um sinal de maturidade DevOps.
-
Calcule o lead time para um commit feito em 2023-10-01 09:00 e implantado em 2023-10-01 13:30.
Lead time = 13:30 - 09:00 = 4 horas e 30 minutos.
-
Se uma equipe realizou 50 implantações em um mês e 3 delas causaram incidentes, qual é a Change Failure Rate?
Change Failure Rate = (3 / 50) * 100 = 6%.
-
Dados os tempos de recuperação de 3 incidentes: 20 min, 35 min e 45 min. Calcule o MTTR.
MTTR = (20 + 35 + 45) / 3 = 100 / 3 ≈ 33,33 minutos.
-
Descreva como a automação de testes pode impactar a Change Failure Rate e o MTTR.
A automação de testes ajuda a detectar problemas antes da implantação, reduzindo a Change Failure Rate ao evitar que mudanças defeituosas cheguem à produção. Além disso, testes automatizados podem acelerar a identificação de causas de falhas, diminuindo o MTTR, já que a equipe pode rapidamente reverter ou corrigir o problema com base em evidências dos testes.