😺

デプロイ頻度・変更のリードタイムを向上させる意味とアクションーFour Keys運用

2023/06/02に公開

前回は、Four Keysの変更障害率・平均修復時間を見るメリットと改善方法の記事を書きました。

今回はデプロイ頻度と変更のリードタイムに関して見る意味と改善方法についてご紹介します。

https://zenn.dev/offersmgr/articles/4bd3ca3d07fcc8

デプロイ頻度の重要性

デプロイ頻度の改善に関する構造

デプロイ頻度を見る意味

デプロイ頻度を向上させることが事業やプロダクトにどう影響を与えるのかは以下のような流れであり、プロダクトを顧客やユーザーに提供する上でまず最初に気にすべきポイントです。

1 デプロイ頻度や変更のリードタイムが短い

2 顧客・ユーザーへの提供速度が速い

3 プロダクトの提供価値の向上しやすい

4 プロダクトの成長≒事業成長へ

デプロイ頻度とは

デプロイ頻度は、**特定期間の営業日で開発チームがどれだけ迅速に新機能や修正をリリースできるかを示す指標(Offers MGRの場合)**です。
デプロイ頻度が高いほど、開発チームは素早く顧客・市場の要求に対応できているといえます。

デプロイ頻度の改善方法

  1. 小さな変更を頻繁にリリース
    1. 小さな変更は障害・不具合のリスクが低く、トラブルが起きた場合でも対応しやすいため、デプロイ頻度を向上させます。
  2. 自動デプロイの導入
    1. 自動デプロイを導入することで、デプロイ作業の手間を減らし、デプロイ頻度を向上させることができます。
  3. リリース手順の簡素化
    1. リリース手順を簡素化することで、デプロイの負担が軽減され、デプロイ頻度が向上します。

デプロイ頻度と変更障害率のトレードオフ

デプロイ頻度を向上させると、変更障害率が高まる可能性があります。これを防ぐためには、品質管理やテストプロセスを強化することが重要です。

変更のリードタイムの重要性

変更のリードタイムの改善に関する構造

変更のリードタイムとは

変更のリードタイムは、変更がコードに組み込まれてから実際にプロダクトにリリースされるまでの時間を指します。リードタイムは、顧客に早く機能・プロダクトをデリバリーするために重要です。

変更のリードタイムの改善方法

  1. プロセスの改善: 開発プロセスを見直し、無駄なタスクを削除することで、リードタイムを短縮できます。
  2. コミュニケーションの改善: 開発チーム内でのコミュニケーションを効率化することで、リードタイムを短縮することができます。
  3. プロジェクト管理ツールの活用: プロジェクト管理ツールを活用することで、タスクの進捗やスケジュール管理が容易になり、リードタイムを短縮できます。

Offers MGRではサイクルタイム分析機能をリリースしています。
サイクル分析機能で、チームや全他社単位での開発プロセスのリードタイムを期間・プルリクエスト・個人別などでさらに細かく把握・可視化し、新しい課題の発見や施策を打ちやすくなります。

https://zenn.dev/offersmgr/articles/52ea3e673e7a0f

期間ごとでのサマリーで見た後に、

プルリクエストごと、人毎でソートできるので詳細な状況を把握できます。

変更のリードタイムと変更障害率のトレードオフ

変更のリードタイムを短縮することで、変更障害率が高まる可能性があります。変更のリードタイムを短縮しながら変更障害率を低く保つためには、以下の対策が重要です。

  1. コード品質の向上: 高品質なコードを書くことで、変更障害率を低く保ちながらリードタイムを短縮できます。
  2. 適切なテストの実施: 単体テストや統合テストを適切に実施し、変更が他の部分に影響を与えないことを確認することで、変更障害率を低く保ちます。
  3. 変更管理プロセスの導入: 変更管理プロセスを導入することで、変更内容を効率的に追跡し、問題が発生した場合に迅速に対応できます。

変更障害率の改善などに関してはこちら

https://zenn.dev/offersmgr/articles/4bd3ca3d07fcc8

組織のフェーズに応じたデプロイ頻度と変更のリードタイムの重要性

スタートアップフェーズ

スタートアップフェーズでは、PMFを目指すので顧客・市場への適応力が何よりも重要です。

このフェーズでは、デプロイ頻度を高めることで、顧客のフィードバックを素早く反映し、顧客の満足度が向上することで継続へとつながっていきます。

また、変更のリードタイムを短縮し、素早く顧客・市場に対応することで、顧客の求める期待に応えてくれる開発組織であると信頼を高めてもらえます。

成長フェーズ

成長フェーズでは、プロダクトの安定性と品質が重要になります。このフェーズでは、変更障害率を低く保ちながら、デプロイ頻度と変更のリードタイムを適切なレベルに維持することが重要です。品質管理やテストプロセスを強化し、リスクを最小限に抑えることが求められます。

成熟フェーズ

成熟フェーズでは、プロダクトの信頼性が重要になります。このフェーズでは、変更障害率をさらに低く保ち、デプロイ頻度と変更のリードタイムを適切に管理することが重要です。プロダクトの安定性を維持しながら、新しい機能や改善を追加することで、顧客満足度を向上させることが求められます。

デプロイ頻度の改善方法

1. 開発プロセスの最適化

何をやるのか

  • 開発プロセスを見直し、無駄を排除し、効率を向上させます。

なぜやるのか(メリット)

  • 開発プロセスが最適化されることで、タスクの完了時間が短縮され、デプロイまでの期間が短くなります。これにより、デプロイ頻度が向上します。

どうやるのか

  • 開発プロセスのボトルネックや無駄を特定し、アジャイル開発手法などの導入やチーム間の連携を改善することで、開発プロセスを最適化します。

2. 自動化の導入

何をやるのか

  • テストやデプロイなどの作業を自動化

なぜやるのか(メリット)

  • 自動化により、手作業でのミスを減らし、デプロイまでの時間を短縮できます。これにより、デプロイ頻度が向上します。

どうやるのか

  • CI/CDツールを導入し、自動テストやデプロイの設定を行います。また、チーム内で自動化の知識を共有し、継続的に自動化の範囲を拡大します。

関連記事

https://zenn.dev/overflow_offers/articles/20221107-github_actions_frontend_build_test

https://zenn.dev/overflow_offers/articles/20230116-e2e-test-with-playwright

3. チームのスキルアップ

何をやるのか

  • 開発チームのスキルを向上させます。

なぜやるのか(メリット)

  • スキルの向上により、効率的な開発ができ、デプロイまでの期間が短くなります。これにより、デプロイ頻度が向上します。

どうやるのか

  • 定期的な研修や勉強会を実施し、チーム内で知識や経験を共有します。また、メンタリングやペアプログラミングなどの手法を用いて、チーム全体のスキルを向上させます。

変更のリードタイムの改善方法

1. クロスファンクショナルなチームの構築

何をやるのか

  • 開発、テスト、運用などの異なる専門分野のメンバーが協力して働くクロスファンクショナルなチームを構築(人数規模によっては兼務になりますが)

なぜやるのか(メリット)

  • クロスファンクショナルなチームにより、各ステージでの連携がスムーズになり、変更のリードタイムが短縮されます。また、チーム内で知識が共有され、問題解決が迅速に行われます。

どうやるのか

  • チーム編成を見直し、異なる専門分野のメンバーが協力して働くチームを作成します。また、定期的なミーティングや情報共有を行い、チーム間のコミュニケーションを強化します。

プロダクトの成長による開発組織拡大の際のチーム構成・作り方についてはチームトポロジーが分かりやすいですね。

https://amzn.to/3N41FTR

2. ワークフローの可視化

何をやるのか

  • 開発プロセスのワークフローを可視化し、全体像を把握します。

なぜやるのか(メリット)

  • ワークフローの可視化により、プロセスの進捗や問題点が明確になり、変更のリードタイムを短縮するための改善策が立てやすくなります。

どうやるのか

  • タスク管理ツールを活用し、タスクの状況や担当者、期限などを明確に表示
  • チーム内での情報共有を促進し、ワークフローの改善

3. 仕様の明確化と優先順位の決定

何をやるのか

  • プロジェクトの仕様を明確化し、タスクの優先順位を決定

なぜやるのか(メリット)

  • 仕様の明確化と優先順位の決定により、開発チームが効率的に作業を進めることができ、変更のリードタイムが短縮されます。

どうやるのか

  • プロジェクトの要件を詳細に洗い出し、タスクに分割し、優先順位を決定します。また、タスク管理ツールで優先順位を明確に表示し、チーム内で共有します。
  • プロダクトマネージャー、プロダクトオーナー、スクラムマスターなどがプロダクトバックログのリファインメントをレトロスペクティブなどの際に実施します。

これらの改善を実施すると、デプロイ頻度と変更のリードタイムが向上し、開発プロセス全体が効率化されます。ただし、変更障害率とのトレードオフも考慮する必要があります。

変更障害率とのトレードオフが生じる部分の確認と検証

デプロイ頻度や変更のリードタイムの向上によって、新しい変更・リリースが高速にされることで、潜在的な問題が見過ごされる可能性があります。

こういう問題にどう対処するのかの一例です。

  1. テストの充実
    1. 自動テストを導入し、テストの範囲とカバレッジを向上させることで、変更による問題を早期に検出し、修正が可能となります。
  2. 本番環境での検証
    1. カナリアリリースやブルーグリーンデプロイメントなどの手法を用いて、本番環境での影響を最小限に抑えながら変更を適用し、問題が発生した場合に迅速に対応できるようにします。
  3. モニタリングとアラート
    1. アプリケーションのパフォーマンスやエラー率を監視し、異常が検出された場合にはアラートを出すことで、問題の発生を迅速に察知し、修正が可能となります。

デプロイ頻度と変更のリードタイムを向上させつつ、変更障害率の上昇を抑制することができます。開発プロセスの効率化と安定性の両立を目指し、継続的に改善に取り組むことが重要です。

まとめ

デプロイ頻度と変更のリードタイムの基本的な改善アクションを紹介しましたが、当たり前を徹底することで向上していくものです。

デプロイ頻度・変更のリードタイムを追うために小粒な機能改善ばかりになり、プロダクト価値を最大化するための機能リリースができない、など数値におわれて本質を見逃すことがないようにバランスを見極めながら参考指標としてみていきましょう。

Four Keys(開発組織全体)・サイクルタイム分析(チームや個人毎の開発工程)の可視化をするならOffers MGR をぜひご活用ください。

https://offers-mgr.com/lp/

Discussion