従来の意味で、N層とはアプリケーションを「層」に分け、各「層」を異なるサーバーに配置することを意味します。これは、少なくとも3つの理由のために行われました:N層アーキテクチャは現在何を意味していますか?
メンテナンス:
a)はコードのメンテナンス:バグ修正と機能追加を行うことが容易になります。b)ハードウェアのメンテナンス:1台のサーバーを停止しても、他のサーバーからのサービスは中断されません。
パフォーマンス:1つのサーバーでは、Web要求、ビジネスロジックの計算、およびデータベース/ファイルアクセスを同時に処理できないことがよくありました。
スケーラビリティ:具体的には、水平スケーラビリティ
a)のフォールトトレランス:ティア当たり1台の以上の物理サーバを有する能力は、1台のサーバがダウンしているときに、アプリケーションがまだ全体として機能することができることを意味します。
b)負荷分散:1つの層の複数のインスタンスを持つことは、大量の要求を処理するのに役立ちます。
今日、ハードウェアとネットワークは、1台のサーバーで毎秒何千もの要求を処理するのに十分高速です。また、今ITの話題は「統合」です。したがって、アプリケーションを複数の層に分割しても、単一のサーバー上で仮想マシンをホストすることになります。
私は最近、人々がN層アーキテクチャについて語っていると思うが、アプリケーション内の懸念の分離について話している。それは物理的な分離よりも論理的分離のほうが多い。私は懸念と疎結合の良い分離を達成している限り、アプリケーションはN層である必要はありません。多くのプログラマーは、N層アーキテクチャはすべてのWebアプリケーションが遵守しなければならないゴールデンスタンダードだと考えているようです。
現在、N層アーキテクチャとは何ですか?
同意します。スケーラビリティ上の理由からディスクリートコンポーネントに分離することはまだ成果ではありませんが、ハードウェアの高速化やネットワークとサーバーの統合は、これを行う必要のあるアプリケーションの数を確実に押し下げています。 –
おそらく死んでいるわけではありませんが、たとえばウェブサイトの場合、より多くのページビューを処理するためのより効果的な方法があります。 – Durden81