ITの教科書検索
入門読了 約10分

クライアントサーバシステムとは ― 2層と3層の違い

クライアントサーバシステムは、処理を頼む側と引き受ける側に役割を分ける方式です。2層と3層では業務の処理を置く場所が違い、その差で往復の回数も変わります。

目次
  1. クライアントサーバシステムとは
  2. 処理を3つの層に分ける
  3. 2層クライアントサーバシステム
  4. 3層クライアントサーバシステム
  5. 2層と3層の違い
  6. Webシステムは3層の形
  7. ストアドプロシージャとは
  8. RPCとは
  9. シンクライアントとの関係
  10. 3層スキーマとの違い
  11. 練習問題
  12. 参考にした資料

クライアントサーバシステムとは

ブラウザで開くネットショップも社内の業務システムも、多くは画面を出すコンピュータと処理をするコンピュータが分かれています。このように、処理を頼む側と引き受ける側にコンピュータの役割を分けたシステムを、クライアントサーバシステムと呼びます。頼む側をクライアント、引き受けて結果を返す側をサーバと呼びます。

役割の分け方には2層と3層があり、違いは業務の処理をクライアントに置くか、専用のサーバに置くかです。この違いが、処理を変えるときの手間や、ネットワークを流れるものの差になります。

役割を分けずに端末どうしが対等につながる構成は、P2Pと呼びます。処理を複数のコンピュータで分け合う分散処理と、1台に集める集中処理の違いは、バッチ処理とリアルタイム処理の記事で比べています。1つの大きな計算を多くのコンピュータに分けて配る方式は、グリッドコンピューティングです。

処理を3つの層に分ける

ネットショップで注文を受ける処理を例にします。この処理は、画面で注文を受け付ける部分と、金額や在庫を計算する部分と、データベースを読み書きする部分に分けられます。

画面の表示と入力を受け持つ部分を、プレゼンテーション層と呼びます。業務の処理を受け持つ部分は、ファンクション層です。データベースへの読み書きを受け持つ部分は、データベースアクセス層です。

資料によっては、ファンクション層をアプリケーション層、データベースアクセス層をデータ層と呼びます。ここでのアプリケーション層は、OSI参照モデルの第7層とは別のものです。

2層と3層の違いは、この3つの層をそれぞれどのコンピュータに載せるかの違いです。

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

2層クライアントサーバシステムでは、クライアントがプレゼンテーション層とファンクション層を受け持ちます。サーバはデータベースを管理するDBサーバ1種類で、データベースアクセス層を受け持ちます。

クライアントは、業務の処理に必要なSQL文をDBサーバに直接送ります。SQL文は、データベースへの命令です。構成が単純で、コンピュータの種類も少なく済みます。

その代わり、業務の処理を変えると、全クライアントのプログラムを入れ替える必要があります。処理を受け持つ分だけ、クライアントには性能も求められます。後で説明するシンクライアントと対比して、このようなクライアントをファットクライアントと呼ぶ資料もあります。

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

3層クライアントサーバシステムでは、3つの層を別々のコンピュータに載せます。クライアントはプレゼンテーション層だけを受け持ちます。ファンクション層はAPサーバ、データベースアクセス層はDBサーバが受け持ちます。

APサーバは、業務のプログラムを動かすアプリケーションサーバです。クライアントはAPサーバに要求を送り、SQL文はAPサーバがDBサーバに送ります。次の図のとおり、2層と3層の違いはファンクション層の位置だけです。

2層クライアントサーバシステムクライアントプレゼンテーション層ファンクション層DBサーバデータベースアクセス層SQL文結果3層クライアントサーバシステムクライアントプレゼンテーション層APサーバファンクション層DBサーバデータベースアクセス層要求結果SQL文結果2層クライアントサーバシステムクライアントプレゼンテーション層ファンクション層DBサーバデータベースアクセス層SQL文結果3層クライアントサーバシステムクライアントプレゼンテーション層APサーバファンクション層DBサーバデータベースアクセス層要求結果SQL文結果
色を付けたファンクション層が業務の処理を受け持ちます。2層ではクライアントにあり、3層ではAPサーバに移ります。

次の図で処理を選ぶと、2層と3層のそれぞれで、受け持つコンピュータが光ります。

処理
「業務の処理をする」を受け持つのはファンクション層
2層
  • クライアント受け持つ
  • DBサーバ
3層
  • クライアント
  • APサーバ受け持つ
  • DBサーバ
2層ではクライアントが受け持つため、処理を変えると全クライアントのプログラムを入れ替えます。3層ではAPサーバを直せば済みます。

業務の処理がサーバ側に集まるので、処理を変えるときはAPサーバを直せば済みます。クライアントはDBサーバに直接つながらないため、データベースへの接続をAPサーバに限ることもできます。利用者が増えたときは、APサーバを増やして処理を分け合えます。

APサーバを増やしたときに要求を振り分ける仕組みは、ロードバランサの記事で説明しています。一方で、コンピュータが1種類増えるため、構成は2層より複雑になります。

2層と3層の違い

ここまでの違いを、観点ごとに並べます。見分けるときは、業務の処理がクライアントにあるかどうかを最初に見ます。

2層と3層のクライアントサーバシステムの違い
観点2層3層
コンピュータクライアントとDBサーバクライアントとAPサーバとDBサーバ
業務の処理クライアントAPサーバ
SQL文を送る側クライアントAPサーバ
処理を変えるとき全クライアントを更新するAPサーバだけを直す
クライアントの負担処理を持つため重い表示と入力だけで軽い
構成単純で台数が少ない台数が増え、管理する所が増える

SQL文がクライアントから流れるのは2層です。3層では、クライアントとAPサーバの間を流れるのは要求と結果だけです。

Webシステムは3層の形

ブラウザで使う業務システムやネットショップの多くは、3層の形で作られています。ブラウザがクライアントで、プレゼンテーション層を受け持ちます。業務の処理はWebサーバやAPサーバが実行し、データはDBサーバが管理します。

サーバは処理の結果をHTMLにして返し、ブラウザはその記述に従って画面を表示します。業務の処理を変えても、サーバ側を直せば済みます。利用者の端末に専用のプログラムを配る必要はありません。

ブラウザとサーバの間のやり取りは、HTTPとHTTPSのリクエストとレスポンスです。

ストアドプロシージャとは

注文1件を処理するには、在庫を確かめるSQL文や注文を記録するSQL文など、いくつかのSQL文を続けて実行します。1つずつ送ると、SQL文の数だけネットワークを往復します。

よく使う一連のSQL文を、手続としてDBサーバに登録しておく仕組みがあります。これをストアドプロシージャと呼びます。呼び出す側は手続の名前を指定して1回呼ぶだけで、中のSQL文はDBサーバの中で続けて実行されます。

次の図は、注文1件でSQL文を3つ実行する例です。SQL文は1つずつ送って結果を待つ前提で、構成とストアドプロシージャの有無を選ぶと往復の回数が出ます。

構成
ストアドプロシージャ
注文1件で実行するSQL文:在庫を確かめる・注文を記録する・在庫を減らす
2層で、ストアドプロシージャを使わない場合
  • クライアントとDBサーバSQL文を1つずつ3往復
ネットワークを越える往復:合計3回
クライアントが3つのSQL文を1つずつ送り、そのたびに結果を待ちます。

2層では、ストアドプロシージャで往復が3回から1回に減ります。3層でも、APサーバとDBサーバの間の往復が同じように減ります。往復が減る分だけ、ネットワークを流れる量と待ち時間が減ります。なお、手続の中身はSQLで書くので、SQLを使わなくなるわけではありません。手続の登録と呼び出しの書き方は、ストアドプロシージャとトリガの記事にまとめています。

RPCとは

別のコンピュータにある手続を、自分の中の手続と同じように呼び出す仕組みを、RPCと呼びます。Remote Procedure Callの略で、日本語では遠隔手続呼出しです。

呼び出す側は、手続の名前と引数をサーバに送り、結果が返るまで待ちます。サーバは手続を実行して、結果を返します。RPCは、クライアントがサーバの処理を使う方法の1つです。ストアドプロシージャの呼び出しも、同じく手続を名前で呼ぶ形です。

この呼び出しの流れは、RFC 5531がONC RPCという方式の仕様として定めています。

シンクライアントとの関係

クライアントには画面の表示と入力だけを任せ、処理とデータをサーバ側に置く方式を、シンクライアントと呼びます。3層クライアントサーバシステムでは、クライアントの受け持ちが表示と入力だけになるので、シンクライアントを使えます。

端末にデータを残さないため、端末をなくしても情報が漏れにくくなります。守る対象をサーバに集められる点も利点です。サーバの中の仮想マシンをデスクトップとして使う形は、仮想化の使い方の1つであるVDIです。シンクライアントの方式の違いは、シンクライアントとVDIの記事で比べています。

3層スキーマとの違い

データベースの3層スキーマは、名前が似ていますが別のものです。3層スキーマは、データの定義を外部・概念・内部の3段に分ける考え方です。3層クライアントサーバシステムは、処理をどのコンピュータに載せるかの構成です。

ネットワーク機器の階層構成でいう2層・3層も、クライアントサーバシステムとは別の話です。機器の階層構成は、スパインリーフの記事で3階層構成と比べています。

練習問題(全5問)

Q13層クライアントサーバシステムで、業務の処理を受け持つ層はどれか。
Q22層クライアントサーバシステムと比べた、3層クライアントサーバシステムの特徴として適切なものはどれか。
Q3業務の処理の手順を変えるとき、全クライアントのプログラムを入れ替えずに済むのはどれか。
Q4ストアドプロシージャを使う利点として適切なものはどれか。
Q52層で、注文1件につきSQL文を3つ、1つずつ送っている。同じ3つのSQL文をストアドプロシージャにまとめると、DBサーバとの往復は何回になるか。

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

クラウドの記事を続けて読む

クラウド 全36本中22本目