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

ソフトウェア開発の生産性と信頼性向上に取り組んだ結果、どうなった?/What has ch...

Genki Ogasawara
February 09, 2024
85

ソフトウェア開発の生産性と信頼性向上に取り組んだ結果、どうなった?/What has changed as a result of efforts to improve software development productivity and reliability?

Genki Ogasawara

February 09, 2024
Tweet

More Decks by Genki Ogasawara

Transcript

  1. { } … 個人開発とチーム開発の違い 複雑なバージョン管理 開発する機能ごとにタスクが 割り当てられるため、コードの バージョン管理が必要になる。さ らに、クラウドとローカルの開発 環境で同期を取る必要が

    ある。 合意形成と履歴 組織単位の合意形成に時間を 要する。開発者は機能開発後に プルリクエストでレビューを 依頼する必要がある。レビューの 履歴は後から追跡できる必要が ある。 コードと環境の共有 ソフトウェアのコードおよび開発 環境の設定は共有する必要があ り、素早くセットアップできる必要 がある。場合によっては、クラウド の開発環境を用いることもある。
  2. { } … 個人開発とチーム開発の違い 複雑なバージョン管理 開発する機能ごとにタスクが 割り当てられるため、コードの バージョン管理が必要になる。さ らに、クラウドとローカルの開発 環境で同期を取る必要が

    ある。 合意形成と履歴 組織単位の合意形成に時間を 要する。開発者は機能開発後に プルリクエストでレビューを 依頼する必要がある。レビューの 履歴は後から追跡できる必要が ある。 コードと環境の共有 ソフトウェアのコードおよび開発 環境の設定は共有する必要があ り、素早くセットアップできる必要 がある。場合によっては、クラウド の開発環境を用いることもある。 開発以外にもやることが意外とあるな・・・? 🤔
  3. ソフトウェア開発における信頼性と生産性とは何か? ◆ 信頼性 - Reliability • 想定通り機能する • エラーがない •

    セキュリティリスクが少ない • 脆弱性が少ない ◆ 生産性 - Productivity • 自動化されている • チームメンバーの支援 • 試験的な取り組みができる • 変更が容易
  4. ソフトウェア開発における信頼性と生産性とは何か? ◆ 信頼性 - Reliability • 想定通り機能する • エラーがない •

    セキュリティリスクが少ない • 脆弱性が少ない プロダクトとして各機能が問題なく動くためのアプ ローチ、セキュリティに対するアプローチが必要に なる ◆ 生産性 - Productivity • 自動化されている • チームメンバーの支援 • 試験的な取り組みができる • 変更が容易
  5. ソフトウェア開発における信頼性と生産性とは何か? ◆ 信頼性 - Reliability • 想定通り機能する • エラーがない •

    セキュリティリスクが少ない • 脆弱性が少ない プロダクトとして各機能が問題なく動くためのアプ ローチ、セキュリティに対するアプローチが必要に なる ◆ 生産性 - Productivity • 自動化されている • チームメンバーの支援 • 試験的な取り組みができる • 変更が容易 開発者の煩わしさを取り除くアプローチ、実験する ことが許容されるような環境を作るためのアプロー チが必要になる
  6. DORA Core Model DevOps Research & Assessment (DORA) DORA Core

    Model ◆ ソフトウェアのパフォーマンス測定 - デプロイ頻度 - 変更のリードタイム - 変更失敗率 - 復元時間 優れている組織は、この4つの指標について高レベルである DevOps Four Keys Deployment frequency Lead time for changes Time to restore service Change failure rate
  7. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 チームによる正常な本番環境へのリリースの頻度

    ◆ 変更のリードタイム 開発者によるプルリクエストがレビューされ本番環境で 稼働するまでの所要時間 ◆ 変更失敗率 デプロイが原因で本番環境で障害が発生する割合 ◆ 復元時間 本番環境における障害が発生してからシステムが正常 な状態に復元するまでにかかる時間 {…} 開発者 レビュー 承認 レビュワー ステージング 環境 本番環境
  8. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 チームによる正常な本番環境へのリリースの頻度

    ◆ 変更のリードタイム 開発者によるプルリクエストがレビューされ本番環境で 稼働するまでの所要時間 ◆ 変更失敗率 デプロイが原因で本番環境で障害が発生する割合 ◆ 復元時間 本番環境における障害が発生してからシステムが正常 な状態に復元するまでにかかる時間 ステージング 環境 本番環境 {…} 開発者 デプロイ デプロイ レビュー 承認 レビュワー
  9. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 チームによる正常な本番環境へのリリースの頻度

    ◆ 変更のリードタイム 開発者によるプルリクエストがレビューされ本番環境で 稼働するまでの所要時間 ◆ 変更失敗率 デプロイが原因で本番環境で障害が発生する割合 ◆ 復元時間 本番環境における障害が発生してからシステムが正常 な状態に復元するまでにかかる時間 ステージング 環境 本番環境 {…} 開発者 デプロイ デプロイ レビュー 承認 レビュワー
  10. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 チームによる正常な本番環境へのリリースの頻度

    ◆ 変更のリードタイム 開発者によるプルリクエストがレビューされ本番環境で 稼働するまでの所要時間 ◆ 変更失敗率 デプロイが原因で本番環境で障害が発生する割合 ◆ 復元時間 本番環境における障害が発生してからシステムが正常 な状態に復元するまでにかかる時間 ステージング 環境 本番環境 {…} 開発者 デプロイ デプロイ レビュー 承認 レビュワー
  11. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった
  12. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった 環境ごとの自動デプロイ レビューの簡素化 失敗の検知
  13. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった ステージング 環境 本番環境 開発環境 開発者 Deploy Command Deploy Command Deploy Command Login Login
  14. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった ステージング 環境 本番環境 開発環境 開発者 Workflow Workflow Workflow Amazon CodeCatalyst の Workflow 機能を使って自動化
  15. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった 開発者 Requierd Reviewer 全員が実装内容を確認したい という狙いもあった
  16. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった 開発者 Requierd Reviewer 速度を優先しレビュアーを削減 コードレビューで実装内容を確認 Optional Reviewer
  17. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった 開発者 Requierd Reviewer 速度を優先しレビュアーを削減 コードレビューで実装内容を確認 Optional Reviewer 自分の開発よりもレ ビュー優先
  18. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった ステージング 環境 本番環境 開発環境 各環境を見に行くまで エラーが検知できない状態
  19. DORA Core Model - DevOps Four Keys ◆ デプロイ頻度 手動デプロイによるビッグバンデプロイ

    ◆ 変更のリードタイム レビュアーが多いため開発者がプルリクエスト してから承認まで時間がかかっていた ◆ 変更失敗率 環境ごとに手動でコマンドを打ちデプロイをしなければ らなずデプロイによる失敗が頻発していた ◆ 復元時間 エラーが発生した場合に検知できていなかった ステージング 環境 本番環境 開発環境 各環境のログからメトリクスを 作成しSlack経由で通知 通知