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
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
Search
yumu
September 26, 2025
0
300
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
yumu
September 26, 2025
Tweet
Share
More Decks by yumu
See All by yumu
影響を広げる力研修 GMOペパボ2025新卒エンジニア研修
yumu
0
57
分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜 関西Ruby会議08
yumu
1
1.1k
Ruby×AWSで作る動画変換システム 東京Ruby会議12
yumu
2
3.4k
Google Cloudで作るニアリアルタイムアクセス解析基盤 GDG DevFest Tokyo 2024 LT
yumu
0
3.4k
アクセス解析基盤のデータストア選定奮闘記 CloudNative Days Winter 2024 船上LT会
yumu
0
200
minneのShoryuken活用 Kaigi on Rails 2024 スポンサーLT
yumu
3
2k
Rubyでも動画変換簡単にできるよ TokyuRuby会議15スポンサーLT
yumu
0
150
文系の私が新卒エンジニアになるまで
yumu
3
1k
Featured
See All Featured
Navigating Team Friction
lara
189
15k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
A Modern Web Designer's Workflow
chriscoyier
697
190k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
GitHub's CSS Performance
jonrohan
1032
460k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
Into the Great Unknown - MozCon
thekraken
40
2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
A designer walks into a library…
pauljervisheath
208
24k
Transcript
Railsアプリから何を切り出す? 機能分離の判断基準 yumu 2025.09.27 Kaigi on Rails 2025 1
2 自己紹介 GMOペパボ minne事業部 プロダクト開発チーム yumu(湯村 美吹香) 新卒3年目、エンジニア5年目、Rubyist5年目 バックエンド > インフラ >>>
フロント 昨年のKoRでスポンサーLTをしました。 💎 推しのgem : Shoryuken(ロゴ募集中) 💎 推しの漫画 : メイドインアビス 💎 X : @myumura3
3 minneとは 作家・ブランド数 95万件以上 登録作品数 1800万件以上 リリース 13年目 アプリ ダウンロード数
1500万以上
4 minneのアーキテクチャ(ものすごくざっくり) minne-app minne-web-front minne-auth
5 minneのアーキテクチャ(ものすごくざっくり) minne-app minne-web-front minne-auth
大規模ECサイトでの現実 6 開発速度の低下 DBパフォーマンス の悪化 コードベースの 複雑化 6
7 こんな迷いを抱えたことはありませんか? この機能、切り出した 方がいいのかな?
実際に分離した/分離を検討した機能の一部 88 • 動画変換機能 → Shoryuken workerサービス化 • アナリティクス機能 →
Cloud Run Functions化 • リワード広告機能 → Lambda関数化 • サブスクリプション機能 → 分離見送り Ruby×AWSで作る動画変換システム Google Cloudで作るニアリアルタイムアクセス解析基盤
今日お話しすること 99 実践的な判断基準
今日お話しすること 10 10 1. 背景と課題 • なぜ機能分離が必要になったか 2. 5つの判断軸 •
実践的なフレームワーク 3. 実践事例 • 成功・失敗パターンの分析 4. まとめ • 考え方のポイント
11 5つの判断軸
5つの判断軸 12 12 1. ビジネスロジックとの関連度 2. 他インフラリソースとの依存関係 3. 機能の複雑さ 4.
運用コスト vs 開発スピード 5. ビジネス上の柔軟性が求められるか
5つの判断軸 13 13 軸1: ビジネスロジックとの関連度 高関連(分離避ける) 低関連(分離候補) • コア機能(商品管理・注文・決済) •
複数テーブル・モデルとの強い関連 • 技術的処理(動画変換) • 分析系(アクセス解析) 事例: サブスクリプション機能 ✍ ユーザーの権限制御・決済処理...との関連が強く分離見送り
5つの判断軸 14 14 軸2: 他インフラリソースとの依存関係 強依存(分離困難) 弱依存(分離可能) • MySQLの直接参照が必要 •
認証基盤への依存 • S3経由でのデータ受け渡し • API経由での疎結合 • MySQL以外のDBを使用 事例: 動画変換機能 ✍ S3・SQS経由で処理完結、ビジネスロジックとも無関係で分離
5つの判断軸 15 15 軸3: 機能の複雑さ 複雑(要検討) シンプル(分離しやすい) • 複数サービス連携 •
データフローが複雑 • 単一責任で外部依存少 事例: アナリティクス機能 ✍ 行動ログの集計を行うシンプルな機能。Cloud Run Functionsとして分離
事例: リワード広告機能 ✍ 運用コストは増加したが、適切な技術スタックが選択可能に 5つの判断軸 16 16 軸4: 運用工数 vs 開発スピード
運用コスト重視(分離リスク高) 開発スピード重視(分離メリット大) • 複数デプロイパイプライン管理 • 分散したログ・監視 • 独立したリリースサイクル • 技術スタック選択の自由
事例: リワード広告機能 ✍ 運用コストは増加したが、適切な技術スタックが選択可能に 5つの判断軸 17 17 軸4: 運用コスト vs 開発スピード
運用コスト重視(分離リスク高) 開発スピード重視(分離メリット大) • 複数デプロイパイプライン管理 • 分散したログ・監視 • チーム対応力不足 • 独立したリリースサイクル • 技術スタック選択の自由 「コンウェイの法則」 組織構造とシステム構造のミスマッチ
5つの判断軸 18 18 軸5: ビジネス上の柔軟性が求められるか 求められない(分離メリット小) 求められる(分離メリット大) • 単純な機能改善で十分 •
単一用途のみ • 切り捨て可能性が重要 • 他サービスでも活用したい 事例: 動画変換機能 ✍ 他サービスでも活用可能なシステム
判断マトリックス 19 19 判断軸 分離推奨 要検討 分離避ける ビジネス関連度 低 中
高 インフラ依存 弱 中 強 複雑さ シンプル 中 複雑 運用コスト vs 開発スピード 開発スピード重視 バランス 運用コスト重視 ビジネス上の柔軟性 求められる 中程度 求められない 3つ以上が 分離推奨 👉 積極的に検討 2つ以上が 分離避ける 👉 慎重に判断
20 実践事例
21 実践事例① 成功パターン 動画変換機能 ・ アナリティクス機能 💡 Railsアプリケーションの複雑性緩和 ・ 他サービスで活用可能 判断軸
分離推奨 要検討 分離避ける ビジネス関連度 低 中 高 インフラ依存 弱 中 強 複雑さ シンプル 中 複雑 運用コスト vs 開発スピード 開発スピード重視 バランス 運用コスト重視 ビジネス上の柔軟性 求められる 中程度 求められない
22 実践事例② 要注意パターン リワード広告機能 💡 想定より複雑 ・ 運用コストとのトレードオフだが柔軟性重視で分離継続 判断軸 分離推奨 要検討
分離避ける ビジネス関連度 低 中 高 インフラ依存 弱 中 強 複雑さ シンプル 中 複雑 運用コスト vs 開発スピード 開発スピード重視 バランス 運用コスト重視 ビジネス上の柔軟性 求められる 中程度 求められない
23 実践事例③ 分離回避パターン サブスクリプション機能 💡 分離見送り ・ Railsアプリケーション内で最適化 判断軸 分離推奨 要検討
分離避ける ビジネス関連度 低 中 高 インフラ依存 弱 中 強 複雑さ シンプル 中 複雑 運用コスト vs 開発スピード 開発スピード重視 バランス 運用コスト重視 ビジネス上の柔軟性 求められる 中程度 求められない
24 まとめ
【再掲】5つの判断軸 25 25 1. ビジネスロジックとの関連度 2. 他インフラリソースとの依存関係 3. 機能の複雑さ 4.
運用コスト vs 開発スピード 5. ビジネス上の柔軟性が求められるか
考え方のポイント 26 26 • 完璧な分離はなかなかない。トレードオフを理解して判断 • チームの状況によって各軸の重みは変わる • 分離された機能はAIが理解・活用しやすい •
失敗から学び、判断基準を磨く
27 Thank You! Thank You!