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層アーキテクチャーの同義語です。

関連ソリューション
IBM Cloud Paks®

Red Hat OpenShiftソフトウェアで稼働するオープンでコンテナ化されたIBM認定の統合ソリューション、IBM Cloud Pak®を使用することで、クラウドへの移行を迅速化できます。

IBM Cloud Paks®の詳細はこちら
IBM Cloud® for VMware Solutions

IBM Cloud®を使用して、VMwareのワークロードとアプリケーションをシームレスにモダナイズします。

IBM Cloud® for VMware Solutionsの詳細はこちら
IBM Cloud Pak® for Applications

既存のアプリケーションのモダナイズと新しいアプリケーションの構築をサポートしながら、コストを削減してROIを最大限に高めます。

IBM® Cloud Pak for Applicationsの詳細はこちら
参考情報 アプリケーションのモダナイゼーションとは

アプリケーションのモダナイゼーションの概要、一般的なメリットと課題、開始方法をご覧ください。

リレーショナル・データベースとは

リレーショナル・データベースの仕組みと、その他のデータ・ストレージ・オプションとの違いについてご説明します。

クラウドネイティブとは

企業内のイノベーションとスピードを促進するクラウドネイティブ・アプリケーションについて詳しくご紹介します。

詳細情報はこちら

IBM Cloud®は、お客様のクラウド・ジャーニーにおいて、既存の3層アプリケーションのモダナイズに役立つ製品とサービスを提供します。戦略、プロセス、または機能について支援が必要な場合、またはフル・サービスが必要な場合、IBMがどのようにアプリケーションのモダナイゼーションをお手伝いできるかご確認ください。あらゆるクラウドで実行できる、コンテナ化されたミドルウェアの使用を開始できます。すべてIBM Cloud Paks®にバンドルされています。

IBM Cloud Paks®の詳細はこちら