多層アーキテクチャとは
多層アーキテクチャは、
ソフトウェアを機能ごとに複数の層に分割し、各層を独立した
モジュールとして開発・保守する
ソフトウェアアーキテクチャパターンです。各層は明確なインターフェースを持ち、互いに連携することでシステム全体を構成します。この構造により、特定の層のみを独立して変更したり、異なるプラットフォーム上で動作させることが可能になり、
ソフトウェアの柔軟性や保守性が向上します。
多層アーキテクチャの起源と変遷
多層アーキテクチャの概念は、Rational社によって提唱された「三層(three-tier)」という用語や、「多層アーキテクチャ」という用語が起源とされています。一般的に、
tier は物理的に異なるサーバを指し、
layer は
ソフトウェア上の役割分担を指すと解釈されることが多いですが、
英語の
tier が
ソフトウェア的な役割分担を意味する場合もあり、その定義は曖昧です。また、時代と共にその意味合いは変化しており、例えばマーティンファウラー氏がまとめた書籍「アナリシスパターン」 (1996)と「エンタープライズアプリケーションアーキテクチャパターン」(2002)では、用語の定義に違いが見られます。さらに、AAG(2009)は、AAfN(2003)の改訂版であるように、多層アーキテクチャの概念は常に進化しています。
多層アーキテクチャの例
多層アーキテクチャは、
クライアントサーバモデルの一種であり、アプリケーションが複数の
ソフトウェアエージェントによって実行される構成です。例えば、ユーザーからのデータ要求に応じて、
ミドルウェアを介して
データベースにアクセスするアプリケーションは多層アーキテクチャの典型的な例です。特に、三層アーキテクチャはその代表的な例として知られています。
三層アーキテクチャ
クライアントサーバモデルにおける三層アーキテクチャは、以下の3つの層で構成されます。
1.
プレゼンテーション層: ユーザーインターフェースを提供する層で、デスクトップPCや
ワークステーション上でGUIを用いて操作するのが一般的です。
2.
ビジネスロジック層: アプリケーションのビジネスルールを実装する層で、
ワークステーションや
アプリケーションサーバ上で動作します。この層は複数の
モジュールで構成されることもあります。
3.
データ層:
データベースやデータアクセスを管理する層で、サーバや
メインフレーム上のRDBMSが使用されます。
中間層(ビジネスロジック層)自体が多層化されることもあります。
MVCアーキテクチャとの比較
多層アーキテクチャとMVCアーキテクチャは、一見似ているように見えますが、トポロジーや適用分野が異なります。
多層アーキテクチャ は、プレゼンテーション層とデータ層が直接通信せず、必ず中間層を経由するという原則を持っています。そのため、多層アーキテクチャは直線的な情報経路を表します。
一方、
MVCアーキテクチャ は、Model、View、Controllerの3つが相互に通信する三角形の構造を持っています。MVCは、ユーザインターフェースにおける画面上のコンポーネントの管理方法を定義します。つまり、多層アーキテクチャがシステム全体の情報経路を表現するのに対し、MVCは画面表示を構成する要素を管理するものです。MVCの概念は、多層アーキテクチャのアプリケーションでも利用されることがあります。
歴史的背景
三層アーキテクチャは
1990年代に、Webアプリケーションなどの
分散システムにおいて、クライアント、
ミドルウェア、
データベースがそれぞれ物理的に異なるプラットフォームで動作するようになったことで生まれました。一方、MVCは
1980年代に、1つの
ワークステーション上で動作するアプリケーションの仕組みとして生まれました。分散アプリケーションへの適用は後のこととなります。
Web開発での利用
Web開発の分野では、三層モデルはWebサイト、特に
電子商取引サイトの構成を説明するために用いられます。この場合、各層は以下のように定義されます。
プレゼンテーション層: 静的なコンテンツを提供するWebサーバ
中間層: 動的なコンテンツを生成する
アプリケーションサーバ(例:
Jakarta EEプラットフォーム)
データ層: データベースとその管理システム(例:RDBMS)
参考文献
本記事は、以下の参考文献を参考に作成されました。
Free On-line Dictionary of Computing
アナリシスパターン (1996) マーティンファウラー著
エンタープライズアプリケーションアーキテクチャパターン(2002) マーティンファウラー著
AAfN(2003)
AAG(2009)
関連項目
Webアプリケーション
ビジネスロジック
リッチインターネットアプリケーション (RIA)
クライアントサーバモデル
フロントエンド
Model View Controller (MVC)
SAP R/3(三層モデルを使用したクライアントサーバ型アプリケーションの例)
ポートとアダプタ