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
© Chatwork 開発チームに オーナーシップを 委譲するという手法 プロダクト基盤開発部 尾崎 耕多 2022年04月22日 DevOpsDays Tokyo 2022
Slide 2
Slide 2 text
Profile ࣗݾհ Kouta Ozaki SRE DevOps Engineer Rust Engineer k_kinzal k_kinzal
Slide 3
Slide 3 text
前提の話 1 DevOpsDays Tokyo 2022
Slide 4
Slide 4 text
4 Chatworkとは ޮతʹใڞ༗Ͱ͖Δ άϧʔϓνϟοτ ࣄͷݟ͑ΔԽ͕Ͱ͖Δ λεΫཧ ݟམͱ͕͠ͳ͘ͳΔ ϑΝΠϧཧ ͍ͭͰձ͕ٞͰ͖Δ ϏσΦ/Ի௨
Slide 5
Slide 5 text
5 Chatworkは利用者数No.1*のビジネスチャット 3݄ ϦϦʔε 10ສࣾ ಥഁʂ 20ສࣾ ಥഁʂ 30ສࣾ ಥഁʂ ಋೖࣾ34ສ3000ࣾҎ্ʂ (202112݄࣌)
Slide 6
Slide 6 text
Chatworkと競合の機能リリース比較 6 Chatwork Aࣾ Bࣾ Cࣾ
Slide 7
Slide 7 text
ChatworkのPRのリリース数と開発チームの人数の相関 7 0 22.5 45 67.5 90 2014 2015 2016 2017 2018 2019 2020 2021 2022 ϦϦʔε ਓ
Slide 8
Slide 8 text
2010 Chatworkのチームの変遷 2011 2014 2017 2019 First Team Web1 Web2 Mobile PM PHP Scala SRE Secur Frontend 8
Slide 9
Slide 9 text
Project プロジェクト型の開発体制によるオーナーシップの欠如 9 PM PHP Frontend iOS Android Design
Slide 10
Slide 10 text
コミュニケーションパスの複雑化によるオーナーシップの欠如 10 Scala1 PHP1 PM PHP2 SRE Security Design Mobile Customer Support Scala2 CEO Frontend
Slide 11
Slide 11 text
チーム間のシステム共有によるオーナーシップの欠如 11 SRE PHP Scala1 Scala2 Scala10 PHP2 PHP1 Scala1 Scala2
Slide 12
Slide 12 text
12 前提のまとめ • 機能開発の速度はSaaSを提供している企業として重要 • しかしChatworkの開発速度をあげきれてない • 要因として職能組織としてスケールしたというのがあるかも その結果として開発のオーナーシップを取りづらくなった
Slide 13
Slide 13 text
開発速度を取り戻すための次世代開発基盤 2 DevOpsDays Tokyo 2022
Slide 14
Slide 14 text
次世代開発基盤のゴール 14 2025年の事業計画に合わせて 生産性を維持・向上できる プロダクトと組織を構築する
Slide 15
Slide 15 text
次世代開発基盤 15 Account Account Message Message Task Task File File ɹ PM ɹ Backend ɹ Frontend ɹ Mobile ɹ Design ɹ SRE 横断チーム
Slide 16
Slide 16 text
横断型のチームの必要性と構造 3 DevOpsDays Tokyo 2022
Slide 17
Slide 17 text
横断チームの必要性 17 セキュリティ 専門知識 全体最適 機能チームだけでは解決できない課題がある
Slide 18
Slide 18 text
横断チームの難しさ 18 Dev ユーザーに価値を届け続けること 横断チーム 目的 専門のミッションを達成すること 目的
Slide 19
Slide 19 text
横断チームの形 19 Dev GateKeeper Supporter PaaS Guild
Slide 20
Slide 20 text
横断チームの形 20 Dev GateKeeper • 専門領域に対して全オーナーシップを持つチーム • 開発チームからの依頼をベースに作業を行う • 専門知識の集約を行うため質の高いアウトプットを出しやすい • 代わりにチームのスケーラビリティを確保できないとボトルネックに なりやすい性質がある ゲートキーパー型のチーム
Slide 21
Slide 21 text
21 Dev PaaS • サービスを提供して専門領域のオーナーシップを持つチーム • ゲートキーパーと違い、APIをベースにしたコミュニケーション を行うためボトルネックが発生しづらい • エンジニア的に夢と希望に満ち溢れたチームの形 横断チームの形 社内PaaS型のチーム 夢って叶わないよね
Slide 22
Slide 22 text
22 Supporter Dev • 開発チームを支援するチーム • このチームは機能開発には関わらず、開発チームが機能開発の 全オーナーシップを持つ • 代わりに機能開発に必要なことを支援する • 知識 • 仕組み サポーター型のチーム 横断チームの形
Slide 23
Slide 23 text
23 Guild Dev • 開発チームの特定のロールの集まったバーチャルなチーム • このチームは機能開発には関わらず、開発チームが機能開発の全オー ナーシップを持つ • 横断的な課題の解決や、寄合所としてチーム間の情報共有や相談を行う • 完全にバーチャルな組織にすると推進力に欠ける可能性がある 横断チームの形 ギルド型のチーム
Slide 24
Slide 24 text
次世代開発基盤チームとしての選択 24 Dev Supporter • 開発者にオーナーシップを集約するという意味ではサポーター型の チームが適している • あくまでも現時点での方向性としての選択になる • 必要があれば他の形のチームを選択する可能性はある
Slide 25
Slide 25 text
DevOpsとガードレール 4 DevOpsDays Tokyo 2022
Slide 26
Slide 26 text
DevOpsとガードレール 26 Dev System Supporter 機能開発を行うのはあくまでも開発チーム。 サポーター型のチームは直接、機能開発をおこなってシステムを触ることはしない。
Slide 27
Slide 27 text
DevOpsとガードレール 27 Dev Supporter System Create Create DevOps & Guardrail Support & Feedback Monitor Guardrail
Slide 28
Slide 28 text
実際の取り組み 5 DevOpsDays Tokyo 2022
Slide 29
Slide 29 text
土台としてのAWSアカウントの整備 AWS master Audit App1 App2 App3 ҕৡ ҕৡ ࠪઃఆͷ༗ޮԽ ࠪϩάͷऩू AWSΞΧϯτͷ ࡞ Dev1 Dev2 Dev3 ԣஅνʔϜ1 ԣஅνʔϜ2 29
Slide 30
Slide 30 text
AWS DevOpsとしてのIaCのCD構築 GitHub Atlantis App1 App2 App2 横断チーム Create Dev Commit Apply 30
Slide 31
Slide 31 text
DevOpsとガードレールとしてのSSOとIaC化 GitHub master Dev SSO Provider App 横断チーム Commit Policy Login with SSO Sync Apply Create 31
Slide 32
Slide 32 text
Kubernetes DevOpsとしてArgoCDを使ったGitOpsの構築 ԣஅνʔϜ 32 GitHub Dev System Commit Sync Create ArgoCD
Slide 33
Slide 33 text
Kubernetes ガードレールとしてOPAでのマニフェスト制限 横断チーム Dev System Commit Create GitHub Conftest GitHub Pull Policy Commit Policy Apply 33 Gatekeeper
Slide 34
Slide 34 text
DevOpsとしてRDBの一時ユーザー発行 34 Vault Proxy Dev Create Temporary User Get User 横断チーム Create RDB
Slide 35
Slide 35 text
Kubernetes DevOpsとしてのRDBのスキーマ変更 35 Self Hoster Runner Change Schema GitHub Dev Run CI ԣஅνʔϜ Create RDB
Slide 36
Slide 36 text
取り組んだ結果どうなったか 36 • まずは開発者が”できる”ようになることを重視 • ガードレールはまだすべてを作りきれてない • 結果として今は開発チームがオーナーシップを発揮してる • もうちょっとフェーズが進むとガードレールがないことによ る失敗によって開発速度の低下が起きそうなのでガードレー ル作りちまちまやってく
Slide 37
Slide 37 text
時間があれば雑談 37 1. この道は正しいのかどうか • 開発チームに求められるスキルセットがえぐい • チームトポロジー • DevOpsパターン 2. 理想の組織として変化し続けるために必要な方法 3. Dev vs Ops 4. DevOpsはDev主導の方がうまくいく?
Slide 38
Slide 38 text
まとめ 6 DevOpsDays Tokyo 2022
Slide 39
Slide 39 text
まとめ 39 • 問題→要因→解決方法の選択→問題解決 • 問題解決の方法自体は何もすごいことはない • 泥臭くコツコツやってるだけ • 銀の弾丸はない • ベストプラクティスと呼ばれるものは優秀
Slide 40
Slide 40 text
まとめ 40 40
Slide 41
Slide 41 text
No content