1. 序章

このチュートリアルでは、ソフトウェア開発のN層アーキテクチャについて説明します。 まず、定義を示し、そのコンポーネントを確認し、その特性の概要を説明します。 次に、メリットとデメリットについて説明し、それらが適切に使用できる状況の例を示します。

2. N層アーキテクチャとは何ですか?

N層アーキテクチャを見る前に、ソフトウェアアーキテクチャは、あらゆるソフトウェアシステムの基本構造であり、システムを機能させ、正常に動作するあらゆる側面を組み込んでいます。 クライアントサーバーマイクロサービス、マイクロカーネル、レイヤードアーキテクチャなど、現在までに使用されているさまざまなソフトウェアアーキテクチャがあります。

現在、 an N層アーキテクチャは、プレゼンテーション、処理、およびデータ機能が論理的および物理的に分離された層に分割された多層クライアントサーバーアーキテクチャです。 物理的に分離されているということは、これらの各機能が異なる物理マシンで実行されることも意味します。 地理的に異なる場所にある場合もあります。

いくつかの重要な特徴を見てみましょう。

2.1. 特徴

N層アーキテクチャは通常は線形の物語で接続されています。つまり、次の層に到達するには1つの層を通過する必要があります。

さらに、コンポーネントの物理的および論理的な分離にもかかわらず、 N層アプリケーションが表示され、ユーザーに対して単一のユニットとして機能します。 これは分散ネットワークの例です。 さまざまなコンポーネントは通常、高速バスなどの通信リンクを介して通信します。

さらに、N層アーキテクチャもクライアントサーバーモデルを採用しています。 クライアント/サーバーモデルでは、複数のクライアントが集中型サーバーからサービスを要求および受信します。 この場合、クライアントとサーバーは両方とも異なる層で実行されているコンピュータープログラムです。

最後に、 N層は、アーキテクチャが任意の数の層を持つことができることも意味しますが、3層が最も一般的です。 たとえば、1層アーキテクチャでは、すべてのコンポーネントが1層に配置されるため、1台のマシンに配置されます。

3. 階層化アーキテクチャのコンポーネント

N層アーキテクチャは、主要なコンポーネントを論理的および物理的に分離されたコンポーネントに分割します。 これらは、プレゼンテーション層、処理層またはロジック層、およびデータ層です:

プレゼンテーション層は、ユーザーが簡単に理解および操作できる形式で情報を提示する役割を果たします。 たとえば、ラップトップでWebアプリケーションを操作しているユーザーは、作業中のプレゼンテーション層です。

さらに、ロジック層は、コマンドの実行、エラーの処理、計算、および論理的な決定を含むすべての処理機能を処理します。 Webアプリケーションの例では、ロジック層には、HTMLやPHPなどのプログラミング言語で記述されたWebページをレンダリングする基盤となるプログラムがあります。

最後に、データ層はデータストア(通常はデータベース)、およびデータベースとの間の通信を処理します。 Webアプリケーションの例では、データ層はSQLステートメントを実行するデータベースになります。

次に、N層アーキテクチャの実際のユースケースを見てみましょう。

4. N層アーキテクチャの例

医療センター向けのWebベースの患者予約アプリケーションについて考えてみましょう。これにより、患者は医師や専門家との予約をスケジュールできます。

プレゼンテーション層は、ラップトップや電話などのコンピューティングデバイスでWebブラウザーを操作するユーザーで構成されます。 ユーザーはログイン情報を使用してシステムにログインし、予約したい医師を選択します。

n層設計を使用する利点の1つは、他の層に触れることなく1つの層を簡単に変更できることであることに注意することが重要です。 この場合、Webブラウザーのグラフィカル・インターフェースは、他の層に影響を与えることなく、ラップトップや電話などのさまざまなコンピューティング・デバイスで動作するように調整できます。

ロジック層はプレゼンテーション層に接続し、ユーザー認証プロセスで構成されます。 さらに、別のマシンでホストされているWebサーバーにスケジューリングフォームと検証フォームがあります。

最後に、ロジック層はデータ層に接続し、別のマシンでホストされているMySQLデータベースで構成されます。 データベースには、患者、医師、専門家の詳細が含まれています。 また、各医師と専門家の利用可能な時間に関する情報も含まれています。 ここでは、ユーザーがスケジュールした予定もデータベースに保存されます。

5. 利点

N層アーキテクチャを使用するとスケーラビリティが大幅に向上します。 アーキテクチャ内の個々のコンポーネントが分離されているため、他のコンポーネントのパフォーマンスや動作に影響を与えることなく、1つのコンポーネントを簡単にアップグレードできます。 たとえば、データ層のデータベースでストレージが不足している場合、ストレージサイズを簡単に増やすことができ、これはプレゼンテーション層とロジック層に影響を与えません。

スケーラビリティに加えて、個別のコンポーネントがあると、他のすべてののパフォーマンスに影響を与えることなく、アーキテクチャ内のこれらの各コンポーネントの保守が容易になります。

このアーキテクチャを採用するもう1つの注目すべき利点は、再利用性です。 これは、コンポーネントが論理的に分離されているため、アーキテクチャをさまざまなアプリケーションやプロジェクトで再利用できるためです。

セキュリティも強化されていますN層アーキテクチャでは、必要に応じて適切なセキュリティ特権でさまざまな層を保護できるため

6. 欠点

コンポーネントの物理的な分離により、レイテンシが増加する可能性が常にあります。 ただし、これは高速通信リンクが何らかの形で問題を解決する場所です。

さらに、層の数が増えると、アーキテクチャの複雑さが増す傾向があります。 より多くの層は通常、維持および運用するための追加のコンポーネントがあることを意味します。

7. N層アーキテクチャをいつ使用するか

N層アーキテクチャは、情報の送受信に関して通信リンクが非常に高速である状況に適しています。 通信リンクは、異なるコンポーネント間の通信を可能にするものであるため、これは非常に重要です。

さらに、このアーキテクチャは、スケーラビリティ、セキュリティ、メンテナンスの容易さ、および再利用性が優先されるアプリケーションに最も適しています。

8. 結論

この記事では、N層アーキテクチャについて説明しました。 まず、ソフトウェアアーキテクチャとN層アーキテクチャを定義しました。 次に、いくつかの特性をリストし、アーキテクチャの基本コンポーネントをリストしました。 また、このアーキテクチャに関連する長所と短所についても説明しました。 最後に、N層アーキテクチャを使用するのが妥当な状況について説明しました。