DevOpsを紐解く:『LeanとDevOpsの科学』をもとに(2024 Advent Calendar 21日目)
この記事は私をシニアエンジニアにしてくれた「真のアジャイル開発」体験記の21日目の記事です。このアドベントカレンダーは「ある機能開発チームでスクラム, XP, DevOps を一度に実践したら真のアジャイル開発ができた」という内容です。執筆者は全てプログラミングをするパンダです。
本記事は書籍の内容に基づいて執筆しているため一部内容が古くなっております。DevOpsに関する最新の情報はDORAの2024年版State of DevOps Reportをご覧ください。
DevOpsを紐解く
本記事ではDevOpsと書籍「LeanとDevOpsの科学」の考え方を紹介します。
DevOpsの一般的な定義をWikipediaを参考に見てみましょう。
DevOpsとは、開発担当者と運用担当者が協力し、ソフトウェアを迅速にビルドしテストする文化と環境により、確実なリリースを、以前よりも迅速に高い頻度で可能とする組織体制の構築を目指すこと https://ja.wikipedia.org/wiki/DevOps
この定義によると、開発者と運用者が協働してソフトウェアを高頻度に素早くリリースすることと言えるでしょう。さらに現代のスタートアップでは開発者と運用者は明確に分けられず、開発者が運用にも責任を持つことが当たり前になってきています。
LeanとDevOpsの科学の説明
「LeanとDevOpsの科学」はソフトウェアを素早く高頻度にリリースしてビジネスでも競争力を得ているハイパフォーマーの特徴を統計学の手法を用いて分析した結果を紹介した書籍です。
我々はソフトウェアデリバリのパフォーマンスを厳密かつ計測可能な方法で定義することができた
『進行中の作業の管理』から、『テストの自動化』に至るまで、どのプラクティスがどの程度デリバリのパフォーマンスを向上させるかに関する仮説が検証可能になったのである。加えて、チームの燃え尽き症候群(バーンアウト)やデプロイ関連の負荷(ペイン)など、我々が気にかけている懸念材料の測定も可能になった 「LeanとDevOpsの科学」 p.34
書籍の中では自分たちの組織のパフォーマンスを測定するための指標と、ソフトウェア開発において組織のパフォーマンスを向上させるために効果的なプラクティスが紹介されています。このプラクティスは書籍内でケイパビリティと呼ばれています。
書籍タイトルに科学という名前がついているように、書籍に書かれていることを実践すると、あらゆる組織でも再現性がある形でパフォーマンスを向上させられるというのがこの書籍の魅力です。ソフトウェア業界ではこれまでに様々なベテラン達が書いた様々な書籍やブログで様々なプラクティスが紹介されてきましたが、この書籍を読めば結局どれが真に組織のパフォーマンスを向上させるのかがわかります。
プラクティスを具体的に紹介する前に、Four Keysとケイパビリティについて説明します。
Four Keysとは
Four Keysとは、ソフトウェア開発チームのパフォーマンスを示す4つの指標です。Googleの「エリート DevOps チームであることを Four Keys プロジェクトで確認する」という記事から引用します。
- デプロイの頻度: 組織による正常な本番環境へのリリースの頻度
- 変更のリードタイム: commit から本番環境稼働までの所要時間(コードのマージからデプロイまでにかかる時間という解釈も)
- サービス復元時間: 組織が本番環境での障害から回復するのにかかる時間
- 変更障害率: デプロイが原因で本番環境で障害が発生する割合(%)
エリートとは、この指標の中で一番成績がいいグループを指します。エリートな組織は1日に何度もコードがデプロイされ、変更のリードタイムはわずか1時間以内、サービスの復元時間も1時間以内で変更障害率は0-15%です。
Four Keysを測定して継続的に改善することで組織のパフォーマンスが向上し、ビジネスの競争力を向上させることができるのです。エリートな組織は目標を達成する確率が他の組織の2倍高いとのことで、確かにチームがハイパフォーマンスであることが競争力の源泉となることが伺えます。
エリートチームが組織のパフォーマンス目標を達成または超える可能性は2倍であるとの調査結果を得ました (同ブログより)
ケイパビリティとは
ケイパビリティは書籍の中で以下のように説明されています。
ケイパビリティとは、ソフトウェアデリバリだけでなく、収益性や生産性、マーケットの占有率の向上といった形で示される組織自体のパフォーマンスを向上させるために欠かせないこと 「LeanとDevOpsの科学」p.12を元に作成
書籍では具体的に以下の24のケイパビリティが紹介されています。なお、2022年時点では27のケイパビリティになっていますが、2024年時点ではさらに増えているかもしれません。2022年の4-6月でチームで実践したときは書籍を参考にしていたため、ここでは書籍の分類に従います。
技術的なプラクティスは「継続的デリバリの促進効果が高いケイパビリティ」として以下のものが挙げられています。
- 本番環境の全ての成果物をバージョン管理システムで管理
- デプロイメントのプロセスの自動化
- 継続的インテグレーション(CI)の実装
- トランクベースの開発手法の実践
- テストの自動化
- テストデータの管理
- 情報セキュリティのシフトレフト
- 継続的デリバリ(CD)の実践
CIやテストの自動化などXPで紹介されていたプラクティスと被るものがあることが伺えます。相違点はXPがKent Beck氏の経験則であるのに対して、これらのケイパビリティは統計学的に組織のパフォーマンス改善に効果があると示されたものであるということです。
さらにこれらのケイパビリティが組織の何に影響を与えるのか、下記の相関図で示されています(図は書籍を元に作成)。
チームや組織のパフォーマンスを向上させるためには一筋縄ではいきません。「リーン思考」や「組織文化」もパフォーマンスに影響があります。これらはチーム内で改善できないものもあります。
例えば「負担の軽い変更承認プロセス」というケイパビリティは、コードのマージに上長の承認が必要で、その承認には1週間ほどかかるという会社の場合、チーム内部で改善することは不可能でしょう。マネージャーや役員などもっと多くの人を巻き込む必要があるからです。
忘れないで欲しいのは、「ハイパフォーマンス」とは購入したり、真似したりできるものではないという点である。 自信のケイパビリティを高めつつ、自チームや自組織の現況や目標にしっくりくる道を模索する必要がある。 そして、これには絶え間ない努力、投資、集中、時間を要する。 同上。p.233
チームのパフォーマンスを向上させてビジネスで競争力を得るためには、Four keysを計測しつつエリートを目指して地道に改善を続けていきましょう。
次回は継続的デリバリの促進効果が高いケイパビリティの詳細を紹介します。
Happy Coding 🎉