Webシステムでよく利用される3層モデルに、「Web3層モデル」というものがあります。3層というのは、プレゼンテーション層、アプリケーション層、データ層を指します。
アプリケーション層の存在意義が少し曖昧だったので調べてみました。
Web3層モデルとは?
プレゼンテーション層
プレゼンテーション層は、ユーザーインタフェースを定義する層で、要はユーザーへのシステムの見え方を決定する部分です。
例えば、ユーザーに表示する画面の処理や、ユーザーが入力した内容のチェックなどを行います。
サーバーとしては、Webサーバーが担当することが多いです。
- Apache HTTP Server
- Nginx
- lighttpd
- H2O
アプリケーション層
アプリケーション層は、プレゼンテーション層とデータ層の中間に位置する層で、システムの中核となる処理、いわゆるビジネスロジックを決定する部分です。
例えば、プログラムの実行環境やデータベースとの接続機能、複数処理を連結するトランザクションの管理機能、業務処理の流れを制御するビジネスロジックなどを担います。
サーバーとしては、アプリケーションサーバーが担当します。
- Tomcat/Jetty/GlassFish(Java)
- Puma/Unicorn(Ruby)
データ層
データ層は、データを一元管理する層です。
サーバーとしては、DBサーバーが担当します。
- MySQL
- PostgreSQL
- Oracle
- Windows SQL Server
アプリケーション層の存在意義/意味
歴史を振り返ると、かつてはアプリケーションが存在しないモデルが種類でした。つまり、クライアントとサーバーだけからなる2層モデルが主流でした。2層モデルでは、プレゼンテーション層とアプリケーション層がクライアント側に位置し、データ層だけがサーバー側にありました。クライアント側に大きい負担がかかっていたわけです。
ただしこのモデルには以下の欠点がありました。
- ビジネスロジックに変更が生じた場合に、すべてのクライアントのプログラムを更新するのが煩雑
- 性能の貧弱なクライアントでは複雑な処理が実現できない
- サーバーとクライアントの通信量が多く、回線がボトルネック
こうした理由で、ビジネスロジックとユーザーインタフェースを分離するというのが3層モデルの着想だったみたいです。
コメント