フロント Private API Controller Service モバイル アプリ 3rd Party Client Public API Controller Admin Controller Model 銀行等 人事労務 freee Rails App マイクロサービス 会計チーム モバイルチーム API チーム いくつかの チーム
• 機能をまたいで ActiveRecord Model の関連を作らない • ある機能Aの Backend Service 内部から別の機能Bに属するテーブルを読み書きす る場合は、Bの Backend Service を経由する • (超汎用的なテーブルなど例外はある) 17 Backend API と共に導入する制約
Model A1 Service A Model A2 Model A3 Web フロント モバイル アプリ 3rd Party Client Private API Controller Public API Controller Admin Controller Mobile API Controller API A
いくつかの チーム 機能 A Model A1 Service A Model A2 Model A3 Web フロント モバイル アプリ 3rd Party Client Private API Controller Public API Controller API チーム Admin Controller Mobile API Controller API A
Service B 機能 A Model A1 Service A Model A2 Model A3 Model B1 Model B2 Web フロント モバイル アプリ 3rd Party Client Private API Controller Public API Controller Admin Controller Mobile API Controller API A API B Controller が Service A に直接依存しないように描かれているが、API A の存在を強調するためにそう描いているだけで実際には Service A に 直接依存する。A から B についても同様。実際の構成要素のうち説明に関係のないものは省いている。
◦ Model のシリアライズ後の構造を定義 ◦ Model をその構造に変換 • ActiveRecord ◦ Model のデータを取得 ◦ 他の Model との関連を定義 30 脱 Rails Way の例 Serializer を使わないならどうするか ViewModel ViewModelBuilder Fetcher