三層分離パターン
定義
ソフトウェアを以下の3層に分離する構造パターン:
アプリケーション層 ← ユースケース・オーケストレーション、DBトランザクション管理
ドメイン層 ← 業務ロジック・ドメインオブジェクト・ビジネスルール
インフラ層 ← DB・外部API・メッセージングの技術的実装
依存の方向:アプリ層 → ドメイン層 ← (インターフェース経由)インフラ層
なぜ重要か
- ドメイン層が技術的詳細(DBの種類、フレームワーク)に依存しなくなる
- 業務ロジックをテストするのにDBやHTTPが不要になる
- 層ごとに変更理由が分離される(SRP at architecture level)
適用場面
- 業務ロジックが複雑なシステム(CRUD主体なら過剰)
- 長期的に保守するシステム
関連概念
出典
現場で役立つシステム設計の原則(増田亨)第5〜6章