マーチンファウラーの PoEAA ( Petterns of Enterprise Application Architecture ) の関心事の分離の戦略。
戦略というか、分離の定石かな?
レイヤ
最初の戦略兵器は「レイヤ」パターン。
これはお約束ですね。
Eric Evans の ドメイン駆動設計 ( DDD : Domain-Driven Design ) でも、まず、ドメインとそれ以外の関心事の分離の基本や「レイヤ」から。
ドメイン層
関心事の中心は、ドメイン層。ドメイン層から出発する。ドメイン駆動ですね。
ドメイン層の中で、さらに関心事を分離するパターンは、Evans の DDD が必読。
ビジネスパターンによるモデル駆動設計 や「アナリシスパターン」もビジネスの関心事を分離するパターンカタログとして、参考になりますね。
データソース層
次に進むのは、データソース層の課題。
ファウラーの PoEAA では、永続化、それも、リレーショナルデータベースとオブジェクトとのマッピング ( O-R マッピング ) にフォーカスしている。
ファウラー自身が PoEAA の「まえがき」で書いているように、アプリケーション連携、特に、メッセージングによる連携が、永続化とならぶ、重要な関心事。
メッセージングとアプリケーション連携のパターンカタログとしては、
EIP : Enterprise Integration Pattern
が参考になります。
データソース層のアーキテクチャパターンの実装は、オープンソースのフレームワークがいろいろ使える。
Webプレゼンテーション層
次の重要課題は、ユーザインタフェース、特にWebアプリケーションのプレゼンテーションの課題。
利用者から見たら、プレゼンテーション層だけが、ソフトウェアシステムの実体。
プレゼンテーション層のパターンの実装も、フレームワークとか、ライブラリがありますね。
データソース層に比べると、構造や振舞が、ぎこちないものが多く、未成熟な分野かな?
その他の関心事
PoEAA ではパターン化されていない主な関心事は、
・セキュリティ
・バリデーション
・エラー処理
・リッチクライアント
・クラスタリング
...
まあ、ここらへんは、自作することも多いし、Spring フレームワークや、オープンソースのライブラリが利用できる。(実際に動くパターンとして使える)
ドメイン駆動
基本は、ドメイン層中心。
他の関心事も、ドメインの概念や要求を中心に、設計、実装、検証をしていく。
結果的に、ドメイン以外のレイヤにも、ドメインの概念(用語)がたくさん登場する。
ユビキタス言語です。
アプリケーションのアーキテクチャ全体が、ドメイン駆動で、ユビキタス言語。
戦略というか、分離の定石かな?
レイヤ
最初の戦略兵器は「レイヤ」パターン。
これはお約束ですね。
Eric Evans の ドメイン駆動設計 ( DDD : Domain-Driven Design ) でも、まず、ドメインとそれ以外の関心事の分離の基本や「レイヤ」から。
ドメイン層
関心事の中心は、ドメイン層。ドメイン層から出発する。ドメイン駆動ですね。
ドメイン層の中で、さらに関心事を分離するパターンは、Evans の DDD が必読。
ビジネスパターンによるモデル駆動設計 や「アナリシスパターン」もビジネスの関心事を分離するパターンカタログとして、参考になりますね。
データソース層
次に進むのは、データソース層の課題。
ファウラーの PoEAA では、永続化、それも、リレーショナルデータベースとオブジェクトとのマッピング ( O-R マッピング ) にフォーカスしている。
ファウラー自身が PoEAA の「まえがき」で書いているように、アプリケーション連携、特に、メッセージングによる連携が、永続化とならぶ、重要な関心事。
メッセージングとアプリケーション連携のパターンカタログとしては、
EIP : Enterprise Integration Pattern
が参考になります。
データソース層のアーキテクチャパターンの実装は、オープンソースのフレームワークがいろいろ使える。
Webプレゼンテーション層
次の重要課題は、ユーザインタフェース、特にWebアプリケーションのプレゼンテーションの課題。
利用者から見たら、プレゼンテーション層だけが、ソフトウェアシステムの実体。
プレゼンテーション層のパターンの実装も、フレームワークとか、ライブラリがありますね。
データソース層に比べると、構造や振舞が、ぎこちないものが多く、未成熟な分野かな?
その他の関心事
PoEAA ではパターン化されていない主な関心事は、
・セキュリティ
・バリデーション
・エラー処理
・リッチクライアント
・クラスタリング
...
まあ、ここらへんは、自作することも多いし、Spring フレームワークや、オープンソースのライブラリが利用できる。(実際に動くパターンとして使える)
ドメイン駆動
基本は、ドメイン層中心。
他の関心事も、ドメインの概念や要求を中心に、設計、実装、検証をしていく。
結果的に、ドメイン以外のレイヤにも、ドメインの概念(用語)がたくさん登場する。
ユビキタス言語です。
アプリケーションのアーキテクチャ全体が、ドメイン駆動で、ユビキタス言語。