Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
4.9k
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
yumu
September 26, 2025
Tweet
Share
More Decks by yumu
See All by yumu
minneのショート動画基盤の設計と運用改善 カバーとGMOペパボが語る、クリエイターの創作・表現活動を支える技術
yumu
0
360
影響を広げる力研修 GMOペパボ2025新卒エンジニア研修
yumu
0
1.1k
分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜 関西Ruby会議08
yumu
1
1.3k
Ruby×AWSで作る動画変換システム 東京Ruby会議12
yumu
2
3.6k
Google Cloudで作るニアリアルタイムアクセス解析基盤 GDG DevFest Tokyo 2024 LT
yumu
1
3.6k
アクセス解析基盤のデータストア選定奮闘記 CloudNative Days Winter 2024 船上LT会
yumu
0
210
minneのShoryuken活用 Kaigi on Rails 2024 スポンサーLT
yumu
3
2.3k
Rubyでも動画変換簡単にできるよ TokyuRuby会議15スポンサーLT
yumu
0
160
文系の私が新卒エンジニアになるまで
yumu
4
1.2k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
120
Game over? The fight for quality and originality in the time of robots
wayneb77
1
59
Scaling GitHub
holman
464
140k
Making Projects Easy
brettharned
120
6.5k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
140
My Coaching Mixtape
mlcsv
0
6
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
62
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
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!