【5分で解説】クライアントサーバシステムとは?メリット・デメリットのすべて

IT-Skills

クライアントサーバシステムとは、システムの構築方法の分類の1つであり、サービス(実際の処理)を提供する「サーバ」と、サービスをリクエストする「クライアント」とで役割を分担したシステムのことです。

クライアントサーバシステムとは、システムの構築方法の分類の1つであり、サービス(実際の処理)を提供する「サーバ」と、サービスをリクエストする「クライアント」とで役割を分担したシステムのことです。
クライアントサーバシステム概念図

クライアントサーバシステムは、現代のシステム設計の主流です。一方で、システムのアーキテクチャは目に見えない部分でもあるため、イマイチ理解しづらい部分でもありますよね。

実は、クライアントサーバシステムは1つずつ丁寧に理解すれば決して難しい概念ではありませんこのページでは、イメージ図を多く使いながら初心者の方でもわかりやすいように解説しています。

このページで学べる内容
  • クライアントサーバシステムとは何か?
  • クライアントサーバシステムの処理内容
  • クライアントサーバシステムのメリット/デメリットについて

現代のシステムの主流が「クライアントサーバシステム」なのはなぜか?そして、「クライアントサーバシステム」とは分かりやすく言うと、結局どんなシステムなのか?

IT系企業の方や、今後システム関連に携わる方であれば知らないと恥ずかしい内容ばかりですので、是非最後までご覧ください。

それでは早速解説を始めます。

スポンサーリンク
スポンサーリンク

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

クライアントサーバシステムをイメージ図で表したのが以下の図です。

クライアントサーバシステムでポイントとなるのは、「クライアント」と「サーバ」です。一言で言えば「クライアント」と「サーバ」の2つから成り立つシステムのことを「クライアントサーバシステム」と呼んでいます。

クライアントサーバシステムでポイントとなるのは、「クライアント」と「サーバ」です。一言で言えば「クライアント」と「サーバ」の2つから成り立つシステムのことを「クライアントサーバシステム」と呼んでいます。

実は、今ご覧になっているこのページ(ビズドットオンライン)もクライアントサーバシステムに分類されます。

せっかくなので、どのようにあなたがこのページを見ることができているのかを解説しながら、クライアントサーバシステムの仕組みを深堀していきましょう。

クライアントサーバシステムの例

クライアントサーバシステムのイメージをつかむためには、①ユーザと②クライアント、そして③サーバをそれぞれ分けて考えていくと理解しやすくなります。

※登場する3つを一度に考えようとすると難しいためあえて細かく分解して解説します。

分かりやすく考えるために・・・

  1. ユーザからクライアントの処理
  2. クライアントからサーバの処理

の2段階で考えていきます。

ユーザからクライアントの処理

ユーザからクライアントの処理

クライアントとは、あなたのパソコン・スマートフォンのこと。もっと具体的に言えば「ブラウザ」を表します。

ブラウザとは?

ブラウザとは、Google Chrome・Internet Explorer・Firefoxなど、Webサイトを閲覧するために必要なソフトのこと。今、あなたが当サイト(https://it-biz.online/)を閲覧することができているということは、いずれかのブラウザを利用しているということ。

ブラウザはPCやスマートフォンに初期インストールされている場合がほとんどのため、あまり意識する機会はありませんが、ブラウザがなければWebサイトを閲覧することができません。

あなたは、このサイトを「ブラウザ」を通してみています。ページを見たり、画像を保存したり、Googleで検索をしたりします。つまり、「次のページを見たい」「画像を保存したい」「サイト内検索をしたい」という要求を「クライアント」へ送っていると言えます。

ページを見たり、画像を保存したり、Googleで検索をしたりします。つまり、「次のページを見たい」「画像を保存したい」「サイト内検索をしたい」という要求を「クライアント」へ送っていると言えます。
クライアント(ブラウザ)へ処理を要求

この要求をITの世界では「リクエスト」と呼びます。

システム的に全体を俯瞰してみてみると、次のページを見たい」「画像を保存したい」「サイト内検索をしたい」といったリクエストは、ユーザ(あなた)からクライアント(ブラウザ)へ受け渡された形になります。

クライアントからサーバの処理

ユーザ(あなた)からのリクエストを受け取った「クライアント」は、その要求をシステムの言葉に翻訳し、サーバ側へ送ります。

イメージ

「次のページを見たい」⇒「URL:xxx のページ情報が欲しい」

具体的な処理内容に変換し「サーバ」側へ送付します。

これで、ユーザが送ったリクエスト(〇〇のページが見たい)が、サーバまで送付されることになります。このように、クライアントサーバシステムでは、リクエストがリレー形式で流れるように受け渡される形をとります。

クライアントからのリクエストを受け取った「サーバ」は、該当するページを「クライアント」に返します。リクエストに応じて結果を返すことを、レスポンスと呼びます。

ここでのレスポンスは、具体的に「ページのコンテンツ」です。記事や画像などの情報をレスポンスとしてクライアントへ返却、その後クライアントは受け取った情報をスクリーンに表示します。

これが、クライアントサーバシステムの概要です。

このように、それぞれの「リクエスト」と「レスポンス」をリレーすることによって、1つのシステムとして成立させる仕組みをクライアントサーバシステムと呼びます。

クライアントサーバシステムのメリット

マインド マップ, ブレイン ストーム, アイデア, 技術革新, 想像力, インスピレーション, 電球

ここまで読んでいただいた方の中には「なんでこんなややこしい仕組みにしているの?」という疑問をお持ちの方もいるかもしれません。

なぜ、「わざわざ」クライアントとサーバを別にする必要があるのか?

ここからは、クライアントサーバシステムのメリットを解説していきたいと思います。

メリット1:負荷分散

1つ目のメリットは、負荷分散です

集中型システムでは、1つの汎用機に負荷が寄ることになります。

「負荷」とは、大人数が一気に利用する際に生まれる力のことです。例えば、このブログも集中型システムの形態をとっていた場合どうなるか?

ページを開くのも画像を保存するのも、見ているユーザごとに処理をこなさなければなりません。常に1000人が見ている状態で、0.1秒単位でページ情報とユーザの処理状態を認識し、処理を繰り返すのです。

クライアントサーバシステムであれば、そこらへんの処理を「クライアント」が担い、「サーバ」側では限られた処理(ページ情報を返す・画像の情報を送る)のみで事足ります。

(ページのスクロールや、ユーザのセッション管理は不要です。)

負荷分散を避けられることが、大きなメリットであることは間違いありません。

メリット2:部分的な故障に強い

2つ目のメリットがこれです。

例えば、だれか一人によって「ブラウザ」が壊されても、「サーバ」側は影響を受けません。

他の人の「クライアント」であれば、問題なくページの閲覧を続行できます。

また、故障時の問題特定も素早くできるようになります。

「ページが開かない」という問題が起こった際に、他の「クライアント」からページを開けるのであれば、「クライアント」の問題であると特定できますし、逆に他の「クライアント」からも同様に見れないのであれば、「サーバ」側の故障であると素早く特定できます。

これが、集中型システムであれば問題の切り分けに時間がかかり、復旧までに時間を要することになります。

メリット3:柔軟なシステム変更に強い

このブログは、週に2~3回の速度で更新していますが、その際に「クライアント(ブラウザ)」の変更は不要です。

もし、これが集中型システムの形態をとっていた場合、一度「クライアント(ブラウザ)」を一時停止させなければなりません。

クライアントサーバシステムであれば、クライアントかサーバ、それぞれどちらかだけを変更すればよいですし、その際もう一方への影響は与えません。

ピンポイントで変更をしたい、ちょっとだけ変更したい。もし集中型システムであれば、ブラウザもサーバも停止させる必要が出てきてしまうため、変更は断念です。

クライアントサーバシステムには、このように大きなメリットがあり現代のシステムアーキテクチャの主流となっています。

3層アーキテクチャ(Web3層構造)

クライアントサーバシステムのサーバ側をさらに細かく構造化した概念が、3層アーキテクチャ

サーバを「プレゼンテーション層」「アプリケーション層」「データ層」に分け、サーバ側の効率を強化した仕組みで、実は当サイトも同様の仕組みで動いています。詳しく知りたい方は合わせて以下の記事もご覧ください。

クライアントサーバシステムを実際に作ってみたい方は

サーバやネットワーク関連の基本的な仕組みや処理の内容を詳しく知るには、やはり自分で1からWebサイトを作成してみるのがおすすめです。

以下では、WordPressを用いて1から自分のサイトを作成する方法を解説しています。最初は、何をしているかわからない部分も多いのが実情かもしれませんが、自分で自分のサイトをバージョンアップしたり改修・バグ調査をする中で、ある程度の実践的な知識を身に着けることが可能。

初心者向けにハードルをかなり低めに設定した入門記事ですので、是非ご覧ください。

タイトルとURLをコピーしました