多層アーキテクチャ

多層アーキテクチャとは



多層アーキテクチャは、ソフトウェアを機能ごとに複数の層に分割し、各層を独立したモジュールとして開発・保守するソフトウェアアーキテクチャパターンです。各層は明確なインターフェースを持ち、互いに連携することでシステム全体を構成します。この構造により、特定の層のみを独立して変更したり、異なるプラットフォーム上で動作させることが可能になり、ソフトウェアの柔軟性や保守性が向上します。

多層アーキテクチャの起源と変遷



多層アーキテクチャの概念は、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(三層モデルを使用したクライアントサーバ型アプリケーションの例)
ポートとアダプタ

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。