2層・3層クライアントサーバシステムの違いを図解で説明
〜3層が選ばれる理由〜

「2層クライアントサーバシステム」と「3層クライアントサーバシステム」の違いを説明できますか?

クライアントとサーバに分かれていることは知っていても、層の数が何を表しているのかは分かりにくいと思います。

2層と3層の違いについて、図を使って説明していきます。

クライアントサーバシステム自体の説明は、クラサバとは?の記事を読んでみてください。

2層と3層の違いは?

システムの役割は、大きく次の3つに分けることができます。

  • 画面: 利用者に見せる部分
  • 処理: 業務の計算や判断をする部分
  • データ: 情報を保存する部分

2層と3層の違いは、この3つをどこに置くかです。

2層と3層の全体図。2層はクライアントに画面と処理、DBサーバにデータを置き、3層は処理をアプリケーションサーバに分ける

2層は、画面と処理をクライアントに置きます。

3層は、処理をアプリケーションサーバに移して、3つの役割を分けます。

ここでの層は、役割を論理的に分けたものです。実際には分かれたサーバで動かすことが多いですが、1台のサーバにアプリケーションとDBを同居させても3層です。

2層クライアントサーバシステム

2層は、クライアントがDBサーバに直接接続する構成です。

クライアントにインストールしたアプリが、画面の表示と処理の両方を行います。

2層の流れの図。クライアントのアプリがDBサーバにSQLを送り、DBサーバが結果を返す

流れは次のようになります。

① クライアントのアプリが、DBサーバにSQLを送る

② DBサーバが、SQLを実行する

③ DBサーバが結果を返し、アプリが画面に表示する

サーバはDBサーバだけなので、構成が単純です。

小規模なシステムであれば、作りやすい構成です。

3層クライアントサーバシステム

3層は、クライアントとDBサーバの間にアプリケーションサーバを置く構成です。

クライアントの役割は、画面の表示と、処理の依頼だけになります。

3層の流れの図。クライアントがAPサーバに処理を依頼し、APサーバがDBサーバにSQLを送って、結果を順に返す

流れは次のようになります。

① クライアントが、アプリケーションサーバに処理を依頼する

② アプリケーションサーバが、DBサーバにSQLを送る

③ DBサーバが、データを返す

④ アプリケーションサーバが、結果をクライアントに返す

クライアントがDBサーバに直接接続しないところがポイントです。

3層が選ばれる理由

3層が選ばれる一番の理由は、処理を変更しやすいことです。

例えば、消費税の計算方法を変更する場合を考えてみましょう。

処理を変更するときの図。2層は全てのクライアントの更新が必要で、3層はサーバ1か所の更新で済む

2層では、処理がクライアントにあるので、全てのパソコンのアプリを更新しなければなりません。

パソコンが100台あれば、100台分の作業が必要です。

3層では、アプリケーションサーバを更新するだけで済みます。

他にも、次のような良い点があります。

  • クライアントの性能が低くても動かしやすい
  • 利用者が増えた時に、アプリケーションサーバを増やして対応しやすい
  • DBサーバをクライアントから切り離せるので、守りやすい

Webシステムも3層で考えられる

3層の考え方は、Webシステムでも同じです。

試験では、3つの層を次の名前で呼びます。

  • プレゼンテーション層: 画面を表示する
  • ファンクション層: 業務の処理をする
  • データ層(データベースアクセス層): データを管理する
Webシステムと3層の対応の図。ブラウザがプレゼンテーション層、Web・APサーバがファンクション層、DBサーバがデータ層

Webシステムでは、ブラウザがプレゼンテーション層の役割をします。

ブラウザさえあれば使えるので、パソコンごとにアプリをインストールする必要もありません。

Webシステムの仕組みは、Webシステムを図解で解説で説明しています。

2層と3層の比較

2つの違いをまとめると、次のようになります。

2層と3層の比較表。処理を置く場所、サーバの台数、処理の変更、クライアントの負荷を比べている

3層の方が良い点は多いですが、サーバの台数が増えやすいので、費用や管理の手間は増えます。

小規模で変更の少ないシステムなら、2層が向いていることもあります。

まとめ

今回は2層と3層のクライアントサーバシステムの違いについて説明しました。

2層は画面と処理がクライアントにあり、3層は処理がアプリケーションサーバにあります。

基本情報技術者試験では、プレゼンテーション層、ファンクション層、データ層(データベースアクセス層)という3つの名前と、それぞれの役割を押さえておきましょう。

「画面、処理、データがどこにあるのか」を考えるようにすると、システムの構成図が読みやすくなると思います。