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
2
1.9k
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
yumu
September 26, 2025
Tweet
Share
More Decks by yumu
See All by yumu
影響を広げる力研修 GMOペパボ2025新卒エンジニア研修
yumu
0
61
分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜 関西Ruby会議08
yumu
1
1.1k
Ruby×AWSで作る動画変換システム 東京Ruby会議12
yumu
2
3.4k
Google Cloudで作るニアリアルタイムアクセス解析基盤 GDG DevFest Tokyo 2024 LT
yumu
1
3.5k
アクセス解析基盤のデータストア選定奮闘記 CloudNative Days Winter 2024 船上LT会
yumu
0
200
minneのShoryuken活用 Kaigi on Rails 2024 スポンサーLT
yumu
3
2.1k
Rubyでも動画変換簡単にできるよ TokyuRuby会議15スポンサーLT
yumu
0
150
文系の私が新卒エンジニアになるまで
yumu
4
1.1k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
What's in a price? How to price your products and services
michaelherold
246
12k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Optimizing for Happiness
mojombo
379
70k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Done Done
chrislema
185
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
A Tale of Four Properties
chriscoyier
160
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Designing Experiences People Love
moore
142
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!