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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yumu
September 26, 2025
6.8k
2
Share
Railsアプリから何を切り出す?機能分離の判断基準 Kaigi on Rails 2025
yumu
September 26, 2025
More Decks by yumu
See All by yumu
minneのショート動画基盤の設計と運用改善 カバーとGMOペパボが語る、クリエイターの創作・表現活動を支える技術
yumu
0
610
影響を広げる力研修 GMOペパボ2025新卒エンジニア研修
yumu
0
1.9k
分散オブジェクトで遊ぼう!〜dRubyで作るマルチプレイヤー迷路ゲーム〜 関西Ruby会議08
yumu
1
1.7k
Ruby×AWSで作る動画変換システム 東京Ruby会議12
yumu
2
3.9k
Google Cloudで作るニアリアルタイムアクセス解析基盤 GDG DevFest Tokyo 2024 LT
yumu
0
3.8k
アクセス解析基盤のデータストア選定奮闘記 CloudNative Days Winter 2024 船上LT会
yumu
0
230
minneのShoryuken活用 Kaigi on Rails 2024 スポンサーLT
yumu
3
2.5k
Rubyでも動画変換簡単にできるよ TokyuRuby会議15スポンサーLT
yumu
0
180
文系の私が新卒エンジニアになるまで
yumu
4
1.4k
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
Fireside Chat
paigeccino
42
3.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
930
The Cult of Friendly URLs
andyhume
79
6.9k
Being A Developer After 40
akosma
91
590k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
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!