Upgrade to Pro — share decks privately, control downloads, hide ads and more …

30分でわかるFour Keysの基礎と重要性

30分でわかるFour Keysの基礎と重要性

ソフトウェアデリバリーのパフォーマンスを示す4つの指標であるFour Keysについて、指標の成り立ち、改善する意義、各指標への向き合い方、近年の動向などを網羅的に解説しました。

Yuu Igarashi

October 28, 2022
Tweet

More Decks by Yuu Igarashi

Other Decks in Technology

Transcript

  1. 自己紹介 • 五十嵐 雄(いがらし ゆう)/ id:yigarashi / @yigarashi_9 • 株式会社はてな

    Webアプリケーションエンジニア • yigarashiのブログ で学びを発信しています ◦ エンジニアリングマネージャーを目指す若者の戦略 ◦ Four Keysがなぜ重要なのか - 開発チームのパフォーマンスを改善 する方法について ▪ このエントリーがきっかけでお声がけいただくことに!
  2. ソフトウェア開発を取り巻く複雑な環境 • 生産性としてどの指標を見たらよい? ◦ 変更行数 ベロシティ コミット数 プルリクエスト数 リリース回数 プロ

    ジェクト完了までの期間 事業のKPI 売上 etc… • どんなプラクティスにどんな効果がある? ◦ リファクタリング テスト CI/CD モブプロ レビュー QA スクラム カンバ ン タスク分割 チームトポロジー etc…
  3. DORA - DevOps Research and Assesment • 学術的な手法を用いてソフトウェア開発やデリバリーの状況を改善するこ とを目指す研究プロジェクト •

    2013年から毎年「State of DevOps Report」を報告 • 「LeanとDevOpsの科学」は2014〜2017のレポートをまとめたもの • 2018年にGoogleが買収しGoogle Cloudから継続して情報発信 ◦ DevOps とは: 研究とソリューション | Google Cloud ◦ DORA research program
  4. Four Keysと組織のパフォーマンス • 単に「注意深く選定した」では説得力がない • DORAはFour Keysの尤もらしさを学術的な手法で明らかにした ◦ Four Keysに関する回答をクラスタリング分析

    ◦ 浮かび上がった3クラスタでFour Keysのスコアに有意な差 ◦ ハイ/ミドル/ロー パフォーマーの発見 • ハイパフォーマーほど組織のパフォーマンス(収益性や市場占有率、目標 の達成度合いなど)も高いとわかった
  5. Four Keysにトレードオフはない • Four Keysは直感的にはトレードオフが見出せる ◦ スループット: 変更のリードタイム デプロイ頻度 ◦

    安定性: 変更失敗率 平均修復時間 • しかし発見されたハイパフォーマーは4指標全てで抜きん出ていた • スループットと安定性の両方を改善する優れたプラクティスを採用すること が重要
  6. 特に有効性が示されたプラクティス・能力 • DORAはFour Keysや組織パフォーマンスの改善に有効なプラクティス・ 能力を統計的に特定してきた • LeanとDevOpsの科学では「24のケイパビリティ」 • DevOps の能力

    | Google Cloud ◦ 2022/10/16現在は27の能力が示されている ◦ 技術・プロセス・測定・文化の4軸 • Four Keysを土台にすることで、選りすぐりのプラクティスに後ろ盾がある 状態から始められる
  7. 手法の効果を説明する枠組みとして 例題: リファクタリングはどんな効果があるのか • 変更のリードタイム: 変更を加えやすくなり短縮 • デプロイ頻度: 疎結合になることでより小さくリリースが可能 •

    変更失敗率: コードを理解しやすくなりミスが減少 • 平均修復時間: コードを理解しやすくなり原因の特定が容易に 適切なリファクタリングがデリバリーパフォーマンスの向上につながることを分 解して体系的に説明できた
  8. 変更のリードタイム 改善の例 • バリューストリームマップを書いてボトルネックを発見 • よくあるボトルネックへの対処 ◦ CIの高速化 ◦ 即レビュー文化などでレビューリードタイムの短縮

    ◦ 計画によって作業単位とリリース単位を小さくする ◦ フィーチャートグルなどで本番反映と提供を分離 ◦ QA作業の軽量化 ◦ リリースフローの最適化
  9. 変更失敗率、侮るなかれ 変更の リードタイム 次の開発へ 変更の リードタイム 変更の リードタイム 変更の リードタイム

    次の開発へ • N回失敗すれば実質的な変更のリードタイムはN+1倍 • 全体のアウトカムの観点で見れば、デリバリーの安定性もまたスループッ トを大きく改善する 成功 失敗 失敗 成功
  10. 変更失敗率 改善の例 • 変更を簡単にする ◦ 作業単位とリリース単位を小さくする ◦ 高凝集で疎結合なアーキテクチャ、モジュール • 失敗を未然に防ぐ

    ◦ 継続的なテスト ◦ コードレビュー ◦ 変更を適切に加えるための能力獲得を支援する ▪ ドキュメント、トレーニング
  11. 信頼性 - 5番目のキーメトリック • 運用パフォーマンスを表す「信頼性」が近年追加された ◦ Site Reliability Engineeringの”Reliablity” ◦

    「信頼性の目標を達成している度合い」で計測 • 運用パフォーマンスが低い場合は、Four Keys(デリバリーパフォーマン ス)が組織パフォーマンスに繋がりづらいとわかった ◦ 直感的には「いくら素早く機能を出しても使えなかったりパフォーマン スが悪かったりしたら意味がない」 ◦ デリバリー改善とSREは両輪
  12. その他フォーカスされているトピック • DevOpsの能力がこれまで見た側面以外にも好影響を与える可能性 ◦ 燃え尽き症候群の軽減 ◦ 他人にチームを勧める割合の向上 • 改善効果の高い能力 ◦

    ドキュメンテーション ◦ サプライチェーンのセキュリティへの投資 ◦ クラウドの活用 ※詳細は近年のState of DevOps Reportを参照ください
  13. 有力な計測方法 • https://github.com/GoogleCloudPlatform/fourkeys ◦ Google Cloudが提供するETLパイプライン • Findy Teams ◦

    GitHubやGitLab、Jiraなどエンジニア向けツールを解析すること で、エンジニアリング組織の生産性を可視化するサービス • その他、様々な企業で独自の事例 ◦ 「Four Keys」などで検索ください
  14. まとめ - Four Keysの基礎と重要性 • Four Keysとはソフトウェアデリバリーのパフォーマンスを示す以下の4つ の指標である ◦ スループット:

    変更のリードタイム デプロイ頻度 ◦ 安定性: 変更失敗率 平均修復時間 • 職能横断のアウトカムを示すように注意深く選定され、実際に組織のパ フォーマンスと関係があるとわかった指標である • Four Keysにトレードオフはない: スループットと安定性の両方を建設的に 改善していく枠組みとして機能する