レイヤ化アーキテクチャ
同義 : レイヤアーキテクチャ、レイヤードアーキテクチャ
最も一般的なアーキテクチャスタイルのひとつ
n 層アーキテクチャとしても知られる
技術によって分割されたアーキテクチャ
UI 開発、バックエンド開発、ルール開発、データベース管理 (DBA) で組織が分かれている場合、自然な形 (Conway の法則)
変更がレイヤの中に閉じている場合は変更は容易
レイヤにまたがる場合 (特にレイヤごとの担当組織が異なる場合は) 変更が困難になる場合もある
主な利点は関心事の分離と独立
レイヤの数や種類に制限はない
一般的には次の 4 つ : プレゼンテーション層、ビジネス層、永続化層、データベース層
アーキテクチャシンクホールアンチパターンに注意
予算や時間の制約がある中で優れた選択肢
『iOS アプリ設計パターン入門』 より
1990 年代のクライアント/サーバーシステムの発展とともにレイヤーという概念が明確に
当初のレイヤーは物理的なレイヤーだった
nobuoka.icon ティアってやつだな
2003 年に Eric Evans が提唱したドメイン駆動設計により、ドメイン層が確立
ドメイン層がデータ層に依存することを避けるため、DIP によりデータ層がドメイン層に依存
参考文献
ソフトウェアアーキテクチャの基礎 ―― エンジニアリングに基づく体系的アプローチ
進化的アーキテクチャ ―― 絶え間ない変化を支える