Stage 7 · Master
Observability & Developer Experience Metrics
DORA & SPACE Metrics for Platform Teams
Measure lead time, deployment frequency, change failure rate, MTTR. SPACE: Satisfaction, Performance, Activity, Communication, Efficiency.
DORA Metrics
DORA (DevOps Research and Assessment) identified four key metrics that distinguish high-performing teams. Platform teams should measure these for their platform AND enable stream-aligned teams to measure them.
| Metric | Definition | Elite | High | Medium | Low |
|---|---|---|---|---|---|
| Lead Time for Changes | Time from code commit to production deploy | <1 hour | <1 day | <1 week | >1 month |
| Deployment Frequency | How often code is deployed to production | On-demand | Daily | Weekly | Monthly |
| Change Failure Rate | % of deployments causing failure in production | 0-15% | 16-30% | 16-30% | >30% |
| MTTR | Time to restore service after failure | <1 hour | <1 day | <1 week | >1 week |
Platform doesn't just measure DORA — it enables it. Golden paths reduce lead time. Self-service deploy increases frequency. Policy-as-code reduces change failure. Observability defaults reduce MTTR. Platform team's success = stream teams' DORA improvement.
SPACE Framework
SPACE (Nicole Forsgren et al.) adds dimensions DORA misses: Satisfaction, Performance, Activity, Communication, Efficiency. More holistic view of developer productivity.
| Dimension | Definition | Platform Metrics | Stream Team Metrics |
|---|---|---|---|
| Satisfaction | Developer happiness, fulfillment | Platform NPS, CLI satisfaction, docs quality | Team morale, burnout risk |
| Performance | Outcome quality | Scaffold success rate, deploy success rate | DORA metrics, bug rate, SLO adherence |
| Activity | Volume of work | Scaffold count, API calls, preview envs created | Commits, PRs, deploys, incidents |
| Communication | Collaboration quality | PR review time, RFC process, office hours attendance | PR review time, cross-team syncs |
| Efficiency | Flow, waste reduction | CI queue time, scaffold-to-deploy, preview env TTL | Lead time, wait time, context switches |
DORA for Platform Teams
Platform team is a stream-aligned team for the platform product. Measure DORA for platform changes: platform API deployments, template updates, CLI releases.
| DORA Metric | Platform Team Application | Target |
|---|---|---|
| Lead Time | Time from platform PR merge to production (API, CLI, template) | <1 day |
| Deployment Frequency | How often platform ships (API, CLI, templates, policies) | Daily |
| Change Failure Rate | % of platform changes causing developer-visible incidents | <5% |
| MTTR | Time to fix platform incident (API down, scaffold broken, preview envs failing) | <30 min |
SPACE for Platform Teams
| Dimension | Platform Team Metric | Measurement |
|---|---|---|
| Satisfaction | Platform NPS (quarterly) | Delighted/Typeform survey, 1-10 scale |
| Satisfaction | CLI/portal satisfaction (in-app) | In-app 'Was this helpful?' + NPS |
| Satisfaction | Documentation quality | Doc page ratings, search success rate |
| Performance | Scaffold success rate | Telemetry: success / total attempts |
| Performance | Deploy success rate (platform-managed) | ArgoCD sync success / total syncs |
| Performance | Preview env success rate | Preview env ready / PR opened |
| Activity | Scaffold count / week | Platform API metrics |
| Activity | API calls / day | API gateway metrics |
| Activity | Preview environments created | Controller metrics |
| Communication | RFC review time | GitHub: time from RFC open to approved |
| Communication | Office hours attendance | Calendar + attendance tracking |
| Communication | Slack response time | Slack analytics: time to first response in #platform-help |
| Efficiency | Scaffold-to-deploy time | Telemetry: scaffold timestamp → first prod deploy |
| Efficiency | CI queue time | GitHub Actions / GitLab CI queue metrics |
| Efficiency | Preview env TTL compliance | % of preview envs cleaned up within TTL |
Measurement Implementation
# OpenTelemetry Collector config for platform metrics
receivers:
otlp:
protocols:
grpc:
http:
prometheus:
config:
scrape_configs:
- job_name: 'platform-api'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: keep
regex: platform-api
- job_name: 'argocd'
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: argocd-metrics
- job_name: 'github-actions'
# Custom receiver for GitHub Actions metrics
github_actions:
org: myorg
token: ${GITHUB_TOKEN}
processors:
batch:
memory_limiter:
limit_mib: 512
resource:
attributes:
- key: platform.team
value: "platform"
action: upsert
exporters:
prometheusremotewrite:
endpoint: https://prometheus.platform.example.com/api/v1/write
logging:
loglevel: debug
service:
pipelines:
metrics:
receivers: [otlp, prometheus, github_actions]
processors: [batch, memory_limiter, resource]
exporters: [prometheusremotewrite, logging]
OTel collector collects platform metrics from API, ArgoCD, GitHub Actions, CLI telemetry. Sends to Prometheus/Grafana.
Dashboards & Reporting
- Executive Dashboard: DORA trends, SPACE summary, platform NPS, adoption rate, cost per developer
- Platform Team Dashboard: Real-time SLIs, error budget burn, API latency, scaffold success, CI queue
- Stream Team Dashboard: Their DORA metrics, golden path adoption, preview env usage, platform API latency
- Developer Portal: Personal metrics (my lead time, my deploy frequency, my preview envs), team aggregates
- Quarterly Report: Auto-generated PDF: DORA trends, SPACE scores, NPS, adoption, cost, incidents, roadmap progress
{
"title": "Platform DORA Metrics",
"panels": [
{
"title": "Lead Time for Changes (p50, p95)",
"type": "timeseries",
"targets": [
{ "expr": "histogram_quantile(0.50, rate(platform_deploy_lead_time_seconds_bucket[5m]))", "legendFormat": "p50" },
{ "expr": "histogram_quantile(0.95, rate(platform_deploy_lead_time_seconds_bucket[5m]))", "legendFormat": "p95" }
]
},
{
"title": "Deployment Frequency (per day)",
"type": "stat",
"targets": [
{ "expr": "sum(rate(platform_deployments_total[1d]))", "legendFormat": "deploys/day" }
]
},
{
"title": "Change Failure Rate",
"type": "gauge",
"targets": [
{ "expr": "platform_deploy_failed_total / platform_deploy_total", "legendFormat": "failure rate" }
]
},
{
"title": "MTTR (Mean Time To Restore)",
"type": "timeseries",
"targets": [
{ "expr": "histogram_quantile(0.50, rate(platform_incident_duration_seconds_bucket[5m]))", "legendFormat": "MTTR (median)" }
]
}
]
}
Grafana dashboard panels for platform DORA metrics. Uses Prometheus histograms for lead time, MTTR.
Mark this lesson complete to store local progress and unlock a cleaner resume path the next time you visit.