テクノロジー

2024年10月1日

Webを支えるクライアント / サーバとは

クライアントサーバ型とは何かを解説し、Webやメールシステムにおける役割を紹介。
P2P型との違いや、クライアントサーバ型のメリット・デメリットについて詳しく学べます。

著者プロフィール

Webエンジニア歴5年以上。現在は、プログラミングスクールのメンターとして、次世代のエンジニア育成にも力を注いでいる。フロントエンドとバックエンドの開発に精通し、日々最新技術を追求しながら、実務経験をもとにした実践的な指導を行っている。スキル向上と学び続ける姿勢を大切にし、初心者から中級者まで幅広くサポートすることを得意としている。

ゴール

  • クライアントサーバ型とはなにかを理解する

クライアント / サーバとはなにか

あなたが持っているデバイス(スマートフォンやPC)と、他の人のデバイスで情報のやり取りをするには、2つの方式があります。直接つないでやり取りする方式と、サーバというコンピュータを介して、やり取りする方式です。
複数のコンピュータを直接つなぎ合って通信する方法をP2P型といいます。また、サーバを介してつなぐ方法をクライアントサーバ型といいます。

P2P型(Peer to Peer型)とは、複数のコンピュータ同士が対等な立場で相互にやり取りする方式です。したがって、それぞれのコンピュータの役割は同じです。
それに対して、クライアントサーバ型は、サービスを依頼する側(クライアント)と、サービスを提供する側(サーバ)のコンピュータ同士でやり取りする方式です。つまり、接続するコンピュータ同士が対等の立場ではなく、依頼者と提供者という役割を持つコンピュータの関係です。

次の図は、P2P型とクライアントサーバ型のイメージを表現しています。大きく違う点は、クライアントサーバ型は、サーバを中心とした中央集中管理型の構成になっていることです。それに対して、P2P型は、中心となって管理するコンピュータがありません。

Image from Gyazo

クライアントサーバ型の例

Webでは、インターネットを介して情報の検索や登録ができます。
あなたがブラウザを使って情報検索をするとき、検索先のコンピュータに、検索依頼の命令を送信します。このとき、あなたのコンピュータは、クライアントの役割になります。検索依頼を受け取ったコンピュータは、自分のコンピュータに蓄えている情報から依頼された情報を絞り込んで提供します。このコンピュータの役割は、サーバです。
また、登録した情報を必要なときに提供してくれるコンピュータに対し、自分が持っている情報を保管するよう依頼できます。依頼されたコンピュータは、その情報を蓄積しますが、このコンピュータの役割りもサーバです。
サーバは、クライアントからの要求(依頼)にしたがって、蓄積した情報をクライアントに提供したり、依頼された情報の保管を行うことができます。

電子メールについても同じです。あなたは、自分のコンピュータのメールソフトを使って、通信したい相手にメールを送信します。しかし、このメールは、直接相手のコンピュータに送信されるわけではなく、あなたが契約しているメールを管理するサーバ(メールサーバ)に送信され、相手に届けるように依頼します。依頼されたメールサーバは、相手が契約しているメールサーバへそれを送り届けます。その結果、相手は、自分の契約しているメールサーバに依頼して、そのメールを受け取ることができます。

つまり、あなたが自分のスマートフォンやPCで通常行っている通信の多くは、クライアントサーバ型です。
クライアントであるあなたが、サーバに依頼して情報を共有し、他の人のコンピュータとのやり取りを間接的に仲介してもらうことになります。お互いにサーバに依頼しあうことによって、各々が必要とする情報を得ることができます。

P2P型の例

では、P2P型はどのようなときに使うのでしょうか。
P2P型は、一括して管理するような仕組みを必要としないときに有効な接続方法です。代表的な例は、最近注目されているビットコインに代表される仮想通貨のシステムです。仮想通貨は、ブロックチェーンという仕組みを利用して、それぞれのコンピュータで取引した記録(台帳)をそれぞれのコンピュータに分散して持つ仕組みです。つまり、一つのコンピュータがすべての情報を管理する必要がないため、P2P型で実現できます。

あなたが学習するWebアプリケーションは、クライアントサーバ型を利用した仕組みです。クライアントサーバ型についてのメリット、デメリットや特徴について、さらに考えてみましょう。

クライアントサーバ型のメリット / デメリット

クライアントサーバ型は、サービスを提供するアプリケーションやデータをサーバで一括集中管理しているため、次のようなメリット/デメリットがあります。

  メリット デメリット
サービスの変更 変更が容易 変更ミスはすべてに影響
データ管理 情報共有が容易 情報漏洩のリスク
クライアントとサーバの役割分担 ユーザ操作とメイン処理の役割分担 通信のタイムラグ
障害の管理 クライアント障害の影響なし サーバ障害は全体に影響
機器の管理 リソース増強が一か所で可 サーバとの同期が必要

サービスの変更

サービスをサーバで一括管理しているため、接続しているクライアントのコンピュータに依存することなく、柔軟に容易に変更できます。ただし、変更のミスがあると、接続しているすべてのクライアントコンピュータに影響を与えます。

データ管理

データをサーバで一括管理しているため、情報の共有や、情報の更新も容易にできます。データが分散していないため、データ紛失のリスクも少ないといえます。ただし、すべてのデータが一か所にあり、局所的な災害に対するリスクやクライアントと情報をやり取りするための情報漏洩のリスクがあります。

クライアントとサーバの役割分担

メインの処理をサーバで集中的に行い、ユーザ側の画面上の操作や情報の入力などのユーザ向け処理をクライアント側で行うなどの役割の負荷分散ができます。ただし、すべてのメインの処理はサーバで行うため、処理をサーバへ依頼し、処理結果をクライアントへ送り返す通信のタイムラグ(遅延)が発生します。

障害の管理

サーバに障害が発生しない限り、クライアントの一部に障害があってもサービスを継続できます。
反面、サーバの障害は全体に影響を与えてしまいます。障害に備えたデータのバックアップは一括でできる反面、影響範囲が大きいため、データや機器のバックアップを十分に考慮する必要があります。

機器の管理

利用者が増えたり、管理するデータ量が増えるなどの状況に合わせて、サーバのリソース(機器の資源)を一か所で増強できます。クライアントは、サーバのサービスに対応したバージョンに合わせるなどの同期が必要になります。

まとめ

  • クライアントサーバ型とは、サーバを中心とする中央集中管理型の構成であり、サービスを依頼する「クライアント」と、サービスを提供する「サーバ」の役割を持つ。
  • クライアントサーバ型は、サーバで一括管理できるため、情報共有やサービスの変更、機器の増強が容易である反面、サーバの障害はすべてに影響を与える。

関連記事

HTTPとは
Webとは

ダイビックのことをもっと知ってみませんか?