前回のブログでは、GoogleのDevOps Research and Assessment(DORA)チームが提唱したDORAメトリクスについてわかりやすく解説し、ソフトウェアデリバリーのパフォーマンスを向上させるために、なぜ重要なのかをご紹介しました。
今回の記事では、New Relicスコアカードを活用してDORAメトリクスを自動的に算出・追跡する方法や、エンジニアリングや運用現場の生データを継続的な改善につながる洞察へと変えるポイントについて解説します。スコアカードのご利用ガイドはこちらからご覧いただけます。
DORAメトリクスをサービスの担当やチーム別にグループ化
DORAメトリクスのおさらい
DORAメトリクスは、DevOpsのパフォーマンスを次の4つの側面から評価します。
- デプロイの頻度 – コードを本番環境に導入する頻度
- 変更のリードタイム – 修正したコードが本番環境で稼働するまでにかかる時間
- 変更失敗率 – インシデントの原因となったり、修正対応が必要になったデプロイの割合
- 平均復旧時間(MTTR) – インシデントの発生後、サービスを復旧するまでにかかる時間
DORAメトリクスにNew Relicスコアカードを使用
New Relicスコアカードを使えば、体系的な手順で、既存の開発・運用データからDORAメトリクスを簡単に算出できます。
使い方は次のとおり簡単です。
- All Capabilities → Scorecardsに移動します
- Create Scorecard → Use a Templateをクリックします
- DORAメトリクスを選択し、作成フローに従います
New Relicに必要なデータがすでに揃っていれば、テンプレートを使用してワンクリックですぐに使えるDORAスコアカードを作成できます。
テンプレートを使用してスコアカードを作成
データの前提条件
DORAメトリクスの精度は、元となるデータの質に左右されます。New Relicでは、データの取得には以下の製品や連携機能を利用するのが最も簡単です。
- Change Tracking(変更追跡機能) → デプロイデータ
- GitHub連携機能 → プルリクエストのライフサイクルデータ
- NR問題とインシデント管理 → インシデントのライフサイクルデータ
スコアカードのルールごとに、NRQLクエリや必要なデータの集め方もあわせてご説明します。
1. デプロイの頻度 - NRQLクエリ
データソース - デプロイ頻度のルールには、デプロイに関するデータが必要です。このデータは、New RelicのChange Tracking(変更追跡機能)を使用して取得できます。Change TrackingをCI/CDパイプラインに統合して、デプロイイベントをNerdGraph API経由でNew Relicに送信してください。
FROM Entity
LEFT JOIN (
SELECT uniqueCount(deploymentId) AS deployment_count
FROM Deployment
WHERE entity.type = 'APPLICATION' AND entity.domain = 'APM'
FACET entity.guid AS id
SINCE 7 days ago
LIMIT MAX
) ON id
SELECT IF(latest(deployment_count) >= 1, 1, 0) AS score
WHERE type = 'APM-APPLICATION'
FACET id AS entityGuid, tags.nr.team AS 'team'
SINCE last hour
この操作によって、ルールで使用されるデプロイデータが含まれるデプロイイベントが生成されます。イベントは以下のコマンドで取得できます。
FROM Deployment SELECT * SINCE last week
💡 プロのポイント:エンティティ(サービス)をデプロイした際、GUIDとコミットSHAがNew Relic Change Tracking APIに渡るよう、CI/CDパイプラインを設定しておきましょう。このGUIDによって、デプロイがNew Relic上の正しいサービスに紐付けられ、デプロイ頻度の算出が可能になります。コミットSHAは、変更のリードタイムの算出に不可欠です。具体例はこちらをご覧ください。
2. 変更のリードタイム - NRQLクエリ
データソース - 変更のリードタイムのルールには、次の2つのデータが必要です。
- デプロイデータ – Change Tracking(変更追跡機能)から取得します(前述の通り)。
プルリクエストのライフサイクルデータ – リポジトリ、チーム、プルリクエストデータを同期するNew Relic GitHub連携機能から取得します。
FROM Deployment
LEFT JOIN (
FROM GitHubPullRequest
SELECT latest(codingStart) AS latestMergedCodingStart
WHERE merged = true
AND action = 'closed'
FACET commitSha AS commit
) ON commit
SELECT IF((average(timestamp - latestMergedCodingStart) / 1000 / 60 / 60 / 24) < 1, 1, 0) AS score
SINCE 1 month ago
FACET entity.guid AS entityGuid
この操作でGitHubPullRequestイベントが組織のストレージアカウントに生成されます。以下のコマンドでクエリを実行すると、連携設定後に新たに作成されたプルリクエストを抽出できます。
FROM GitHubPullRequest SELECT * SINCE last week
💡 プロのポイント:プルリクエストがマージされると、commitSha属性を持つ新しいイベントがGitHubPullRequestイベントとして追加されます。このcommitShaを使ってデプロイイベントと関連付けることで、最初のコミットからデプロイまでにかかった時間を計算することができます。
3. 平均復旧時間(MTTR)- NRQLクエリ
データソース - MTTRルールには、インシデントの開始時刻と復旧時刻など、インシデントのライフサイクルデータが必要です。New Relic Issues & Incident Managementを使用して、インシデントを記録・追跡します。インシデントが発生すると、システムはNrAiIncidentイベントを記録します。記録されたイベントをもとに、インシデント対応にかかった時間の平均を計算し、平均的な復旧速度を割り出します。
FROM Entity
JOIN (
SELECT average(durationSeconds) AS avgDuration
FROM NrAiIncident
WHERE durationSeconds IS NOT NULL
FACET entity.guid
SINCE 30 days ago
LIMIT MAX
) ON id = entity.guid
SELECT IF(latest(avgDuration) < 86400, 1, 0) AS score
FACET id AS entityGuid, tags.nr.team AS 'team'
SINCE last hour
4. 変更失敗率 - NRQLクエリ
データソース - 変更失敗率のルールでは、修正対応やロールバックが発生したデプロイの割合を測定します。つまり、ご利用の環境内にインシデントや問題を引き起こしたデプロイがあることを意味します。
Change Tracking(変更追跡機能)によって、すでにデプロイ情報は取得できているはずです。このルールを使うには、デプロイAPIを呼び出す際に、カスタム属性としてHotfixOrRollback(または任意のカスタム属性)を送信する必要があります。このフラグがあることで、通常のデプロイと、本番環境でトラブルが起きたデプロイとを分けて集計できます。
💡 プロのポイント:CI/CDでこのフラグを自動化するには、ロールバック/ホットフィックス用のブランチにタグ付けをするか、デプロイジョブ内で変数を設定します。また、他の属性を使用する場合は、ルールのクエリも必ずその属性に対応した内容へ変更しましょう。
FROM Deployment
SELECT percentage(count(*), WHERE isHotfixOrRollback = false)
FACET entity.guid
SINCE 7 days ago
チーム別のDORA
New Relic Teamsを利用すれば、DORAメトリクスをサービスの担当チーム別に簡単にグループ化できます。
DORAスコアカードを開き、「Group by」 → 「Team」を選択すると、各チームごとのデプロイ、変更、復旧のパフォーマンスをすぐに確認できます。
DORAメトリクスを自動的に計算・追跡
基準値とデータソースのカスタマイズ
提供されているクエリはGoogleの高パフォーマンス基準に基づいていますが、必要に応じて自由に編集できます。スコアカードで任意のルールを開いて「Edit Rule」をクリックすれば、目標に合わせてNRQLの基準値を調整できます。さらに、カスタムイベントを使用してNew Relicの連携機能や製品以外からデータを送信している場合は、クエリを変更することで、そのデータを含むイベントを対象にできます。
基準値とデータソースをカスタマイズ
次のステップ
適切な連携機能を使えば、スプレッドシートを使ったり手作業でレポートを作成したりすることなく、DORAメトリクスをNew Relicのスコアカードで自動的に算出できます。さらに、DORAメトリクス以外にもさまざまな可能性があります。スコアカードには、オブザーバビリティの成熟度や本番環境への準備状況、セキュリティなどを評価できる10種類以上の追加テンプレートが用意されており、データが連携されていればワンクリックですぐに利用できます。今すぐスコアカードを利用
New RelicスコアカードはAdvanced Computeアドオンを通じてご利用いただけます。このアドオンを追加することで、利用量に応じて新しいプラットフォーム機能をご利用いただけます。詳細については、New Relicのアカウント担当者までお問い合わせください。
New Relicアカウントをまだお持ちでない場合は、無料のアカウントに今すぐサインアップしてください。無料アカウントでは、月ごとに100GBまでのデータ取り込みと、1人分のフルユーザー機能が利用できます。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。