Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
LM - SRE はこうやって 開発生産性と戦います 株式会社 Link & Motivation SRE - 川津 雄介
Slide 2
Slide 2 text
● 前職は某複写機メーカーでエンジニアして ました ● 現職では SRE ● FE→BE→OS→インフラ 全部やりたい派 ● 採用活動もしてます 自己紹介 https://github.com/megmogmog1965 https://qiita.com/megmogmog1965
Slide 3
Slide 3 text
今日のテーマ SRE の言う「開発生産性」って何? 03 01 02 どうやって改善項目を決めるの? LM流・改善を成果に繋げるには (布教活動) しくみ
Slide 4
Slide 4 text
01 SRE の言う「開発生産性」って何?
Slide 5
Slide 5 text
そもそも LM の開発体制は? 開発チームはミッシ ョンで分けます。 SRE は開発室を 横断する! 新規顧客獲得の為の 機能開発チームとか
Slide 6
Slide 6 text
開発あるある...
Slide 7
Slide 7 text
最近リリース 速くなったね! 開発者
Slide 8
Slide 8 text
(特に何も変わって ないけど..?) 開発者
Slide 9
Slide 9 text
開発者 最近開発 遅くない?
Slide 10
Slide 10 text
(頑張って前より沢 山開発してるんだけ どなぁ...) 開発者
Slide 11
Slide 11 text
感覚じゃなくて... ものさし (指標) が必要
Slide 12
Slide 12 text
生産性指標 = 4 Key Metrics デプロイ頻度 本番環境へのリリースの頻度 (回) ※「20 回/週」とか! リードタイム 初回の git commit から、そのコ ードが本番デプロイされるまでの 時間 ※「5日」とか! 本番環境で発生した障害から 復旧するまでの時間 ※「平均 120 分」とか! MTTR 本番へのリリース回数に対して、 障害が発生した割合 (%) ※「15%」とか! 変更障害率
Slide 13
Slide 13 text
開発のスピードを表す Metrics デプロイ頻度 本番環境へのリリースの頻度 (回) ※「20 回/週」とか! リードタイム 初回の git commit から、そのコ ードが本番デプロイされるまでの 時間 ※「5日」とか! 本番環境で発生した障害から 復旧するまでの時間 ※「平均 120 分」とか! デプロイ頻度 本番へのリリース回数に対して、 障害が発生した割合 (%) ※「15%」とか! 変更障害率
Slide 14
Slide 14 text
品質が損なわれていないか Metrics デプロイ頻度 本番環境へのリリースの頻度 (回) ※「20 回/週」とか! リードタイム 初回の git commit から、そのコ ードが本番デプロイされるまでの 時間 ※「5日」とか! 本番環境で発生した障害から 復旧するまでの時間 ※「平均 120 分」とか! MTTR 本番へのリリース回数に対して、 障害が発生した割合 (%) ※「15%」とか! 変更障害率
Slide 15
Slide 15 text
バランスが重要 品質を犠牲にすれば スピードは簡単に上げられる
Slide 16
Slide 16 text
02 どうやって改善項目を決めるの?
Slide 17
Slide 17 text
State of DevOps Report - 2021 High/Mid/Low Performaer の分類 一般的な目標値のランク
Slide 18
Slide 18 text
私達は今どのレベルにいるのかな? LM での High/Mid-*/Low の独自解釈版
Slide 19
Slide 19 text
例えば昔...
Slide 20
Slide 20 text
デプロイ頻度を上げたい
Slide 21
Slide 21 text
BEFORE…
Slide 22
Slide 22 text
元々 EB を手でデプロイしてた EB 沢山あるよ〜 3時間かかる... リリース担当者 が決まってて 誰でもできない EB EB EB EB EB EB EB EB EB EB ミスったら...
Slide 23
Slide 23 text
AFTER !!
Slide 24
Slide 24 text
コンテナ化 (ECS) しました EB ECS
Slide 25
Slide 25 text
All Terraform 化もしました ※ 実はその前は AWS CDK (TypeScript) を使ってた
Slide 26
Slide 26 text
堅牢性・透明性の担保 静的なコード ● HCL はほぼ「設定ファイル」 ● プログラムコードの様な難しさが 無い 変更箇所が明確 ● `terraform plan` で、変更箇所が明確に分かる ● 「やってみないと分からなくて怖い...」が無い
Slide 27
Slide 27 text
Github / CodeBuild CI でデプロイ自動化 Master マージ で自動デプロイ Blue / Green にした Blue / Green にした
Slide 28
Slide 28 text
そして次は...
Slide 29
Slide 29 text
リードタイムを上げたい
Slide 30
Slide 30 text
BEFORE…
Slide 31
Slide 31 text
この木、なんの木? 「マージ待ち、お見合い行列の木」
Slide 32
Slide 32 text
開発組織が拡大する → 複雑化 ● Master マージすると自動デプロイされるから、気軽にマージできない ● 「明日だれがリリースする?」「もうリリースブランチ(PR)作った?」
Slide 33
Slide 33 text
AFTER !!
Slide 34
Slide 34 text
(作業を〜ではなく) プロセスを自動化します
Slide 35
Slide 35 text
Git-flow にしたよ!
Slide 36
Slide 36 text
自動でリリース担当に通知 (依頼) 朝 7:00 に Slack に自動で来る ※ Feature Flags も導入してます
Slide 37
Slide 37 text
リリース用の Github PR も自動で 朝 7:00 に PR 自動で作られる
Slide 38
Slide 38 text
ステージングデプロイ → 自動テスト ステージング環境 自動デプロイ 自動テスト
Slide 39
Slide 39 text
Release ver の git tag も自動で Feature リリースなら Minor ver が上がる Hotfix リリースなら Patch ver が上がる
Slide 40
Slide 40 text
Github Actions で実現 Git 周りの自動化は Github Actions でほぼ完結します
Slide 41
Slide 41 text
03 改善を成果に繋げるには
Slide 42
Slide 42 text
仕組みは、作った後の 布教活動が重要!
Slide 43
Slide 43 text
どうやって布教するか? 1. 全体の場で「意義・メリット」を布教! 2. 各チームに「伝道者」 (※相談人) を作る!
Slide 44
Slide 44 text
最後に... 計測 → 改善 のサイクル 計測 今現在の最大の ボトルネックは どこか? 改善 特定した課題をどう 「仕組み」で解決 するか?
Slide 45
Slide 45 text
THANKS 私達、株式会社 Link & Motivation は 一緒に働く新しい仲間を募集しています! 応募ページはこちら!