Appearance
DevOpsメトリクスの分析
WARNING
本機能は、フリートライアル環境ではご利用いただけません。フリートライアル環境では、特定の機能が制限されており、全ての機能をご利用いただけない場合がございます。
DevOpsメトリクスとは
DevOpsメトリクスとは、DORAが提案したDevOpsのパフォーマンスを評価するための4つのメトリクスを指しています。
- 開発、デプロイ、および運用の品質を図るための指標として広く用いられています。
- 4つのメトリクスに加え、サービス固有のAvailability (SLO/SLA) をモニタリングする形が望ましいとされています。
(参考) "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メトリクスを可視化し、リリース頻度やリードタイムを分析する機能を提供しています。
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イメージ図
Release Count
指定期間における対象アプリケーションの商用環境へのリリース回数を月毎に移動平均とともに描画しています。
Release Span (Average)
指定期間における対象アプリケーションの商用環境へのリリース間隔を月毎に移動平均とともに描画しています。
Median Lead Time (Average)
指定期間における対象アプリケーションのLead Timeを月毎に移動平均とともに描画しています。
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から設定していただくことも可能です。