今回は多層アーキテクチャのお話です!
まず前段の知識として必要なのがシステム構成ですが、システムの構成を大きく分類すると、次のように3つに分けられます。
システム構成
- メインフレーム:大型汎用機・ホストなんて呼びます
- クライアント・アプリケーション(クライアントサーバシステム):オフコンやクラサバと呼ぶ種類があります
- Webアプリケーション:クライアントサイドやサーバサイドという種類があります
Webアプリケーションやクライアントサーバシステムにおいては、3層クライアント、2層クライアントという考え方があります。今回は2層と3層の違いをまとめてみました。
3層クライアント、2層クライアントの違いは?
実は現在の主流は3層クライアントです!
という結論みたいなことを書いてしますのですが、先ずはこの層の中には何があるか説明します。
層の中身
アプリケーションを製作する際に大きく部品を三つに分けることができます。
3つの層
- プレゼンテーション層(ユーザーインターフェース)
- ファンクション層(ビジネスロジック)
- データ層(データベース)
※ファンクション層はアプリケーション層なんて呼び方もします。
この3つの層を繋げてクライアントからの支持をサーバで処理して、サーバの処理をクライアントに返したりしています。
イメージとしては以下の通りですが、クライアントに近い部分がプレゼンテーション層、サーバ(データベース)に近い部分がデータ層で、その間を取り持つ部分としてファンクション層があります。
ポイントは3つの層の関係性です、プレゼンテーション層はデータ層にはアクセスしません。
つまり、それぞれの層が直線的に情報が繋がります。これを3層アーキテクチャと呼びます。
3層と2層の違いと使い方
では、いよいよ3層クライアントと2層クライアントの違いとなりますが、実はここまで理解すれば後は簡単です。
◎3層クライアント
クライアント側(PC側)に「プレゼンテーション層」があり、サーバ側に「ファンクション層とデータ層」がある
◎2層クライアント
クライアント側(PC側)に「プレゼンテーション層とファンクション層」があり、サーバ側に「データ層」がある
3つの層が、クライアント側なのかサーバ側にあるのかで、呼び方が違うのですね。
3層クライアントの場合はサーバ側にファンクション層の仕組み(アプリケーションサーバ)とデータ層の仕組み(データベースサーバ)が分かれていますので、実際はサーバが二つあるようなイメージですね。
ざっくり分けると、2層と3層の違いはアプリケーションサーバの有無なのかなとも思います。
2層構成は3層構成が主流となる以前によく利用されていた方式のようです。2層構造ではクライアント側やバックエンド側にビジネスロジックが実装されており、WebサーバでJava、PHP、Rubyなどの処理を含めたすべての処理を行っていたようですね。
そして、3層クライアントのメリットは以下のようなものがあります。
3層のメリット
- 処理結果をクライアントに返すだけなので、ネットワーク上を流れるデータ量が軽減できる
- ビジネスロジックに変更があってもサーバ側だけの変更で済む(クライアント1台1台への適用は不要)
- サーバ側でデータベースとのやり取りが完結するので、データベースをロックする時間が短くて済む
それぞれのシステム構成でのパターンを整理すると次のようになります。
Webアプリケーションのパターン
【3層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層
・Webアプリケーション : ファンクション層
・データベース : データ層
【2層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層、ファンクション層
・データベース : データ層
クライアントサーバ(クラサバ)システムのパターン
【3層の場合】
・クライアントアプリ : プレゼンテーション層
・アプリケーションサーバ : ファンクション層
・データベース : データ層
【2層の場合】
・クライアントアプリ : プレゼンテーション層、ファンクション層
・データベース : データ層
MVCモデルとの違いは?
3層という言葉を調べているとよくMVCモデル(アーキテクチャ)という言葉が出てきますが、これは3層アーキテクチャとは全く別のアーキテクチャのことです。
詳しくはwiki(多層アーキテクチャ)をご参考にして頂ければと思いますが、大きな違いはMVCモデルは3つの部品がそれぞれ相互に通信するところです。JAVAでいうところのViewが「jsp」、Controllerが「Servlet」、Modelが「EJB」みたいな組み合わせで、jspがEJBとやり取りするこものあったりします。
まとめ
今回はアプリケーションのアーキテクチャである多層アーキテクチャの3層クライアントと2層クライアントの違いに関して解説。
現在は3層クライアントの方が主流のようですが、2層クライアントは専用のビューワーを導入することができるので、高度な画面構成や表現の仕組みが可能で、利用箇所や台数が限られる専用のシステム構成の場合は2層クライアントを採用することもあるようですね。
以上です!