Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スタートアップにおける、チーム拡大を見据えたコンポーネント分割の取り組み
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryunosuke Iwai
November 21, 2023
Technology
3
4.1k
スタートアップにおける、チーム拡大を見据えたコンポーネント分割の取り組み
@技術的負債に向き合うOnline Conference
https://findy.connpass.com/event/297813/
Ryunosuke Iwai
November 21, 2023
Tweet
Share
More Decks by Ryunosuke Iwai
See All by Ryunosuke Iwai
A2Aのクライアントを自作する
rynsuke
1
470
2024/08/19 PEK Recap | データで振り返るPEK2024
rynsuke
2
370
バッチ処理のSLOをどう設計するか
rynsuke
11
2k
Error Tracking for Logsを用いたバッチ処理のエラー監視
rynsuke
3
2.2k
Notionではじめるライフハックのススメ
rynsuke
24
1.9k
「Datadog入れてみたらAWSの料金が爆発した話」@ゆるSRE勉強会 #1
rynsuke
12
12k
LLM Meetup Tokyo #2 手続きを記憶するコマンド型エージェントの実装
rynsuke
3
3.5k
Other Decks in Technology
See All in Technology
スピンアウト講座06_認証系(API-OAuth-MCP)入門
overflowinc
0
1k
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
420
SSoT(Single Source of Truth)で「壊して再生」する設計
kawauso
2
320
LINEヤフーにおけるAIOpsの現在地
lycorptech_jp
PRO
5
2.2k
「捨てる」を設計する
kubell_hr
0
220
SLI/SLO 導入で 避けるべきこと3選
yagikota
0
150
Escape from Excel方眼紙 ~マークダウンで繋ぐ、人とAIの架け橋~ /nikkei-tech-talk44
nikkei_engineer_recruiting
0
190
脳が溶けた話 / Melted Brain
keisuke69
1
880
1GB RAMのラズピッピで何ができるのか試してみよう / 20260319-rpijam-1gb-rpi-whats-possible
akkiesoft
0
860
君はジョシュアツリーを知っているか?名前をつけて事象を正しく認識しよう / Do you know Joshua Tree?
ykanoh
4
120
SaaSに宿る21g
kanyamaguc
2
150
Kiro Meetup #7 Kiro アップデート (2025/12/15〜2026/3/20)
katzueno
2
240
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
110
Building AI with AI
inesmontani
PRO
1
820
Tell your own story through comics
letsgokoyo
1
870
Measuring & Analyzing Core Web Vitals
bluesmoon
9
790
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
770
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
460
Automating Front-end Workflow
addyosmani
1370
200k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
200
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.5k
For a Future-Friendly Web
brad_frost
183
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Transcript
スタートアップにおける、チーム拡⼤を⾒ 据えたコンポーネント分割の取り組み @技術的負債に向き合うOnline Conference Cloudbase 株式会社 岩井⿓之介 / @ryuke
株式会社メルカリ Microservices Platform CI/CD @ryuke 岩井 ⿓之介 Cloudbase株式会社 Scanner &
Platform チーム Go / terraform / Datadog 前職 現在 SNS https://twitter.com/i_ryuke
None
https://cloudbase.ink/
システム構成
組織‧プロダクトの成⻑に伴って⽣じてきた課題 • チーム(エンジニア+デザイナー+PdM)が9⼈になり、1チームでコミュニ ケーションを取るのが徐々に難しくなってきた • 要求されるドメイン知識や関⼼事が、コンポーネントごとに⼤きく異な り、メンバーの認知負荷が⾼い
組織‧プロダクトの成⻑に伴って⽣じてきた課題 • チーム(エンジニア+デザイナー+PdM)が9⼈になり、1チームでコミュニ ケーションを取るのが徐々に難しくなってきた • 要求されるドメイン知識や関⼼事が、コンポーネントごとに⼤きく異な り、メンバーの認知負荷が⾼い → チーム分割へ
Team Topologies • コンウェイの法則 = ソフトウェアアーキテク チャと組織構造の間には「同型⼒」が働く • ソフトウェアの⾃然な境界 =
節理⾯ でチームを分割する マシュー・スケルトン (著), マニュエル・パイス (著), 原田 騎郎 (翻訳), 永 瀬 美穂 (翻訳), 吉羽 龍太郎 (翻訳)『チームトポロジー 価値あるソフト ウェアをすばやく届ける適応型組織設計』日本能率協会マネジメントセン ター, 2021
システムの要素を整理する お客様のクラウド環境から取得 した構成情報を元にセキュリ ティリスクを分析し、データ ベースに保存した結果をSaaS上 で表⽰する
システムの要素を整理する お客様のクラウド環境から取得 した構成情報を元にセキュリ ティリスクを分析し、データ ベースに保存した結果をSaaS上 で表⽰する
システムの要素を整理する 取得 分析 保存 表示 インフラ Step Functions Step Functions
Step Functions ECS Service + Vercel 言語 Go Go NodeJS NodeJS ドメイン クラウド セキュリティ SaaS SaaS 関心事 データの正確性 データの正確性 データの正確性 顧客体験 変更のケイデン ス 低速 (機能開発的) 低速 (機能開発的) 低速 (機能開発的) 高速 (仮説検証的)
システムの要素を整理する 取得 分析 保存 表示 インフラ Step Functions Step Functions
Step Functions ECS Service + Vercel 言語 Go Go NodeJS NodeJS ドメイン クラウド セキュリティ SaaS SaaS 関心事 データの正確性 データの正確性 データの正確性 顧客体験 変更のケイデン ス 低速 (機能開発的) 低速 (機能開発的) 低速 (機能開発的) 高速 (仮説検証的)
システムの要素を整理する 取得 分析 保存 表示 インフラ Step Functions Step Functions
Step Functions ECS Service + Vercel 言語 Go Go NodeJS NodeJS ドメイン クラウド セキュリティ SaaS SaaS 関心事 データの正確性 データの正確性 データの正確性 顧客体験 変更のケイデン ス 低速 (機能開発的) 低速 (機能開発的) 低速 (機能開発的) 高速 (仮説検証的) Scanner Application
得られた結果 • 結果として、お客様との接点でプロダクトを磨き込むStream-Aligned的なチー ム(Application)と、⼟台となるデータ基盤を提供し前線のチームの認知負荷 を取り除くPlatform的なチーム(Scanner)に分離 😄 チームサイズが下がったことでチーム内のコミュニケーションも密に 😄 ドメインが分割されたことで各チームの認知負荷も下がった 😄
前線のチームがより⾼速に仮説検証を回せるようになった
Fin.
本当にこれでよかったのか...?
よく⾒ると...? 取得 分析 保存 表示 インフラ Step Functions Step Functions
Step Functions ECS Service + Vercel 言語 Go Go NodeJS NodeJS ドメイン クラウド セキュリティ SaaS SaaS 関心事 データの正確性 データの正確性 データの正確性 顧客体験 変更のケイデン ス 低速 (機能開発的) 低速 (機能開発的) 低速 (機能開発的) 高速 (仮説検証的) Scanner Application
よく⾒ると...? 取得 分析 保存 表示 インフラ Step Functions Step Functions
Step Functions ECS Service + Vercel 言語 Go Go NodeJS NodeJS ドメイン クラウド セキュリティ SaaS SaaS 関心事 データの正確性 データの正確性 データの正確性 / 顧客体験 顧客体験 変更のケイデン ス 低速 (機能開発的) 低速 (機能開発的) 低速 (機能開発的) 高速 (仮説検証的) Scanner Application
境界の曖昧なコンポーネントが発⽣していた
境界の曖昧なコンポーネントが発⽣していた Application Scanner
曖昧なチーム境界が引き起こす課題 • Loaderに両チームの様々なロジックが混在 ◦ S3からのデータの取得、前回スキャン結果との差分の計算、DBへの永続化、差 分の通知、... ◦ 徐々に「誰も怖くて触れない」コンポーネントに • Scannerの最終成果物が、RDSに保存されている
◦ DBの共通所有によるチーム間コミュニケーションコスト、所有権の曖昧さ ◦ Scannerのテストスコープが肥⼤化
曖昧なチーム境界が引き起こす課題 • Loaderに両チームの様々なロジックが混在 ◦ S3からのデータの取得、前回スキャン結果との差分の計算、DBへの永続化、差 分の通知、... ◦ 徐々に「誰も怖くて触れない」コンポーネントに • Scannerの最終成果物が、RDSに保存されている
◦ DBの共通所有によるチーム間コミュニケーションコスト、所有権の曖昧さ ◦ Scannerのテストスコープが肥⼤化 → Loaderを分割することで、RDSよりも良い境界を⾒つけられないか?
モノリスからマイクロサービスへ • データとロジックのオーナーシップを揃える ことで、何を共有して何を隠すかを決められ るようにする • サービスの分割は段階的に⾏う (モジュラーモノリス) Sam Newman
(著), 島田 浩二 (翻訳)『モノリスからマイクロサービスへ ―モノリ スを進化させる実践移行ガイド』オライリージャパン , 2020
Loaderを分割していく
1. コンポーネントの構造は維持したまま、中の実装だけを分割 interface = 契約
2. データとロジックの境界を揃える interface = 契約
3. 将来的には、コンポーネントとして分割していく interface = 契約
得られた結果 • 現在はまだ「1. 中の実装だけを分割」の状態 😄 ロジックのオーナーシップが整理された 😄 DBより⼿前の段階でデータを検証できるようになった 😄 インターフェースを切ったことで、期待される出⼒が明確になった
• 「切り込み」に留めておくことで、変化に柔軟に対応できる形に ◦ インターフェースを調整しながら固めていける、⼿戻りしやすい ◦ データの不整合といった難しい問題に対処せずに済む
Key Messages:チーム分割において気をつけるべきポイント • チームとシステムの境界のずれに、技術的負債が発⽣することがある 所有権の曖昧なロジックが詰め込まれ、メンテ性が低下しやすい • ソフトウェアの⾃然な境界 = 節理⾯でチーム‧システムを分割する ⼀度決めたら終わりではなく、常により良い節理⾯を模索していく
• 「システムの切り込み」から始める 変化に対応しつつ、少しずつインターフェースを固めていく
ク ラ ウ ド 運 ⽤ を 安 全 に