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

夕暮れの東京の空中写真

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

3層アーキテクチャーは、アプリケーションを3つの論理的および物理的コンピューティング層に整理する確立されたソフトウェア・アプリケーション・アーキテクチャーです。具体的には、プレゼンテーション層(ユーザー・インターフェース)、データが処理されるアプリケーション層、アプリケーションのデータが保管・管理されているデータ層の3つです。

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

3層アーキテクチャーは、数十年にわたりクライアント・サーバー・アプリケーションの一般的なアーキテクチャーでした。今日、ほとんどの3層アプリケーションは、コンテナやマイクロサービスといったクラウドネイティブ技術を使ったモダナイゼーションや、クラウドへの移行の対象になっています。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

3つの層の詳細

プレゼンテーション層

プレゼンテーション層は、エンド・ユーザーがアプリケーションと対話する場所であるアプリケーションのユーザー・インターフェースおよびコミュニケーション層です。その主な目的は、ユーザーに情報を表示し、ユーザーから情報を収集することです。この最上位層は、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層アプリケーションでは、すべての通信がアプリケーション層を経由します。プレゼンテーション層とデータ層は相互に直接通信することはできません。

アプリケーション開発

さあ、クラウドでエンタープライズ・アプリケーション開発を始めましょう

この動画では、Peter Haumer博士が、IBM Z Open Editor、IBM Wazi、Zoweなどのさまざまなコンポーネントとプラクティスを実演しながら、ハイブリッドクラウドでの最新エンタープライズ・アプリケーション開発について説明します。

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

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

その他のメリット(単一層または2層アーキテクチャーと比較して)には次のものがあります。

  • 開発の迅速化:各層は異なるチームが同時に開発できるため、組織はアプリケーションをより迅速に市場に投入できます。また、プログラマーは、各層に最新かつ最高の言語とツールを使用できます。

  • 拡張性の向上:どの層も、必要に応じて他の層から独立して拡張できます。

  • 信頼性の向上:ある層が停止しても、他の層の可用性や性能に影響を与える可能性は低くなります。

  • セキュリティーの向上:プレゼンテーション層とデータ層は直接通信できないため、適切に設計されたアプリケーション層は内部ファイアウォールとして機能し、SQLインジェクションやその他の悪意のあるエクスプロイトを防ぐことができます。

層とレイヤーの比較

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

この2つは同じではありません。「レイヤー」はソフトウェアの機能的な区分を指しますが、「層」は他の区分とは別のインフラストラクチャー上で実行されるソフトウェアの機能的な区分を意味します。例えば、携帯電話の連絡先アプリは3レイヤーのアプリケーションですが、3つのレイヤーすべてが同じ携帯電話上で実行されているため、単一層のアプリケーションです。

レイヤーは層と同じメリットを提供することはできないため、この違いは重要です。

Web開発における3層アプリケーション

Web開発において、層は異なる名称を持ちますが、同様の機能を実行します。

  • Webサーバーはプレゼンテーション層であり、ユーザー・インターフェースを提供します。これは通常、ユーザーがショッピング・カートに商品を追加したり、支払いの詳細を追加したり、アカウントを作成したりするeコマース・サイトなどのWebページまたはWebサイトです。コンテンツは静的または動的にすることができ、HTML、CSS、JavaScriptを使用して開発されます。

  • アプリケーション・サーバーは中間層に相当し、ユーザー・インプットの処理に使用されるビジネス・ロジックを格納します。eコマースの例を続けると、インベントリーのデータベースを照会して製品の在庫状況を返したり、顧客のプロファイルに詳細を追加したりする層です。この層は、多くの場合、Python、Ruby、またはPHPを使用して開発され、Django、Rails、Symphony、ASP.NETなどのフレームワークを実行します。

  • データベース・サーバーは、Webアプリケーションのデータまたはバックエンド層です。MySQL、Oracle、DB2、PostgreSQLなどのデータベース管理ソフトウェア上で動作します。

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

3層アーキテクチャーは最も広く採用されている多層アプリケーション・アーキテクチャーですが、仕事や研究で遭遇する可能性があるアーキテクチャーは他にもあります。

2層アーキテクチャー

2層アーキテクチャーは、プレゼンテーション層とデータ層で構成される、元のクライアント・サーバー・アーキテクチャーです。ビジネス・ロジックがプレゼンテーション層かデータ層、またはその両方に存在します。2層アーキテクチャーでは、プレゼンテーション層(つまりエンド・ユーザー)がデータ層に直接アクセスできるため、ビジネス・ロジックは制限されることがよくあります。ユーザーが連絡先データを入力したり取得したりできる単純な連絡先管理アプリケーションは、2層アプリケーションの一例です。

N層アーキテクチャー

N層アーキテクチャー(多層アーキテクチャーとも呼ばれる)とは、複数の層を持つ任意のアプリケーション・アーキテクチャーを指します。ただし、アプリケーションが複数の層を持つと、追加の層がほとんどメリットがないため、アプリケーションが遅くなり、管理が難しく、実行コストが高くなる可能性があるため、3層以上のアプリケーションはほとんどありません。その結果、n層アーキテクチャーと多層アーキテクチャーは通常、3層アーキテクチャーの同義語となります。

関連ソリューション
IBMのエンタープライズ向けJavaアプリケーション・サービス

Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。

Javaアプリの詳細はこちら
DevOpsソリューション

DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。

DevOpsソリューションの詳細はこちら
エンタープライズ・アプリケーション開発サービス

クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。

アプリケーション開発サービス
次のステップ

IBM Cloudアプリケーション開発コンサルティング・サービスは、クラウド戦略を合理化するための専門家のガイダンスと革新的なソリューションを提供します。IBMのクラウドおよび開発のエキスパートと提携して、アプリケーションをモダナイズ、拡張、高速化し、ビジネスに変革をもたらします。

アプリケーション開発サービスの詳細はこちら IBM Cloudを無料で構築開始