3層アーキテクチャー

menu icon

3層アーキテクチャー

アプリケーションを3つの論理層と物理コンピューティング層に分離する3層アーキテクチャーは、従来のクライアント/サーバー・アプリケーション用の優れたソフトウェア・アーキテクチャーです。

3層アーキテクチャーとは

3 層アーキテクチャーは、アプリケーションを以下の3つの論理的層と物理コンピューティング層に編成する、確立されたソフトウェア・アプリケーションのアーキテクチャーです。3つの層とは、プレゼンテーション層(ユーザー・インターフェース)、アプリケーション層(データを処理する層)、データ層(アプリケーションに関連付けられたデータを保管・管理する層)です。

3層アーキテクチャーの主なメリットは、それぞれの層が独自のインフラストラクチャーで稼働するため、各層を個別の開発チームが同時に開発できること、また、他の層に影響を与えずに必要に応じて各層の更新または拡張を行えることです。

何十年もの間、3層アーキテクチャーは、クライアント/ サーバー・アプリケーションのための一般的なアーキテクチャーでした。現在は、ほとんどの3層アプリケーションは、コンテナマイクロサービスなどのクラウドネイティブ・テクノロジーを使用したモダナイゼーションとクラウドへの移行の対象になっています。

3つの層の詳細

プレゼンテーション層

プレゼンテーション層とは、アプリケーションのユーザー・インターフェースかつアプリケーションの通信層であり、エンド・ユーザーはこの層でアプリケーションと対話します。 その主な目的は、ユーザーに情報を表示し、情報をユーザーから収集することです。 この第1層は、デスクトップ・アプリケーションであるWebブラウザー、またはグラフィカル・ユーザー・インターフェース(GUI)などで実行できます。 Webプレゼンテーション層は通常、HTML、CSS 、JavaScriptを使用して開発されます。 デスクトップ・アプリケーションは、プラットフォームに応じてさまざまな言語で記述することができます。

アプリケーション層

アプリケーション層(論理層または中間層とも呼ばれます) は、アプリケーションの中核です。 この層では、プレゼンテーション層で収集された情報が処理されます (場合によっては、データ層の他の情報に対して処理が行われます)。 その際、特定のビジネス・ルール・セットであるビジネス・ロジックが使用されます。 アプリケーション層は、データ層内でデータの追加、削除、または変更を行うこともできます。

アプリケーション層は通常、Python、Java、Perl、PHPまたはRubyを使用して開発され、API呼び出しを使用してデータ層と通信します。 

データ層

データ層(データベース層、データ・アクセス層、またはバックエンドと呼ばれることもあります) は、アプリケーションによって処理された情報が保管され、管理される場所です。 これはPostgreSQL、MySQL、MariaDB、Oracle、DB2、Informix、Microsoft SQL Serverなどのリレーショナル・データベース管理システムである場合、またはCassandra、CouchDBMongoDBなどのNoSQLデータベース・サーバー内にある場合があります。 

3層アプリケーションでは、すべての通信がアプリケーション層を経由します。 プレゼンテーション層とデータ層は、相互に直接通信できません。

層とレイヤー

3層アーキテクチャーの議論では、レイヤーが、層と同じ意味で使われることがよくあります。と互換的に、「プレゼンテーション・レイヤー」や「ビジネス・ロジック・レイヤー」のように誤用されることがあるのです。 

層とレイヤーは同じではありません。 「レイヤー」とは、ソフトウェアの機能部を指しますが、「層」とは、他の部分から分離してインフラストラクチャーで実行されるソフトウェアの機能部を指します。 例えば、電話の連絡先アプリは、3レイヤー・アプリケーションですが、3つのレイヤーがすべてその電話上で機能するため、1層のアプリケーションです。

この違いは重要です。レイヤーには層と同じメリットがないためです。

3層アーキテクチャーのメリット

繰り返しますが、 3層アーキテクチャーの主要なメリットは、機能が論理的、物理的に分離されていることです。 各層は、個別のオペレーティング・システムとサーバー・プラットフォーム上で実行できます。 たとえば、Webサーバー、アプリケーション・サーバー、データベース・サーバーなどです。 その機能要件に最も適合するものを選択できます。 各層は、少なくとも1つの専用サーバー・ハードウェアまたは仮想サーバー上で稼働するため、各層のサービスのカスタマイズと最適化を、他の層に影響を与えずに行うことができます。 

その他のメリット(1層または2層アーキテクチャーと比較して)には以下のようなものがあります。

  • 開発の迅速化: 各層は別々のチームによって同時に開発できるため、組織はアプリケーションをより迅速に市場投入でき、プログラマーはそれぞれの層に最新かつ最適な言語とツールを使用することができます。
  • 拡張性の向上: 必要に応じて、任意の層を他の層から独立して拡大縮小できます。
  • 信頼性の向上: 1つの層の障害が、他の層の可用性またはパフォーマンスに影響を与える可能性が低くなります。
  • セキュリティーの向上: プレゼンテーション層とデータ層は直接通信できないため、適切に設計されたアプリケーション層は、一種の内部ファイアウォールとして機能でき、SQLインジェクションやその他の悪用を防止することができます。

Web開発での3層アプリケーション

Web開発では、層は異なる名前になりますが、同様に機能します。

  • Webサーバー は、プレゼンテーション層であり、ユーザー・インターフェースを提供します。 これは通常、ユーザーがショッピング・カートへの商品の追加、支払いの詳細情報の追加、またはアカウントの作成を行うeコマース・サイトなどのWebページまたはWebサイトです。 コンテンツは静的にも動的にもでき、通常はHTML、CSS、Javascriptを使用して開発されます。
  • アプリケーション・サーバーは、中間層に対応し、ユーザー入力の処理に使用されるビジネス・ロジックを格納しています。 引き続きeコマースの例を使用すると、これは、在庫データベースを照会して製品の在庫情報を返す、または顧客のプロファイルに詳細を追加する層です。 このレイヤーは、Python、RubyまたはPHPを使用して開発されることが多く、e Django、Rails、Symphony、またはASP.NETなどのフレームワークを実行します。
  • データベース・サーバー は、Webアプリケーションのデータ層またはバックエンド層です。 MySQL、Oracle、DB2、PostgreSQLなどのデータベース管理ソフトウェアで実行されます。

その他の多層アーキテクチャー

3層アーキテクチャーは、簡単に最も広く採用されている多層アプリケーション・アーキテクチャーですが、業務や研究において、その他の多層アーキテクチャーが使用されている場合もあります。

2層アーキテクチャー

2層アーキテクチャーは、プレゼンテーション層とデータ層で構成される、本来のクライアント/サーバー型アーキテクチャーです。ビジネス・ロジックは、プレゼンテーション層、データ層、またはその両方で使用されます。 2層アーキテクチャーにおいて、プレゼンテーション層  (結果的にエンド・ユーザー)は、 データ層に直接アクセスできますが、ビジネス・ロジックはしばしば制限されます。 ユーザーが連絡先データの入力と取得を行うことができる単純な連絡先管理アプリケーションは、2層アプリケーションの一例です。 

N層アーキテクチャー

N層アーキテクチャー (多層アーキテクチャーとも呼ばれます) は、複数の層を持つアプリケーション・アーキテクチャーを指します。 しかし、3層以上のアプリケーションは稀です。これは、それ以上のレイヤーにはほとんどメリットがなく、アプリケーションが遅くなり、管理が難しくなり、実行にコストがかかるようになる可能性があるためです。 結果として、N層アーキテクチャーと多層アーキテクチャーは、通常、3層アーキテクチャーの同義語です。

3層アーキテクチャーとIBM Cloud

IBM Cloudは、お客様のクラウド・ジャーニーにおいて、既存の3層アプリケーションのモダナイズに役立つ製品とサービスを提供します。

利用を開始する:

今すぐIBM Cloudアカウントを使用して開始しましょう。