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

数字を上げることが 目的になっていませんか?Four Keysによる開発生産性向上で陥った3つの失敗/Developers Summit LM 2023

数字を上げることが 目的になっていませんか?Four Keysによる開発生産性向上で陥った3つの失敗/Developers Summit LM 2023

Developers Summit 2023
登壇資料(2023/2/10)
『数字を上げることが 目的になっていませんか?
Four Keysによる開発生産性向上で陥った3つの失敗』
https://event.shoeisha.jp/devsumi/20230209/session/4180
#devsumi #devsumiA #リンクアンドモチベーション #リンモチ
=============================================
【株式会社リンクアンドモチベーション】
■お問い合わせ
 [email protected]
■Entrancebook
 https://note.com/lmi/n/n179505e048f4
■テックブログ
 https://link-and-motivation.hatenablog.com/
■登壇者 川津インタビュー
 https://www.wantedly.com/companies/lmi/post_articles/431391
=============================================

More Decks by リンクアンドモチベーション

Other Decks in Technology

Transcript

  1. 2 © Link and Motivation Group 自己紹介 川津 雄介 株式会社リンクアンドモチベーション

    SRE • 前職は某複写機メーカーでエンジニアしてた • OSレイヤーからWeb/モバイルまで何でもやる • 中途の採用活動もします • リンクアンドモチベーションではSREとして開発 室全体の生産性向上に注力! https://github.com/megmogmog1965 https://qiita.com/megmogmog1965
  2. 8 © Link and Motivation Group 弊社開発組織の歴史 2016 2018 2019

    2022 2022 末 モチベーションクラウド のリリース 開発組織内製化のスタート (Four Keys = Low レベル) コミュニケーションクラウド のリリース ストレッチクラウド のリリース Four Keys メトリクス High レベルに到達 2020 SRE チームの誕生 弊社の開発組織は誕生して5年目です!
  3. 9 © Link and Motivation Group SRE チームの遷移 (Team Topologies

    風に言うと...) 4つのチームタイプ ※ 出典:「チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計」より
  4. 10 © Link and Motivation Group SRE チームの遷移 (Team Topologies

    風に言うと...) インタラクションモード (チーム間の関わり方を示す) ※ 出典:「チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計」より
  5. 11 © Link and Motivation Group 1年前 → Medium レベル

    インフラや CI/CD (仕組み) を一方的に提供していた。
  6. 12 © Link and Motivation Group 現在 → High レベル

    開発者と協働し、課題解決に取り組む。
  7. 14 © Link and Motivation Group Four Keys メトリクス 出典:

    https://cloud.google.com/blog/products/devops-sre/dora-2022-accelerate-state-of-devops-report-now- out?hl=en Four Key メトリクスは、DevOps Research and Assessment(DORA) チームが実施した 研究が出典のソフトウェア開発チームのパフォーマンスを示す 4 つの指標です。
  8. 15 © Link and Motivation Group Four Keys メトリクス 出典:

    https://cloud.google.com/blog/products/devops-sre/dora-2022-accelerate-state-of-devops-report-now- out?hl=en 「速度」と「安定性」の指標。お互いが密接な関係にありバランスが重要です。 デプロイ頻度 リードタイム MTTR 変更障害率 デプロイが原因で本番環境で障害が発 生する割合(%) 組織が本番環境での障害から回復する のにかかる平均時間 First commit から本番環境稼働までの 所要時間 本番環境へのリリースの頻度 速度 安定性
  9. 18 © Link and Motivation Group 遠い (苦手) 近い (得意)

    インフラの仕組みだけで解決できる限界 SRE アプリ開発者 インフラ CI / CD メトリクス SRE (インフラエンジニア発) は、どうしてもインフラ側から改善しがち。 ブランチング モデル テストコード E2E テスト アプリコード
  10. 22 © Link and Motivation Group SRE と開発者が協働して進めるには? 1 2

    3 開発生産性・メトリクスの基準を統一する 改善活動をみんなの目標にする 数値を上げる意味・目的を共有する
  11. 24 © Link and Motivation Group 生産性の議論を始める為に SRE 開発者 共通の指標

    コミュニケーション 議論をする為の共通のネタ「指標」が必要。
  12. 27 © Link and Motivation Group 生産性課題を特定する為に必要な情報 量・頻度・正確さ の掛け算。 量

    頻度 正確さ 課題の分析をする為に、 様々な面の情報が 取得できている事 最新の情報が毎日更新・記録 できている事 情報が正確で信頼できる事
  13. 28 © Link and Motivation Group ① 情報の量 今月の PR

    は 100 件でした 25 th% は「0〜3日」 XXX さんの PR は7日超えが多い 今月のリードタイムは「7日」 もっと細かく・視点を変えて見ると...
  14. 29 © Link and Motivation Group ② 情報の更新頻度 振り返りの期間は多種多様。 (相対・絶対

    / 日・週・月) 11月 第2週 12月 第3週 第4週 今日 過去2週間 (相対) 1週目 2週目 月で振り返りたい
  15. 30 © Link and Motivation Group ② 情報の更新頻度 振り返りの期間は多種多様。 (相対・絶対

    / 日・週・月) 11月 第2週 12月 第3週 第4週 今日 過去2週間 (相対) 1週目 2週目 月で振り返りたい 毎日メトリクス集計できているとベスト
  16. 31 © Link and Motivation Group ③ 情報の正確さ 情報 (ミス

    0%) 機械 人間 情報 (ミス 5%) 開発者 (頻度低くても) ミスの可能性があると 見る気を無くす 自動 手作業 ❌
  17. 33 © Link and Motivation Group メトリクス・ダッシュボード自動化に求められる要件 全自動 リアルタイム性 変更容易性

    ダッシュボード要件 見たい時に見たい情報が得ら れないと、開発者は見る気を 無くす メトリクスを計測する事自体 が SRE の負担 (トイル) にな ってはならない メトリクスの具体的な計測方 法は、利用しているツールだ けでなく、開発組織の状況に よって常に変わる
  18. 35 © Link and Motivation Group 最近はメトリクス集計をする外部サービスもあるよね SRE 始めたての若い組織は、実績が足りないので 外部サービス

    (※お金掛かる) をうまく活用できるか、判断がつかない。 初めはタダで出来る範囲で 経験値を積んでからかなぁ...
  19. 36 © Link and Motivation Group Dashboard アーキテクチャ 収集 データ加工

    → 可視化 GitHub スプシ Google Sheets Google Looker Studio
  20. 37 © Link and Motivation Group Dashboard アーキテクチャ 収集 データ加工

    → 可視化 GitHub スプシ Google Sheets Google Looker Studio リードタイム デプロイ頻度 MTTR 変更障害率 毎日同期 (SQL みたいに) 1行 = 1レコード
  21. 38 © Link and Motivation Group Dashboard アーキテクチャ 収集 データ加工

    → 可視化 GitHub スプシ Google Sheets Google Looker Studio データの加工 (Excel芸) は不要 毎日同期
  22. 39 © Link and Motivation Group Dashboard アーキテクチャ 収集 データ加工

    → 可視化 GitHub スプシ Google Sheets Google Looker Studio ノーコードで ダッシュボード化 毎日同期
  23. 40 © Link and Motivation Group データの収集について Looker Studio は

    Google Sheets の1行を1レコードとして扱える。 ※ RDB の SQL みたいな感じ. タイトル 作成者 URL First commit Merged バグ修正 B さん https://… 2022-10- 23T02:00:00Z 2022-10-27T04:00:00Z リファクタ B さん https://… 2022-10- 26T04:00:00Z 2022-10-28T05:00:00Z Typo C さん https://… 2022-10- 28T05:00:00Z 2022-10-28T06:00:00Z 1行 = 1レコード 複数レコードから一つの統計値を算出する MEDIAN(4日, 2日, 1日) リードタイム = 2日
  24. 45 © Link and Motivation Group アプリ開発者の仕事 SRE 開発者 当然ですが、アプリ開発者は毎日すごく忙しい。

    リファクタリング 顧客要求の機能開発 日々の顧客対応 インシデント対応 生産性の改善活動
  25. 46 © Link and Motivation Group 遠い (苦手) 近い (得意)

    アプリケーション領域の改善 SRE アプリ開発者 インフラ CI / CD ブランチング モデル テストコード E2E テスト アプリコード メトリクス アプリケーション領域の改善には、開発者の協力が必須!
  26. 47 © Link and Motivation Group チーム間の断絶 開発チーム ⇔ SRE

    チーム 間の断絶! コミュニケーションパス が希薄 チームそれぞれの 仕事・目標の達成 が最優先 SRE だけでは 生産性向上できない
  27. 48 © Link and Motivation Group チーム間の断絶 開発チーム ⇔ SRE

    チーム 間の断絶! コミュニケーションパス が希薄 チームそれぞれの 仕事・目標の達成 が最優先 SRE だけでは 生産性向上できない 改善の為の明確な チーム・役割・責務を決める
  28. 50 © Link and Motivation Group 各チームから協力者を選出 横断チームを結成する! 開発チーム A

    開発チーム B 開発チーム C 各ストリームアラインドチーム から活動に興味高そうな人を選出 各ストリームアラインドチーム から活動に興味高そうな人を選出 各ストリームアラインドチーム から活動に興味高そうな人を選出
  29. 51 © Link and Motivation Group 開発者のミッション・目標と結節 開発チーム A 開発チーム

    B 開発チーム C 事業部目標 個人目標 弊社の 2022/4Q の 事業部全体の目標に 生産性向上が入っていた ボランティアではなく 正式に個人の仕事にする
  30. 56 © Link and Motivation Group 障害が多発! 頑張ってヒアリングをするも、外からでは分からない事は多い! それぞれのチームで 何が原因で障害が増え

    ているんだろう? ヒアリングしてみたけ ど、いまいちはっきり しないぞ チームの一員になって 活動すると分かりそう!
  31. 60 © Link and Motivation Group 実際にあった怖い話 (リードタイム) とある PR

    を1ヶ月放置していた。 実装開始 1ヶ月前 1週前 放置期間 (※別件で忙しかった) 実装再開 (1ヶ月経って) やっと再開できるぞ!
  32. 61 © Link and Motivation Group 実際にあった怖い話 (リードタイム) 再開する際に気を効かせてくれて、PR (ブランチ)

    を作りなおす! 実装開始 1ヶ月前 PR を 作り直す 1週前 リリース 放置期間 (※別件で忙しかった) 実装再開 3日前 当日 リードタイム = 3日 !? (リードタイムの為に) PR を作りなおそう!
  33. 62 © Link and Motivation Group 実際にあった怖い話 (リードタイム) 再開する際に気を効かせてくれて、PR (ブランチ)

    を作りなおす! 実装開始 1ヶ月前 PR を 作り直す 1週前 リリース 放置期間 (※別件で忙しかった) 実装再開 3日前 当日 リードタイム = 3日 !? (リードタイムの為に) PR を作りなおそう! 「リードタイムを3日にする」 が目的になっている
  34. 64 © Link and Motivation Group リードタイム (値) が表す意味 リードタイムの定義は「First

    Commit → リリース」までの日数。 First Commit 5日前 1日前 リリース 一つの PR・Feature を リリースするのに掛かった日数 master マージ 当日 機能? プロジェクト?
  35. 65 © Link and Motivation Group リードタイム (値) が表す意味 実装

    機能 A 実装 リリース リリース 実装 リリース 実装 リリース 最近は、スモールリリース・Feature toggle という手があるよね。 リードタイム → 大 機能 B リードタイム → 小 リードタイム → 小 リードタイム → 小
  36. 66 © Link and Motivation Group リードタイム (値) が表す意味 実装

    機能 A 実装 リリース リリース 実装 リリース 実装 リリース 最近は、スモールリリース・Feature toggle という手があるよね。 リードタイム → 大 機能 B リードタイム → 小 リードタイム → 小 リードタイム → 小 リードタイムの単位は 「機能」ではなく「PR」である!
  37. 67 © Link and Motivation Group 1 PR PR 大

    vs 小 PR を小さくすると、レビュー&テスト品質が上がる。 1 PR 1 PR 1 PR 実装とその影響範囲を見きれず 設計観点のチェックになる コードの1行までレビューできる 変更影響の特定が難しく、 全件リグレッションテストが多発 変更に対し最小のテストを実施 ✅ ✅ ❌ ❌
  38. 68 © Link and Motivation Group PR 大 vs 小

    巨大な PR あるある コードがコンフリクトして大変 A がマージされないと B がテスト開始できない リリース日程調整でコミュニケーションコスト高
  39. 69 © Link and Motivation Group PR 大 vs 小

    PR が十分に小さいと... コンフリクトしない / しても簡単に直すだけ 自分の Feature のテストだけしたらいい リリース日程調整は不要
  40. 71 © Link and Motivation Group リードタイム短縮の目的 障害を減らしたい リリースの複雑性 を減らしたい

    スモールリリース・Feature toggle をする リードタイム ≦ 3日 目的 手段 目標 ※ 弊社の開発組織のケースでの一例です。 全ての開発組織で一概にそうとは限りません。 ① ②
  41. 72 © Link and Motivation Group リードタイム短縮の目的 障害を減らしたい リリースの複雑性 を減らしたい

    スモールリリース・Feature toggle をする リードタイム ≦ 3日 目的 手段 目標 目的に立ち戻る為に 繰り返し伝える!
  42. 73 © Link and Motivation Group e.g. Rails アップデート ビッグバンリリース

    ※ リリースめちゃ怖〜 スモールリリース PR 数 変更ファイル / PR 1〜2 PR(s) 100 files PR 数 変更ファイル / PR 80 PR(s) 1〜2 files 弊社 Rails アップデートの今と昔。
  43. 74 © Link and Motivation Group e.g. Rails アップデート 小さな互換性のあるリリースを繰り返す。

    互換 リリース 1回目 80回目 最終 リリース 新・旧 どちらの Rails Version でも動く 互換コードを先行リリースする 互換 リリース 最後の1回 最後にやっと Rails の Version を上げる + 一部の非互換コード ・・・ (スモールリリース) ・・・ x8 0 ・・・
  44. 77 © Link and Motivation Group 開発者みんなで「協働」して改善を進める為に 1 2 3

    メトリクス集計は自動化&ダッシュボード化しよう! 改善活動の横断チームを作り、ちゃんと仕事化 (目標) する! 数値を追うのではなく、目的・目指す姿を明確にしよう!
  45. 78 © Link and Motivation Group 開発者体験 = 幸せ が高い組織

    「理想の姿」を証明する為の「数値」であれ スピード・気軽さ リリースの複雑さ 品質の高さ • リリース調整「〜はい つ出す?」は大変 • 一つ遅れると、全部再 調整! • 小さな改善をすぐにリ リースできる • リリース承認等のプロ セスで時間が掛かる • 障害が発生すれば、対 応にコストを払う • 気軽なリリースができ なくなる
  46. 79 © Link and Motivation Group 開発者体験 = 幸せ が高い組織

    「理想の姿」を証明する為の「数値」であれ スピード・気軽さ リリースの複雑さ 品質の高さ • リリース調整「〜はい つ出す?」は大変 • 一つ遅れると、全部再 調整! • 小さな改善をすぐにリ リースできる • リリース承認等のプロ セスで時間が掛かる • 障害が発生すれば、対 応にコストを払う • 気軽なリリースができ なくなる 速度 安定性 表裏一体 開発メトリクス
  47. 80 © Link and Motivation Group 開発者体験 = 幸せ が高い組織

    「理想の姿」を証明する為の「数値」であれ スピード・気軽さ リリースの複雑さ 品質の高さ • リリース調整「〜はい つ出す?」は大変 • 一つ遅れると、全部再 調整! • 小さな改善をすぐにリ リースできる • リリース承認等のプロ セスで時間が掛かる • 障害が発生すれば、対 応にコストを払う • 気軽なリリースができ なくなる 速度 安定性 表裏一体 開発メトリクス 理想の姿へどの位到達したか メトリクス = 達成指標
  48. 82 © Link and Motivation Group お知らせ • エンジニアリングマネージャー •

    プロダクトマネージャー • テックリード • サーバーサイドエンジニア • フロントエンドエンジニア • SRE • QAエンジニア • データエンジニア • CRM • UXデザイナー 週1でテックブログを更新中! まずはカジュアルにお話しましょう! 積極採用中です!