クライアントサーバのサーバサイド・三層アーキテクチャ
クライアントサーバとはコンピュータネットワーク・アーキテクチャのうちの一つ構成を指します。
クライアント(client)は
- 依頼人
- 顧客
という意味で、クライアントサーバにおけるクライアントは、サーバの提供する機能・データ等のサービスを使用する側のコンピュータを指します。
アーキテクチャ(architecture)は
- 建築様式
- 構造
- 構成
という意味です。
コンピュータ分野では
- 基本設計
- 設計思想
を指します。
つまり、コンピュータネットワーク・アーキテクチャとは、
- コンピュータネットワーク・・コンピュータ同士をつなぐ
- アーキテクチャ・・・基本設計
複数のコンピュータを接続する基本設計ということになります。
この記事では、クライアントサーバの
- 概要
- サーバサイド
について、それぞれ説明します。
クライアントサーバ
クライアントサーバとはコンピュータネットワーク・アーキテクチャだと先述しました。
実際にクライアントサーバにおける
- クライアント
- サーバ
それぞれどのような役割を果たしているのでしょうか。
ネットワークで接続されているコンピュータを
- 特定の機能を集中的に担当するコンピュータ・・・サーバ
- 利用者の操作するコンピュータ・・・クライアント
と、役割で明確に分けます。
サーバの特定の機能は、サーバの種類によって違います。
クライアントサーバ・モデルでは、
- クライアントがサーバに「リクエスト(Request:依頼)」を送信
- サーバがそれに「レスポンス(Response:応答)」を返信
の形で処理が行われます。
特に、サーバ側では
- 演算機能
- 保管機能
が重視されており、クライアント側では描画機能が重視される傾向があります。
サーバサイド
クライアントサーバにおけるサーバの種類には
- Webサーバ
- メールサーバ
- アプリケーションサーバ
- ファイルサーバ
- プリントサーバ 等々
色々ありますが、そもそもコンピュータ分野におけるサーバはどのような役割を担っているのでしょうか。
サーバとは?
サーバ(server)は名詞で、サーブ(serve)という動詞には
- 〈人に〉仕える、奉公する
- (必要物・サービスを)供給する
- 【テニス・バレーボール】〈ボールを〉サーブする
という意味があり、サーブ(serve)の語尾に-erが付けることで、serve-er(serveするモノ、serveするヒト)、つまり
- (必要物・サービスを〕供給するモノ・人
という意味になります。
例えば、飲食業界でサーバ(server)で言えば
- 飲み物を提供するモノ = ドリンク・サーバ
- 食事を供給(提供)する人 = サーバ
と言いますよね。
では、コンピュータ分野におけるサーバとは、どのようなモノを指すのでしょうか
「コンピュータ分野のサーバ」と聞くと、多くの方は、物理的なサーバを想像する方が多いのではないでしょうか。
勿論、物理的なサーバも「コンピュータ分野におけるサーバ」ですが、広義にはコンピュータ分野におけるサーバは
- ハードウェアとしてのサーバ
- ソフトウェアとしてのサーバ
があります。
ハードウェアとしてのサーバ | ソフトウェアとしてのサーバ |
---|---|
コンピュータネットワークにおいて、他のコンピュータに対し、自身の持っている ・機能 ・サービス ・データ 等 を提供する物理的なコンピュータ | コンピュータネットワークにおいて、他のコンピュータに対し、自身の持っている ・機能 ・サービス ・データ 等 を提供するソフトウェア |
特にソフトウェアとしてのサーバは
- 機能
- サービス
- データ 等々
によって、色々な種類のサーバがあります。
これら色々な種類のソフトウェアとしてのサーバのお陰で、私たちは
- インターネットの利用
- メールの送受信
- データベースの処理・運用 等々
が利用出来ているのです。
サーバの種類
サーバは広義の意味では
- ハードウェアとしてのサーバ
- ソフトウェアとしてのサーバ
があると先述しました。
ここではソフトウェアとしてのサーバにはどのような種類のサーバがあるのか見ていきます。
機能 | 代表的ソフトウェア | 概要 | |
---|---|---|---|
ウェブサーバ | ウェブ処理 | ・Apache HTTP Server | クライアントソフトウェアとHTTPによる通信を行うサービスプログラム |
・nginx |
|||
メールサーバ | メールサービス処理 | ・Postfix | 電子メールを配送するためのサーバソフトウェア |
・sendmail |
|||
データベースサーバ | データベース処理 | ・MySQL | データベース運用、管理のためのシステム・ソフトウェア |
・PostgreSQL |
|||
FTPサーバ | ファイル転送処理 | ・FileZilla | ・File Transfer Protocol(FTP) ・FTPを使用してファイルの送受信を行うサーバソフトウェア |
・Cyberduck |
|||
DNSサーバ | 「名前解決」処理 | ・BIND | ・Domain Name System(DNS) ・ホスト名、メールアドレスに含まれるドメイン名等の「名前」から、IPアドレス等を得る「解決」を行うサーバソフトウェア |
DHCPサーバ | ネットワーク管理処理 | ・ISC DHCP | ・Dynamic Host Configuration Protocol(DHCP) ・コンピュータがネットワークに接続する際に必要な設定情報を自動的に割り当てるサーバソフトウェア |
サーバに共通する特徴
サーバには色々な種類が存在しますが、どの種類のサーバにも共通する基本的な特徴として
-
- アカウント管理
- ポリシー管理
- ログ管理 等
のセキュリティー
- 多数のユーザーの同時アクセスに対応できる性能
- 連続稼働に耐える
- 信頼性
- 可用性
- 保守容易性
- 将来の変更や拡張が容易な拡張性
が挙げることが出来ます。
三層アーキテクチャ
サーバサイドにおけるアーキテクチャには
- 二層アーキテクチャ
- 三層アーキテクチャ 等々
があります。
二層アーキテクチャはクライアントサーバ・モデルを指します。
二層アーキテクチャの特徴としては、アプリケーションプログラムがクライアント側で動く事です。
つまり、大雑把に言うとクライアントが、
- プレゼンテーション層(ユーザインターフェース部分)
- アプリケーション層(ビジネスロジック部分)
の役割を兼任しています。
二層アーキテクチャにおけるメリット・デメリットは下記の通りです。
メリット | デメリット |
---|---|
使い勝手の良いアプリケーションプログラム | アプリケーションプログラムは頻繁にプログラムの更新が行われるため、その都度全クライアントに配布し直す必要が有り、運用が大変 |
アプリケーションプログラムは多くのプログラムで構成されている場合が多く、クライアントのディスク容量を圧迫 |
ビジネスロジック・・・コンピュータ分野のソフトウェアにおいて、データベース上のデータに対する処理手順をプログラムコードとして実装した部分
二層アーキテクチャにおいて、アプリケーションプログラムがクライアント側で動く事に関してはデメリットが大きいため、このデメリットを解消するため、アプリケーションプログラムをサーバーに置く事で対応したものが三層アーキテクチャです。
三層アーキテクチャは、クライアントサーバ・モデルを
- プレゼンテーション層(ユーザインターフェース部分)
- アプリケーション層(ビジネスロジック部分)
- データ・アクセス層(データベース部分)
の三層に分割して構築したモデルを指します。
また、三層アーキテクチャはクライアントおよびサーバの処理を複数の階層に分離して配置することで、
- 変更容易性
- 拡張性
を高める事が出来ます。
次に、Webアプリケーションサーバを例に取って、
- プレゼンテーション層
- アプリケーション層
- データ・アクセス層
それぞれの役割・仕組みを見ていきます。
プレゼンテーション層
WEBブラウザからのHTTPリクエストを処理し、必要に応じてアプリケーション層に処理を委譲します。
また、アプリケーション層からリクエスト処理結果を受け取り、WEBブラウザに返します。
アプリケーション層
プレゼンテーション層からの要求に応じてビジネスロジックを処理します。
必要に応じてデータ・アクセス層にアクセスし、データの検索、保存などを行います。
データ・アクセス層
データを管理し、アプリケーション層に対して
- データ検索
- データ抽出
- データ保存 等
のインタフェースを提供します。
上記の様な
- プレゼンテーション層
- アプリケーション層
- データ・アクセス層
それぞれの役割が三層アーキテクチャの基本モデルになります。
以上、クライアントサーバの
- 概要
- サーバサイド
についての説明になります。
コメント