DORA 指標 (Deployment Frequency / Lead Time / MTTR / Change Failure Rate)

DORA (DevOps Research and Assessment) の 4 指標は、開発組織のデリバリ性能を測定する 業界標準の KPI セット。Parky では 毎週月曜 09:00 JST に過去 7 日分を GitHub API から自動収集し、#p2-deploys へ Discord embed で通知している。

実装: scripts/dora/collect-metrics.mjs (Node.js / 依存ゼロ) + .github/workflows/dora-weekly.yml (cron + workflow_dispatch)。 手動実行で since / until を渡すと月次・四半期にも流用可能。

4 指標の定義 (Parky 実装)

指標 計算式 データソース
Deployment Frequency deploy-api-prod の successful run 数 ÷ 期間日数 GitHub Actions workflow_runs
Lead Time for Changes PR created_at → 該当 prod deploy success までの中央値 (h) Pull Requests + workflow_runs (head_sha マッチ)
MTTR incident label 付き Issue の open → close 中央値 (h) Issues (labels=incident)
Change Failure Rate (rollback / hotfix 扱いの prod deploy) ÷ (prod success deploy 総数) workflow_runs (キーワード判定 + 30 分以内再 deploy)

レベル閾値 (DORA "State of DevOps" 標準)

指標 Elite High Medium Low
Deployment Frequency 1 日 1 回以上 1 週 1 回以上 1 ヶ月 1 回以上 それ以下
Lead Time for Changes < 1 day < 1 week < 1 month それ以上
MTTR < 1 hour < 1 day < 1 week それ以上
Change Failure Rate < 15% 15-30% 30-45% > 45%

Parky 現状フェーズの解釈

Parky は 2026-04 から 1 ヶ月 / 1 人開発、リリース前 (web/admin/owner/marketing は本番投入済、Mobile Flutter は移植中) のフェーズにある。DORA 指標を 絶対水準 で Elite/High/Medium/Low と判断するのではなく、以下の補正を加えて読む:

  • Deployment Frequency: dev ブランチ直接 commit 運用 (feedback_parky_dev_direct) のため毎日 1+ 回が常態。 Elite 基準を満たすのが当然で、逆に 1/日を割ったら何かが詰まっているサイン。
  • Lead Time for Changes: PR レビュー文化が無く dev への直 push なのでサンプル数が少ない。本番 (main) リリース前は n=0 〜 数件 が普通。Flutter リリース後 (2026-06〜) に再評価。
  • MTTR: 現状 incident label 運用が未確立placeholder 表示が出るのは 既知の挙動。incident label を付けた Issue 運用を始める or Sentry incident 連携が入ったタイミングで 本指標が意味を持つ。
  • Change Failure Rate: "rollback" / "revert" キーワードまたは 30 分以内再 deploy をヒューリスティクスに使用。 Sentry の error spike 連動など、より定量的な判定は Phase 2 (ARR 1 億時) で精緻化する想定。

運用

週次レポート

  • 毎週月曜 09:00 JST、自動で #p2-deploys に投稿
  • JSON 成果物は .work/output/parky/dora/{YYYY-MM-DD}.json に Actions artifact として 90 日保管

手動実行

# Actions UI から (since / until 指定可)
gh workflow run dora-weekly.yml -f since=2026-04-01 -f until=2026-04-30

# ローカル CLI から (GITHUB_TOKEN 必要)
GITHUB_TOKEN=ghp_xxx GITHUB_REPOSITORY=high-field/parky \
  node scripts/dora/collect-metrics.mjs --since 2026-04-24 --until 2026-05-01

# Discord にも飛ばす場合
DISCORD_WEBHOOK_OPS=https://... GITHUB_TOKEN=... \
  node scripts/dora/collect-metrics.mjs --since ... --until ... --out discord

追加が必要な GitHub Secret

  • DISCORD_WEBHOOK_OPS#p2-deploys webhook (synthetic-healthcheck と同じものを再利用)
  • GITHUB_TOKEN — Actions が自動付与 (read-only で OK)
← Operations index へ戻る