DORA Metrics
DORA (DevOps Research and Assessment) metrics are the 4 key measurements that define DevOps performance. They are the industry standard for measuring the health of a software delivery organization — used by Google, Amazon, and Netflix.
The 4 DORA Metrics
- 1Deployment Frequency (DF): How often do you deploy to production? 2. Lead Time for Changes (LT): How long from code commit to production? 3. Mean Time to Recover (MTTR): How long to restore service after an incident? 4. Change Failure Rate (CFR): What percentage of deployments cause a production failure? Elite performers (Google, Netflix) deploy multiple times per day with < 1% CFR and MTTR of minutes.
Choose based on team size, release cadence, and deployment model
DORA Performance Levels
- Elite (Google, Netflix): Deploy on-demand (multiple/day), LT < 1 hour, MTTR < 1 hour, CFR 0-15%
- High: Deploy daily/weekly, LT 1 day–1 week, MTTR < 1 day, CFR 16–30%
- Medium: Deploy weekly/monthly, LT 1 week–1 month, MTTR 1 day–1 week
- Low: Deploy monthly or less, LT 1–6 months, MTTR > 1 week
DORA Metrics Dashboard
// Track your DORA metrics — the standard way
interface DORAMetrics {
deploymentFrequency: string;
leadTimeForChanges: string;
meanTimeToRecover: string;
changeFailureRate: string;
}
const calculateDORA = (): DORAMetrics => {
// Deployment Frequency: how often per day/week?
const deploymentsThisWeek = 23;
const deploymentFrequency = `${(deploymentsThisWeek / 7).toFixed(1)} deploys/day`;
// Lead Time: time from merge to production
const leadTimes = [42, 38, 55, 30, 45]; // minutes per deploy
const avgLeadTime = leadTimes.reduce((a, b) => a + b) / leadTimes.length;
const leadTimeForChanges = `${avgLeadTime.toFixed(0)} minutes average`;
// Mean Time to Recover: average downtime per incident
const incidentDurations = [15, 8, 22, 5]; // minutes
const mttr = incidentDurations.reduce((a, b) => a + b) / incidentDurations.length;
const meanTimeToRecover = `${mttr.toFixed(0)} minutes average`;
// Change Failure Rate: % of deploys that caused incidents
const totalDeploys = 120;
const failedDeploys = 4;
const cfr = (failedDeploys / totalDeploys) * 100;
const changeFailureRate = `${cfr.toFixed(1)}% (ELITE)`;
return { deploymentFrequency, leadTimeForChanges, meanTimeToRecover, changeFailureRate };
};
const metrics = calculateDORA();
Object.entries(metrics).forEach(([k, v]) => console.log(`${k}: ${v}`));Try It Yourself: DORA Calculator
// CHALLENGE: Calculate your team's DORA metrics and classify performance level
// Fill in your team's data below and run to see your DevOps maturity!
// Step 1: Enter your team data
const teamData = {
deploymentsThisMonth: 45, // How many deploys to production?
avgLeadTimeMinutes: 120, // Avg time from commit to production (minutes)
incidentsThisMonth: 3, // Number of production incidents
avgRecoveryMinutes: 45, // Avg time to recover from incident (minutes)
failedDeploys: 2, // Deploys that caused production issues
};
// Step 2: Compute DORA metrics
const deployFreq = (teamData.deploymentsThisMonth / 30).toFixed(1);
const leadTime = teamData.avgLeadTimeMinutes;
const mttr = teamData.avgRecoveryMinutes;
const cfr = ((teamData.failedDeploys / teamData.deploymentsThisMonth) * 100).toFixed(1);
// Step 3: Classify performance level
function classifyDORA(freq, lt, recovery, failRate) {
if (freq >= 1 && lt <= 60 && recovery <= 60 && failRate <= 15) return "🏆 ELITE";
if (freq >= 0.14 && lt <= 1440 && recovery <= 1440 && failRate <= 30) return "✅ HIGH";
if (freq >= 0.03 && lt <= 10080) return "⚠️ MEDIUM";
return "❌ LOW";
}
const level = classifyDORA(
parseFloat(deployFreq), leadTime, mttr, parseFloat(cfr)
);
console.log("=== YOUR DORA METRICS ===");
console.log("Deploy Frequency:", deployFreq, "deploys/day");
console.log("Lead Time:", leadTime, "minutes");
console.log("MTTR:", mttr, "minutes");
console.log("Change Failure Rate:", cfr + "%");
console.log("\nPerformance Level:", level);
console.log("\nTry changing the team data values to see how it affects your level!");Quick Quiz
Tip
Tip
Practice DORA Metrics in small, isolated examples before integrating into larger projects. Breaking concepts into small experiments builds genuine understanding faster than reading alone.
Practice Task
Note
Practice Task — (1) Write a working example of DORA Metrics from scratch without looking at notes. (2) Modify it to handle an edge case (empty input, null value, or error state). (3) Share your solution in the Priygop community for feedback.
Common Mistake
Warning
A common mistake with DORA Metrics is skipping edge case testing — empty inputs, null values, and unexpected data types. Always validate boundary conditions to write robust, production-ready devops code.
Key Takeaways
- DORA (DevOps Research and Assessment) metrics are the 4 key measurements that define DevOps performance.
- Elite (Google, Netflix): Deploy on-demand (multiple/day), LT < 1 hour, MTTR < 1 hour, CFR 0-15%
- High: Deploy daily/weekly, LT 1 day–1 week, MTTR < 1 day, CFR 16–30%
- Medium: Deploy weekly/monthly, LT 1 week–1 month, MTTR 1 day–1 week