Skip to content

DevOpsメトリクスの分析

WARNING

本機能は、フリートライアル環境ではご利用いただけません。フリートライアル環境では、特定の機能が制限されており、全ての機能をご利用いただけない場合がございます。

DevOpsメトリクスとは

DevOpsメトリクスとは、DORAが提案したDevOpsのパフォーマンスを評価するための4つのメトリクスを指しています。

  • 開発、デプロイ、および運用の品質を図るための指標として広く用いられています。
  • 4つのメトリクスに加え、サービス固有のAvailability (SLO/SLA) をモニタリングする形が望ましいとされています。
DevOpsメトリクス

(参考) "Accelerate: State of DevOps 2019", The DevOps Research and Assessment (DORA)

Qmonus Value Streamが提供する機能

Qmonus Value Streamでは、前述の4つのKey Performance Metricsのうち、以下の2つのメトリクスを収集・分析できる機能を提供しています。

  • Deployment Frequency: 商用環境へ正常にリリースされた頻度
  • Lead Time of Change: 変更が商用環境へ適用されるまでにかかる時間

Analysis機能について

Analysis画面では、Qmonus Value Streamが収集するDevOpsメトリクスを可視化し、リリース頻度やリードタイムを分析する機能を提供しています。

Analysis機能

Deployment Frequency

指定期間内におけるアプリケーションごとの商用環境へのリリース頻度を表示します。

Deployment Frequency
  • Application : アプリケーションの名前
  • Release Span (avg/max) : リリース間隔(平均/最大)
    • 平均:指定期間 / リリース回数
      • 短いほどアジリティが高いと判断できます
    • 最大:指定期間の内でのリリース間隔の最大値
      • ビッグバン + 細かいバグリリースのようなリリースの偏りを可視化
      • 指定期間内のリリースが1回の場合は、平均リリース間隔 = 最大リリース間隔
      • 指定期間内にリリースがなければ、指定期間 = 最大リリース間隔
  • Release Count : リリース回数
    • 多いほどアジリティが高いと判断できます

Lead Time of Change

指定期間内で、試験環境でビルド処理を開始した時点から商用環境へのソフトウェアリリースが完了するまでの期間を表示します。

  • 始点:コードをmaster/mainブランチにマージして、試験環境でビルド処理したタイミング
  • 終点:商用環境へのソフトウェアリリースが完了したタイミング
ビルド開始リリース完了期間
  • Lead Time (Average / Median) : リリース期間(平均/中央値)
  • Build Count : 指定期間内で試験環境にデプロイした回数

Lead Timeの計算条件

コードをmaster/mainブランチにマージして、試験環境でビルドした時刻(始点)と商用環境へのソフトウェアリリースが完了した時刻(終点)の差分をLead Timeと定義しています。 始点と終点は下記のように定義しています。

  • 始点

    • 試験環境を対象としたSuccess StatusのBuild処理(コンテナイメージビルドなど)用Pipelineが実行開始した時刻
  • 終点

    • 始点以降に初めて実行された商用環境を対象とした全てのPipelineがSuccess StatusであるAssemblyLineのRelease用(Blue/Greenデプロイメントにおける旧系から新系へのトラフィック切り替えなど)Pipelineの終了時刻
    • Release用Pipelineが存在せずにDeploy用Pipelineのみが存在する場合はDeploy用Pipelineの終了時刻を代わりに使用する
    • 複数のAssemblyLineへのpromotionがある場合は一番先に実行したAssemblyLineのRelease用Pipelineの終了時刻を終点として扱う

Lead Timeイメージ図

Lead Timeイメージ図

Release Count

指定期間における対象アプリケーションの商用環境へのリリース回数を月毎に移動平均とともに描画しています。

Release Count

Release Span (Average)

指定期間における対象アプリケーションの商用環境へのリリース間隔を月毎に移動平均とともに描画しています。

Release Span (Average)

Median Lead Time (Average)

指定期間における対象アプリケーションのLead Timeを月毎に移動平均とともに描画しています。

Median Lead Time (Average)

DevOpsメトリクス収集のための設定方法

Analysis機能をご利用いただくには、Qmonus Value StreamがユーザのアプリケーションのDevOpsメトリクスを収集できるようにするための設定が必要となります。 具体的には、リリース頻度・間隔やLead Timeなどを計算するために、試験環境にてBuild処理するPipelineや商用環境でのRelease処理するPipelineだと判別できるようなAnnotationをPipeline ManifestとAssemblyLine Manifestそれぞれに追加する必要があります。

Pipeline ManifestへのAnnotationの追加

試験環境でのBuild処理用PipelineへのAnnotationの追加

試験環境でのBuild処理するPipelineに以下のようにAnnotationを追加してください。

yaml
metadata:
  name: build
  annotations:
    vs.axis-dev.io/stage-type: build
    vs.axis-dev.io/env-type: non-prod
spec: ...
kind: Pipeline
apiVersion: tekton.dev/v1beta1s

Qmonus Value Streamでは、以下の特定のAnnotationが指定されているPipelineを試験環境でのBuildだと判別するようにしています。

  • vs.axis-dev.io/stage-type: build
  • vs.axis-dev.io/env-type: non-prod

Lead Timeを計算する際の始点を特定したり、Build回数を計算する際などに利用されます。

商用環境へのDeploy/Release処理用PipelineへのAnnotationの追加

商用環境へのDeploy/Release処理するPipelineに以下のようにAnnotationを追加してください。

yaml
metadata:
  name: deploy
  annotations:
    vs.axis-dev.io/stage-type: deploy
    vs.axis-dev.io/env-type: prod
spec: ...
kind: Pipeline
apiVersion: tekton.dev/v1beta1s
yaml
metadata:
  name: release
  annotations:
    vs.axis-dev.io/stage-type: release
    vs.axis-dev.io/env-type: prod
spec: ...
kind: Pipeline
apiVersion: tekton.dev/v1beta1s

Qmonus Value Streamでは、以下の特定のAnnotationが指定されているPipelineを商用環境へのリリースだと判別するようにしています。

  • vs.axis-dev.io/stage-type: release (もしくは、 vs.axis-dev.io/stage-type: deploy)
  • vs.axis-dev.io/env-type: prod

Deploy StageのみでRelease Stageが存在しない場合は、Deploy用のPipelineをリリースとして扱います。Lead Timeを計算する際の終点を特定したり、リリース頻度・間隔を計算する際などに利用されます。

AssemblyLine ManifestへのAnnotationの追加

試験環境でのBuild処理用Pipelineを含むAssemblyLine Manifestに以下のようにAnnotationを追加してください。

yaml
apiVersion: vs.axis-dev.io/v1
kind: AssemblyLine
metadata:
  name: staging-deploy
  annotations:
    vs.axis-dev.io/event-type: change-created
spec: ...

試験環境でのBuild処理用PipelineへのAnnotationの追加のときと同様に試験環境で変更が加えられたタイミングを判定するために下記のAnnotationを用いています。

  • vs.axis-dev.io/event-type: change-created

AssemblyLine Manifestへのevent-type Annotationの追加については上記のように直接Manifestを編集していただくか、もしくは、下図のようにAssemblyLine Editorから設定していただくことも可能です。

AssemblyLine ManifestへのEvent Type