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.4k
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
yumu
September 26, 2025
Tweet
Share
More Decks by yumu
See All by yumu
minneのショート動画基盤の設計と運用改善 カバーとGMOペパボが語る、クリエイターの創作・表現活動を支える技術
yumu
0
77
影響を広げる力研修 GMOペパボ2025新卒エンジニア研修
yumu
0
990
分散オブジェクトで遊ぼう!〜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.5k
アクセス解析基盤のデータストア選定奮闘記 CloudNative Days Winter 2024 船上LT会
yumu
0
200
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
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Context Engineering - Making Every Token Count
addyosmani
9
440
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
64
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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!