【コンピュータを効率よく使う手段】クライアントとサーバについて解説
私たちが普段使っているコンピュータ(スマホ含む)は、1台でできることって本当に限られています。電卓アプリを使った簡単な計算や、メモ帳に何かデータを記録して保存するなどであればネットワークに接続しなくても可能ですね。
しかし、Googleマップのような位置情報アプリや、Yahoo天気のような天気予報アプリ、TwitterのようなSNSなど、コンピュータを使う目的の多くを実現させるためには、自分の1台のみでは実現が不可能です。ネットワークに繋げば可能じゃん?って思うかもしれませんが、ネットワークに繋ぐということは、他のコンピュータと接続しているってことなので、自分の力だけで処理しているわけではないのです。
今回は、このように、複数のコンピュータを組み合わせて処理を実現させるための仕組みについて解説していきたいと思います。
結論から述べますと、そのような仕組みを実現させる方法は、集中処理・分散処理の2種類があります。順番に解説していきます。
集中処理
ホストコンピュータという何でもこなすスーパーマンと、スーパーマンに頼りっぱなしの怠け者の集まりみたいなイメージです。
メリットは、メインの処理は1つのコンピュータで実現させるので、データの一貫性を維持しやすいことですね。セキュリティの管理などもしやすいですね。ホストコンピュータ1台を守ることができれば、他のコンピュータがウイルスに感染してもそこまで大きなダメージはありません。
デメリットとして、ホストコンピュータがトラブルに巻き込まれると厄介ということが挙げられます。ホストコンピュータがウイルスに感染したり乗っ取られたりすると、他のコンピュータで引き継いだりすることも困難なので、ちょっとリスクが大きいですね。
分散処理
分散処理は、1台のコンピュータに処理を任せきるのではなく、それぞれのコンピュータに分散する考え方です。それぞれのコンピュータが独立しているような感じです。
メリットは、それぞれが1人前なので、1台のコンピュータがトラブルに巻き込まれても、他のコンピュータが感染する前に手を打てば、致命的なダメージを負うことは少ないということですね。
当然デメリットもありまして、セキュリティの管理やデータの一貫性の維持が面倒ということです。集中処理の考え方とは真逆ですね。集中処理のように1台のコンピュータが絶大な権限を持っているわけではないため、データの一貫性を保つのが大変だったりします。
クライアントサーバシステム
集中処理も分散処理も、ともに優れている面もあれば弱い部分もあるんですね。時代の進化とともに、技術は進歩してきました。今では、コンピュータの性能が上がってきたため、集中処理と分散処理の良い所を集めたハイブリッドのような構成方法が実現できるようになりました。それが、クライアントサーバシステムです。
クライアントサーバシステムとは、一つの場所で管理した方がよいものはサーバに任せて、必要に応じて個々の端末(クライアント)からリクエストを送って処理を行う仕組みのことです。
注意点が1つありまして、サーバとクライアントはあくまで役割を示すものであって、それぞれの機器の名前ではありません。どちらもコンピュータであることに変わりはありません。
【さらに進歩】3層クライアントサーバとは
先程説明したクライアントサーバシステムというのは、情報や資源を一括管理するサーバと、サービスや資源を要求するクライアントという2つの役割に分かれているので、2層クライアントサーバシステムと言われることがあります。
このままでもいいのですが、クライアント側の負荷をもう少し減らすことができたら、クライアント側のコンピュータは性能が高くなくても良さそうです。2層クライアントサーバシステムから、よりクライアント側の負荷を減らしたものを、3層クライアントサーバシステムと呼びます。
そもそも、3層とは何ぞやって思いますよね。3層とは、プレゼンテーション層・アプリケーション層・データ層の3つのことです。プレゼンテーション層はデータの入力や結果の表示などを担当します。データ層はデータベースに直接アクセスするなどの役割があります。アプリケーション層は、データの処理を担当します。
2層クライアントサーバシステムでは、クライアント側にプレゼンテーション層とアプリケーション層があり、データ層のみをサーバ側で担うというものです。一方、3層クライアントサーバシステムでは、プレゼンテーション層をクライアント側で担い、サーバ側でデータ層とアプリケーション層の役割を担います。
3層クライアントサーバシステムは、アプリケーション層もデータ層もサーバ側ですが、1つのコンピュータの中で両方行うわけではなく、アプリケーション層を担うサーバとデータ層を担うサーバに分かれています。
要は、アプリケーション層がサーバ側とクライアント側のどちらにあるかの違いですね。
まとめ
1台のコンピュータで行える処理には限界があるので、複数のコンピュータをネットワークで繋げて様々な処理を実現させます。
ホストコンピュータに主な処理をさせる方法を集中処理、それぞれのコンピュータに負荷を分散させる方法を分散処理と言います。
サービスを提供する側とサービスを要求する側に分けて考えたものをクライアントサーバシステムと言います。
プレゼンテーション層とアプリケーション層をクライアント側に置き、データ層をサーバ側に置く方法を2層クライアントサーバシステムと言い、プレゼンテーション層のみをクライアント側に置き、アプリケーション層とデータ層をサーバ側に置く方法を3層クライアントサーバシステムと言います。
というわけで今回はここで終わりです。何か参考になる情報があれば嬉しいです。
最後までお読みいただき、ありがとうございました。