Slide 1

Slide 1 text

ソフトウェア開発の生産性と信頼性 向上に取り組んだ結果、どうなった? Genki Ogasawara 2024.2.9 KGX MAIN TALK

Slide 2

Slide 2 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 3

Slide 3 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 4

Slide 4 text

ソフトウェア開発の前提知識 ◆ 開発 機能要件に従いプログラミング ◆ ビルド プログラムを最適化したファイルに出力 ◆ デプロイ ファイルをサーバに展開する Development Build Deployment

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 8

Slide 8 text

What is “Reliability” and “Productivity”?

Slide 9

Slide 9 text

Bedrock に聞いてみよう

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

DevOps

Slide 14

Slide 14 text

DevOps 生産性と信頼性向上のためのアプローチ

Slide 15

Slide 15 text

DevOps 生産性と信頼性向上のためのアプローチ DevOps は、ソフトウェア デリバリーの速度とサービスの信頼性の向上、 ソフトウェアの関係者間の共有オーナーシップの構築を目的とする、組織 的で文化的な取り組みです。(Google より)

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

速度と安定性は両立する

Slide 18

Slide 18 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

アジェンダ 2 4 3 ソフトウェアのチー ム開発と 前提知識 ソフトウェア開発に おける生産性と信 頼性とは? DORA Core Model DevOps Four Keys 改善のプラクティス 5 Future work & Summary 1

Slide 34

Slide 34 text

How have they changed to? 結局、どうなったの?

Slide 35

Slide 35 text

DevOps Four Keys Quick Check In 2019

Slide 36

Slide 36 text

DevOps Four Keys Quick Check In 2024

Slide 37

Slide 37 text

DevOps Four Keys Quick Check In 2024 🏻 🏻 業界平均を上回り、50ポイント近く改善

Slide 38

Slide 38 text

体感としてどうか? ◆ チームの変化  ・できるだけ自動化する文化が根付いた  ・品質を担保することを意識するようになった ◆ 副次的な効果  ・変更失敗率低減のため、テストも導入できた  ・開発サーバを立ち上げる速度が2分から数秒になった

Slide 39

Slide 39 text

Future works & Summary ・Quick Check のための定量的な計測をする 現在は感覚的に回答しているためメトリクスを取る仕組みを導入したい ・手動でシステムを復元しているため自動化する 失敗を検知した後に自動で前のバージョンにロールバックする 仕組みを導入し、復元までの時間を短縮したい

Slide 40

Slide 40 text

Thank you!