wwwave'sTechblog |ウェイブのエンジニアブログ

株式会社ウェイブのエンジニアによるテックブログです。会社の話や Ruby、Vue.jsについてなど技術的な話をしていきたいと思います。

株式会社ウェイブの人事部ブログです。社内の雰囲気やイベント、福利厚生などについてお伝えいたします!

株式会社ウェイブのエンジニアブログです。 エンジニアの目線から会社の話や技術的な話をしていきます。

可視化して改善せよ(開発速度編)

SRE G マネージャーの井上です。

本記事ではDevOpsに関する当社の取り組みをご紹介致します。

当社ではDORAのレポートをもとに 開発速度と信頼性の可視化して継続的に改善できる環境・仕組みを構築しております。

今回は開発速度の関してのお話です。

DORAのレポート?

DORA社がDevOpsに関して科学的なアプローチで研究したレポートです。 優秀な組織とそうではない組織について、何が違うのか、どういった取り組みをしているのかが記載されております。

DORA metrics ?

以下の4つとされています。

Aspect of software delivery Performance Elite High Medium Low
Deployment frequency On-demand(multiple deploys per day) Between once per day and once per week Between once per week and once per month Between once per month and once every six month
Lead time for changes Less than one day Between one day and one week Between one week and one month Between one month and six month
Time to restore service Less than one hour Less than one day Less than one day Between one week and one month
Change failure rate 0-15% 0-15% 0-15% 46-60%

今回は上2つを扱います。 Velocity(開発速度)の指標となっております。

ソース(2019年レポート)

www.devops-research.com

留意事項

Scrumなどでよく出てくるVelocity (ストーリーポイント消化量)と同じワードですが、切り口が異なります。 本記事では、ScrumのVelocityの話は出てきません。

WHY / なぜやるのか

何のために可視化するのでしょうか。

サービス開発において、開発速度と信頼性は非常に重要な指標となっています。 それらはDevOpsにおいて注目されている指標です。

そういった情報が感覚値のままでは「開発速度は早いのか、遅いのか」わかりません。 分からないので、改善できたしてもより適切な評価は難しいと思います。

そこで先人の知恵を借りて可視化することで 開発チームが自律的に継続的に改善できることを期待しています。

HOW / どうやるのか

当社ではGitlab CEを利用した開発を行なっております。 CI/CD は gitlab-runner を利用しております。

そのため、開発速度を可視化するためのソースはGitlabから抽出しています。 SaaS版GitlabのUltimateではすでにDORA metricsが提供されておりますが、当社ではCE版のため自作致しました。

前提条件

当社の開発環境

  • Gitlab
  • CI/CD .. Gitlab runner

用語

  • Merge Request (MR)

定義

可視化するに当たって当社で定義した内容は下記の通りです。

deployments frequency

  • 1日あたりの本番環境への平均デプロイ回数

参照データ

  • Gitlabで管理されているdeployments(デプロイすると作成されるレコード)を利用

lead time for changes

  • MR がmaster branchにマージされてから、本番に反映されるまでの平均時間

f:id:sys_wwwave:20210604102316j:plain
lead-time-for-changes の計測範囲

参照データ

master branchにマージされた時刻
  • master branchにコミットが作成された時刻
本番に反映された時刻
  • Gitlabで管理されているdeploymentsのdeployが終わった時刻

アーキテクチャ

f:id:sys_wwwave:20210604120931j:plain
architecture

Result / 結果

当社ではサービス開発チームは複数ございます。 今回はその中の1チームをご紹介致します。

算出期間

計測開始 計測終了
2018/11/29 2021/05/20

Deployments frequency

項目 単位
データ数 2000+ count
平均本番反映回数/日(週5) 3.1 counts

計算を単純化するために祝日は含まず。1週間5営業日で計算しています。 (祝日は非営業日です)

Lead time for changes

項目 単位
平均 159 min(分)
中央値 97 min(分)
データ数 2000+ counts
MR本番反映数/日(週5) 3.6 counts

ヒストグラム

f:id:sys_wwwave:20210604102425p:plain
lead-time-for-changes ヒストグラム

分布

0-125(min) 0-250(min)
73.62% 93.98%

250分以内に94%程度のMRが本番反映されていることがわかりました。

時系列(Y軸対数)

f:id:sys_wwwave:20210604102455p:plain
lead-time-for-changes 時系列(Y軸対数)

時間の経過とともに安定してきていることが分かります。

開発チームの立ち位置

冒頭に記載したDORA metricsのElite Performers に属することが分かりました。 2019年のレポートによると、当社の開発チームは上位20%のEliteに属することがわかりました。

可視化してレポートの情報と比較することで開発速度がどのようなものか見えてきました。

最新状態が可視化されることで、ディスカッションしやすい状態になりました。 これまで数多の改善をしてきましたが、可視化したことで新たな改善項目が挙がっております。 私たちは現状に満足せずにさらなる開発速度向上を推進していきます。

最後に

私たちと一緒にスピード感のあるサービス開発をしませんか?

以上、SREからのご報告でした。

トップに戻る