Four Keysとは何か?チームパフォーマンスに重要な理由     

ソフトウェアの開発環境が複雑化する状況の中、いかに品質とスピードを担保するかがより重要になっています。そこで注目されているのが、ソフトウェア開発チームのパフォーマンスを測る指標である「Four Keys」です。

ここでは、Four Keysの重要性や、生産性向上との関連についてご説明します。ぜひチームのパフォーマンスアップにお役立てください。

Four Keysは開発チームのパフォーマンスを計測する4つの指標

Four Keysは、DORA(DevOps Research and Assessment)が6年におよぶ研究を踏まえて提唱した、ソフトウェア開発チームのパフォーマンスを測る4つの指標です。DORA(DevOps Research and Assessment)は、ソフトウェア開発とデリバリーの状況改善のための能力を調査・検証している研究組織で、2018年からはGoogle Cloudで情報発信をしています。

Four Keysの具体的な内容は、下記のとおりです。

Four Keysの4つの指標
指標 定義
指標デプロイの頻度 定義変更を本番環境にデプロイ、あるいはエンドユーザーにリリースした頻度
指標変更のリードタイム 定義変更のコミットから、本番環境で正常に実行されるまでの時間
指標変更失敗率 定義デプロイによって本番環境で障害が発生する割合
指標デプロイ失敗時の復元までの時間 定義本番環境での障害から復元までにかかる時間

*参照元:「エリート DevOps チームであることを Four Keys プロジェクトで確認する」(Google Cloud Japan ブログより)

4つの値を計測し、継続して改善を繰り返すことで、ソフトウェアデリバリーのスピードと安定性を向上させることができます。それにより、生産性の向上を目指すことがFour Keysの目的です。

 

Four Keysを用いた調査結果は「State of DevOps Report」に記載されている

Four Keysを用いたソフトウェアデリバリーパフォーマンスの調査結果は、「State of DevOps Report」に記載されています。「State of DevOps Report」とは、DORAが毎年公開しているソフトウェアデリバリーパフォーマンスに関するレポートのことです。Four Keysの改善効果が高いとされるケイパビリティについての詳細な内容についても知ることができます。

DORAは、State of DevOps Reportの中で、Four Keysによって測定したパフォーマンスレベルを、ハイ・ミドル・ロー・エリートの4段階に分類しています。     

開発スピードと安定性の関連

Four Keysは、開発のスピードと安定性を測る指標です。開発スピードと安定性の2つの要素については、2018年に発表されたState of DevOps Reportの中で「トレードオフの関係にあるものではない」と言及しています。実際に高い能力を発揮するチームは、開発スピードと安定性の両方が高レベルにあり、Four Keysそのものがスピードと安定性の両方を改善していくための指標として機能するものであることを意味しています。

ソフトウェアの開発スピードと安定性がトレードオフの関係ではないならば、両者の間にどのような関連性があるのかが気になる人は多いかもしれません。開発スピードを高めてリリースが増えれば、結果として安定性も高められるのでは、と考えることもできます。

しかし、開発スピードと安定性は必ずしも相関するとは限りません。DORAによって「エリート」に分類されたチームは、サービスの信頼性に大きく投資しているはずで、そのために開発スピードと安定性の両方を高レベルに保つことができていると考えられます。

結果として開発スピードと安定性がともに向上するケースはあるものの、開発スピードが上がったからといって、自然と安定性も高まるわけではありません。

Four Keysが重要な理由

生産性向上のためにFour Keysが重要な理由は、チームの状況を客観的に判断できる点にあります。ここでは、やや極端ではありますが2つの開発スタイル別に説明しましょう。

まず、ソフトウェアを頻繁に更新していく開発スタイルの場合、1回当たりの変更差分が比較的少なくなるケースが多く、レビューにおける認知負荷が小さくなることが考えられます。そのため、確認まで含めた作業量は少なく、開発スピードが高まる傾向にあります。

その一方、リリースの頻度が少なく2週間に1度や月に1度のリリースが発生する場合、複数の変更が混ざり、問題が発生しやすい傾向があります。問題が発生するたびに対処する必要が出てくるため、リリースのプロセスが慎重になりがちで、結果的にリリース頻度が低くなってしまうことも少なくありません。

Four Keysを計測することで、自分たちのチームが「差分の少ない変更を頻繁に行うスタイル」と、「大きな変更を低頻度で行うスタイル」のどの位置にいるのか、客観的に把握できます。そして、Four Keysの各要素をさらに掘り下げていくことで、開発スピードと安定性をさらに高めていくためには何をすべきかが見えてくるのです。

生産性の高いチームに必要なこと

前述したとおり、Four Keysの最終的な目的は生産性の向上です。ただし、一言で生産性といっても、生産性に影響を及ぼす要素は多岐にわたります。ここでは、生産性の高いチームづくりをする上でのポイントをご紹介します。

数値化しにくい要素を加味する

生産性の高いチームを目指すには、Four Keysのほかにも、数値化しにくい要素を加味することが大切です。DORAが発表した2023年のState of DevOps Reportでは、デリバリー能力を高めるポイントとして次の5点を挙げています。

<デリバリー能力を高める重要なポイント>

  • 健全な組織文化を確立する
  • ユーザーを念頭に置いてビルドする
  • 質の高いドキュメントで技術的機能を強化する
  • 仕事を公平に配分する
  • クラウドでインフラストラクチャの柔軟性を高める

生産性を高めるためには「リリースを早めて小さな変更を重ね、リードタイムを短くする」というだけでは十分ではありません。エンジニア個人のモチベーションを高めるための健全な組織文化や仕事の配分の公平さ、ユーザーを念頭に置いたサービス構築など、数値化しにくい要素も重要です。例えば、メンバーが組織に「受け入れられている」と感じ、帰属意識を持っているチームは、そうでないチームと比較して組織のパフォーマンスが30%も高いと報告されています。*

*参照元:「2023 年の State of DevOps Report: 組織文化の重要性」(Google Cloud Japanブログより)

エンジニアの作業的負荷だけではなく、仕事のやりがいや仕事のしやすさといった精神的負荷を軽減することによって、生産性は高まるといえるでしょう。     

現場と管理者側とで目的を明確にする

生産性の高いチームづくりの大切なポイントは、現場と管理者側とで指標の目的をはっきりさせることも挙げられます。Four Keysをパフォーマンス指標とした場合、その数値を追うことが目的化してしまうことも少なくありません。手段と目的を取り違えると、本来の目的を見失ってしまいます。

そもそもFour Keysによって改善を行うのは、ユーザーに対してより優れたサービスをタイムリーに提供するためです。現場側と管理者側がしっかりと目的を共有していないと、表面的に数値が改善するだけで、本来の目的からずれた結果になりかねません。目的の周知はいつでも立ち返ることができるように、継続的に行う必要があるでしょう。

Four Keysの5つ目のキーメトリック「信頼性」

Four Keysは4つの指標と述べてきましたが、最近新たに5つ目の指標として「信頼性」が追加されました。ここでいう信頼性の内容と信頼性を高める方法について解説します。

生産性向上における信頼性の重要性

生産性にはシステムの信頼性も大きく影響します。信頼性に不安があると、エラーによる障害をおそれるあまり、変更はある程度の量をまとめて行い、テスト作業は念入りに時間をかけて行われます。そのためリリースまでの時間が長くなり、頻度は下がるでしょう。それでも障害の不安を完全に拭うことはできず、障害が起きるたびにパッチを当てて対応していくということが日常的になります。エンジニアのマインドはネガティブになり、モチベーションにも悪影響を及ぼすことも少なくありません。

一方、信頼性が高いシステムの場合はどうでしょうか。SRE(Site Reliability Engineering)を実践し、リリースまでSLO(Service Level Objective)をしっかり維持していれば、過度に障害をおそれることはありません。もしもリリース時に障害が起こっても、リリース前の状態まで切り戻せば、サービスへの影響を小さく抑えられるからです。

このように、システムの信頼性はデリバリー頻度にも大きく寄与する、重要なものと位置づけられます。

信頼性を高めるには、オブザーバビリティが有効

信頼性を高めるには、オブザーバビリティを導入することが有効です。ソフトウェアの信頼性を高める方法として、SLI(Service Level Indicators)/SLOを計測して、高めていくことが一般的です。しかし、そこをさらに掘り下げていくと、「オブザーバビリティを維持しながらSREを実践していく」ということになるでしょう。

オブザーバビリティとは日本語で「可観測性」と訳されます。常にシステム全体のあらゆるデータをリアルタイムで収集し、その瞬間ごとのシステムの状態を把握することが可能です。この状態でSREを実践することで、ソフトウェアの信頼性を高めることにつながります。

生産性向上に貢献するオブザーバビリティプラットフォームNew Relic

開発チームの能力を測り、高めるためには、Four Keysは重要な指標となります。しかしその一方で、システムの信頼性を高めることも不可欠であり、そのためにはシステム内部で何が起こっているのかを正確に把握することが重要です。

そこで活躍するのが、オブザーバビリティプラットフォームであるNew Relicです。New Relicは高度なオブザーバビリティを備え、システムの信頼性向上に貢献する機能を備えています。その中から2つの機能をご紹介します。

SLM(サービスレベル管理)

SLM(サービスレベル管理)は、信頼性に関する定義を提供する機能です。SLI/SLOの推奨設定値を1クリックで設定でき、それぞれの遵守状況、エラーバジェット、達成状況を組織全体で共有できます。そのため、現場のエンジニアは日々の運用状況を把握でき、リーダーは期間ごとのレポートを受け取ることで、サービスレベルを良好に保ち、継続的に見直すことが可能です。また、サービスレベルに懸念があれば、アラートとともにシステムの詳細な状況を確認でき、すみやかに対処することができます。

Change Tracking(変更追跡機能)

Change Trackingは、アプリケーションのバージョンアップやシステムの構成変更など、開発のあらゆる段階での変更を追跡・把握する機能です。変更内容とパフォーマンスデータとを結びつけることで、変更によってどこに影響が及んだのかを明確にし、エンジニアが迅速な問題解決を図れるようサポートします。システムの停止や障害の多くは、コードや構成の変更によって起こるものです。Change Trackingを使えば、変更の詳細な記録はもちろん、各構成要素をグルーピングすることも可能。インシデント解決に要する時間を大きく短縮することができます。

 

このように、New Relicが提供する各機能は、システム全体の可観測性を大きく高めます。New Relicでオブザーバビリティを実践し、システムの信頼性を高め、生産性の向上に役立ててみてはいかがでしょうか。