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

3層アーキテクチャとは、クライアントサーバシステムを3階層に分割して構築するシステム形態のことを言います。

3層アーキテクチャは、3階層システム、3層クライアントなど、様々な呼ばれ方をしますが、このページではIPAの資格試験に出てくる「3層アーキテクチャ」で統一して説明します。3層アーキテクチャは、現在のシステム構築における主流となっており、ITに関わる人間であれば知らないと恥ずかしい基本知識ですので、是非最後までご覧ください。

前提:クライアントサーバシステムについて

3層アーキテクチャの前提知識となるクライアントサーバシステムの概念について。

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

処理の要求と結果の表示を行うクライアントと、実際の処理を行うサーバを分離して構築することで、負荷分散柔軟なシステム変更を実現することが可能になります。

3層アーキテクチャは、このクライアントサーバシステムに含まれる概念の1つ。

3層アーキテクチャとは?3階層システムとは

本題に入ります。

3層アーキテクチャとは、クライアントサーバシステムを、以下の3階層に分割したシステムのことを言います。

プレゼンテーション層

アプリケーション層

データ層

専門用語だけで解説してもイメージしづらいと思いますので、まずは、クライアントサーバシステムについて表した以下の図を再度ご覧ください。

クライアントサーバシステムの概要イメージ図

クライアントサーバシステムは、システムを「クライアント」と「サーバ」に分解して構築するシステム。

実際の処理を「サーバ」が担い、画面などの処理を「クライアント」が担うシステム形態です。

3層アーキテクチャという概念がでてくるのは、この図でいう「サーバ」部分です。

「サーバ」を更に細かく3階層に分けて、構築したのが3層アーキテクチャと呼ばれるシステムなのです。

それぞれの関係性を分かりやすくまとめたのが以下の図です。

よく、クライアントサーバシステムと3層アーキテクチャという言葉を混同して理解しがちな人が多いので注意しましょう。(あくまでも、3層アーキテクチャはクライアントサーバシステムの概念の1部です。)

概要が分かったところで、それぞれの役割を1つずつ確認していきましょう。

本サイトも、3層構造を用いたシステムとなっております。後半の章では、今あなたがこのページを見るまでのシステムの処理を例に解説していきたいと思います。

※説明簡易化のため、実際の処理内容とは多少異なる部分があります。

プレゼンテーション層

プレゼンテーション層では、ブラウザから受け取った「閲覧要求」をもとに、ページ情報を返すという役割を担っています。

プレゼンテーション層では、簡単に言うと画面のレイアウトや文字フォント、デザインを処理する層です。

実際にあなたが見ているこの画面のレイアウトなど(ヘッダーにロゴがあり、サイドバーには関連記事が記載されています)は、プレゼンテーション層から返された情報といえます。

プレゼンテーション層では、あくまでも画面の表示処理に特化した階層であると理解ください。

アプリケーション層

先ほど開いたページを読み終え、他の記事も気になったあなたは「検索ボックス」に「プログラミング」と入力します。

このとき動くのが、アプリケーション層です。

アプリケーション層では、プレゼンテーション層(画面)に入力された値をもとに、何かしらの処理を行う役割を担います。

検索ボックスに文字が入力されEnterボタンが押されたら検索処理を行う―。他のページへのリンクが押されたら、そのページ情報が格納されているデータベースにリクエストを送る―。

プレゼンテーション層から受け取った情報を基に、何らかの処理を行うのがアプリケーション層の役割です。

データ層

ページ情報をはじめ、サイトの構造や画像、その他あらゆる情報が詰め込まれているのがデータ層です。一般的には、単にデータベースと呼んだりします。

アプリケーション層からデータ要求(例えば「記事を開く」など)があれば、対象のデータをデータベースを探索し、結果をアプリケーション層に返します。

3層アーキテクチャの具体例

本サイトを開いてから、記事を表示するまでの流れを具体的に見つつ、3層アーキテクチャについて整理します。

本サイト、ビズドットオンラインを例に解説します。

①画面に値を入力:プレゼンテーション層

ユーザに文字や画像を表示する役割を担うのがプレゼンテーション層の役割であると説明した通り。

試しに、このサイトに「3層アーキテクチャ」と入力し実際にサイト内検索をしてみましょう。

この「3層アーキテクチャ」という単語を、プレゼンテーション層がアプリケーション層に受け渡します。

②入力された値を基に検索:アプリケーション層

画面に入力した「3層アーキテクチャ」という単語を受け取り、「検索」の処理を行うのがこのアプリケーション層。

画像に alt 属性が指定されていません。ファイル名: image-8.png

データ層に、「3層アーキテクチャ」という単語を含むコンテンツを要求します。

③対象のデータをアプリケーション層に返却:データ層

アプリケーション層から受け渡された「3層アーキテクチャ」という単語を基に、数百ある記事の中から記事の一覧をアプリケーション層に返却するのがデータ層。

画像に alt 属性が指定されていません。ファイル名: image-9.png

返されたデータが、今画面に表示されている記事の一覧です。

細かく説明すると、データ層で抽出された記事一覧は、アプリケーション層へ返され、その後アプリケーション層によって記事のコンテンツ(サイドバー・ヘッダー・フッター)が統合されます。

この統合されたデータをプレゼンテーション層が処理し、画面に記事が表示されるという流れです。

これで、3層アーキテクチャについての解説は以上です。

https://it-biz.online/it-skills/3-tier/

3階層システムとは

別名 : 3層システム / 3層クライアントサーバシステム / 3階層アーキテクチャ / 3-tier system

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

  1. プレゼンテーション層(ユーザインターフェース部分)
  2. アプリケーション層(ビジネスロジック部分)
  3. データ・アクセス層(データベース部分)

の3層に分割して構築したシステム。
クライアントおよびサーバの処理を複数の階層に分離して配置することで、ある階層へ変更を加える必要が生じた際にも柔軟に対応できるようなっている。
3階層システムでは、クライアント側にはユーザインターフェース部分のみを残し、あとはサーバ側に実装する。クライアントはユーザからの操作を受け付け、アプリケーション層からの処理結果を表示することのみを行う。
アプリケーション部分をクライアントから分離してサーバに実装することにより、ビジネスロジックが変更された場合でもサーバ側のアプリケーションを変更するだけでよく、変更がシステム全体に及ぶことは無い。また、大量のデータを扱うシステムでは、ネットワークを通じてクライアントとサーバの間で大量のデータのやり取りをする必要が無くなる。
f:id:ponsuke_tarou:20180203092127p:plain

各層の役割

プレゼンテーション層(ユーザインターフェース層 / UI層)

  • ユーザーに情報を表示したり、ユーザーからの入力を受け付けたりする機能を担当するレイヤ
  • 細かな変更や拡張が発生しやすい
  • 使い勝手を向上させるためのインターフェイスの改善
  • 新デバイス対応など(PDAや携帯電話対応など)

などなど
プログラムは、ユーザー・インターフェイスの実装なので、ほかの層に比較すれば、実装やテストにかかるコストはそれほど大きくない

アプリケーション層(ビジネス・ロジック層 / ファンクション層)

  • アプリケーションの実際の情報処理を担当するレイヤ
  • 業務フローや各種データ処理など、ビジネスで必要な情報処理をソフトウェアとして実装するレイヤ
  • 本質的な部分は比較的長期にわたって変わりにくい
    • ビジネスの処理そのものをプログラムとして表現したもの
  • ユーザー認証やトランザクション処理など、プログラム実装やテストには多大な工数が必要になることが多い

データ層

  • データベース・システムへのアクセス・保存機能を組み込むレイヤ
  • データベースの構造を変更することはそれほどない
    • 本質的なデータ構造自体は何十年も変わらず使い続けられるというケースも少なくない
    • ただ・・・
      • あらかじめ業務分析をきちんと実施してデータ構造を決定しておく必要はある
      • アクセス効率や可用性、セキュリティ性能向上など、運用面からデータベース構造の見直しが発生することはある
  • 利用するデータベース・システム(例えばSQL Serverか、Oracleかなど)によって内容が大きく影響を受ける
    • 逆に考えると・・・
      • データ層を独立させることで、データベース・システムの違いから、ビジネス・ロジック層を分離できるというメリットがある

3層構造はMVCと一緒のものでしょうか?

層構造をお勉強していて思った、「MVCモデルと似てない?」「一緒?」

  • プレゼンテーション層 – View
  • アプリケーション層 – Controll
  • データ層 – Model

な感じ?
「3層構造」「MVC」なんかでググるとすぐにわかります。それは間違いです。

違い : 3層構造は直線でつながる

MVCは三角でつながる -> プレゼンテーション層とデータ層はつながらないが、ViewとModelはつながる

違い : 表しているものが違う

という訳で違う、その違うものを対応させようとしたのがおかしいという結果です。

今回は多層アーキテクチャのお話です!

まず前段の知識として必要なのがシステム構成ですが、システムの構成を大きく分類すると、次のように3つに分けられます。

メインフレーム

大型汎用機・ホストなんて呼びますね。

クライアント・アプリケーション(クライアントサーバシステム)

オフコンやクラサバと呼ぶ種類がありますね。

Webアプリケーション

クライアントサイドやサーバサイドという種類がありますね。

Webアプリケーションやクライアントサーバシステムにおいては、3層クライアント、2層クライアントという考え方があります。今回は2層と3層の違いをまとめてみました。

3層クライアント、2層クライアントの違いは?

実は現在の主流は3層クライアントです!という結論みたいなことを書いてしますのですが、先ずはこの層の中には何があるか説明します。

層の中身

アプリケーションを製作する際に大きく部品を三つに分けることができます。① プレゼンテーション層(ユーザーインターフェース)
② ファンクション層(ビジネスロジック)
③ データ層(データベース)

※ファンクション層はアプリケーション層なんて呼び方もします。

この3つの層を繋げてクライアントからの支持をサーバで処理して、サーバの処理をクライアントに返したりしています。

イメージとしては以下の通りですが、クライアントに近い部分がプレゼンテーション層、サーバ(データベース)に近い部分がデータ層で、その間を取り持つ部分としてファンクション層があります。

3層の機能間イメージ

ポイントは3つの層の関係性です、プレゼンテーション層はデータ層にはアクセスしません。つまり、それぞれの層が直線的に情報が繋がります。これを3層アーキテクチャと呼びます。

3層と2層の違いと使い方

では、いよいよ3層クライアントと2層クライアントの違いとなりますが、実はここまで理解すれば後は簡単です。◎3層クライアント
クライアント側(PC側)に「プレゼンテーション層」があり、サーバ側に「ファンクション層とデータ層」があります。
◎2層クライアント
クライアント側(PC側)に「プレゼンテーション層とファンクション層」があり、サーバ側に「データ層」があります。

3つの層が、クライアント側なのかサーバ側にあるのかで、呼び方が違うのですね。

3層クライアントの場合はサーバ側にファンクション層の仕組み(アプリケーションサーバ)とデータ層の仕組み(データベースサーバ)が分かれていますので、実際はサーバが二つあるようなイメージですね。

ざっくり分けると、2層と3層の違いはアプリケーションサーバの有無なのかなとも思います。

2層構成は3層構成が主流となる以前によく利用されていた方式のようです。2層構造ではクライアント側やバックエンド側にビジネスロジックが実装されており、WebサーバでJava、PHP、Rubyなどの処理を含めたすべての処理を行っていたようですね。

そして、3層クライアントのメリットは以下のようなものがあります。・処理結果をクライアントに返すだけなので、ネットワーク上を流れるデータ量が軽減できる
・ビジネスロジックに変更があってもサーバ側だけの変更で済む(クライアント1台1台への適用は不要)
・サーバ側でデータベースとのやり取りが完結するので、データベースをロックする時間が短くて済む

それぞれのシステム構成でのパターンを整理すると次のようになります。

★Webアプリケーションのパターン
【3層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層
・Webアプリケーション : ファンクション層
・データベース : データ層

【2層の場合】
・Webブラウザ、Webサーバ : プレゼンテーション層、ファンクション層
・データベース : データ層

★クライアントサーバ(クラサバ)システムのパターン
【3層の場合】
・クライアントアプリ : プレゼンテーション層
・アプリケーションサーバ : ファンクション層
・データベース : データ層

【2層の場合】
・クライアントアプリ : プレゼンテーション層、ファンクション層
・データベース : データ層

MVCモデルとの違いは?

3層という言葉を調べているとよくMVCモデル(アーキテクチャ)という言葉が出てきますが、これは3層アーキテクチャとは全く別のアーキテクチャのことです。

詳しくはwiki(多層アーキテクチャ)をご参考にして頂ければと思いますが、大きな違いはMVCモデルは3つの部品がそれぞれ相互に通信するところです。JAVAでいうところのViewが「jsp」、Controllerが「Servlet」、Modelが「EJB」みたいな組み合わせで、jspがEJBとやり取りするこものあったりします。

MVCモデル(アーキテクチャ)

まとめ

今回はアプリケーションのアーキテクチャである多層アーキテクチャの3層クライアントと2層クライアントの違いに関して調べてみました。

現在は3層クライアントの方が主流のようですが、2層クライアントは専用のビューワーを導入することができるので、高度な画面構成や表現の仕組みが可能で、利用箇所や台数が限られる専用のシステム構成の場合は2層クライアントを採用することもあるようですね。

以上です!

https://itmanabi.com/3-layer-2-layer/

クライアントサーバシステムは、サービスを要求する側であるクライアントと、サービスを提供するサーバにアプリケーションの機能を論理的に分離した垂直分散システムの一形態です。

3層クライアントサーバシステムは、ユーザの入出力を担当する「プレゼンテーション層」、業務処理に依存するデータ加工を行う「ファンクション層」、データベース処理を行う「データ層」の3層に分離したモデルです。

よって「エ」が適切です。

11.gif/image-size:411×191

ファンクション層は、アプリケーション層,トランザクション層,ビジネスロジック層などの名前でも呼ばれます。

https://www.ap-siken.com/kakomon/26_aki/q11.html

応用情報技術者平成28年春期 午前12

クライアントサーバシステムの3層アーキテクチャを説明したものはどれか。

image.png

1、クライアントサーバシステム(C/S)は、
サービスを要求する側であるクライアントと、
サービスを提供するサーバにアプリケーションの機能を分離した垂直分散システムの一形態です。

この設問で問われている3層クライアントサーバシステムは、
 ・ユーザの入出力を担当するプレゼンテーション層,
 ・業務処理に依存するデータ加工を行うファンクション層,
 ・データベース処理を行うデータ層の

3層に機能を分離したシステムモデルであります。

https://qiita.com/lymansouka2017/items/490ab477587004e961ea

3階層システム 【3-tier system】 3階層アーキテクチャ / 三階層システム

3階層システムとは、クライアントサーバシステムの構成法の一つで、ソフトウェアの機能をユーザーインターフェースビジネスロジック、データベースの3階層に分割して組み合わせる手法。

目次

3階層システム

情報システムの機能を、利用者への表示や操作の受付を行うユーザーインターフェースを実装した「プレゼンテーション層」、業務に固有の具体的な処理や手順などを実装した「アプリケーション層」(ビジネスロジック層/ロジック層/ファンクション層/トランザクション層とも呼ばれる)、永続的なデータの記録や読み書きを実装した「データ層」(データベース層/データアクセス層)の3階層に分割してそれぞれ独立したソフトウェアとして開発する。

このような階層に分割して通信・連携方法を明確化しておくことにより、それぞれの階層に変更が生じても、修正したり入れ替えるのは当該階層のソフトウェアのみとすることができる。また、サーバ側のソフトウェアやコンピュータをアプリケーション層とデータ層で分離して独立に開発・運用することができる。特に規模の大きなシステムで開発効率や柔軟性を高めることができるとされる。

https://e-words.jp/w/3%E9%9A%8E%E5%B1%A4%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0.html

クライアントサーバシステム(client-server system:C/S)はサービスを要求する側であるクライアントと、サービスを提供するサーバに分離したコンピュータネットワークの形態です。3層クライアントサーバシステムでは、ユーザの入出力を担当するプレゼンテーション層,業務処理に依存するデータ加工を行うファンクション層,データベース処理を行うデータ層の3層に分離したモデルです。

一般にWeb3層クライアントシステムは、

  • プレゼンテーション層=Webブラウザ
  • ファンクション層=Webサーバ
  • データ層=DBMSとデータベース

の組合せで構成され、それぞれの層に伝達しながら処理が行われます。

  1. ブラウザは利用者の入力をサーバに送信する(HTTP要求)。
  2. WebサーバではHTTP要求を処理し、データの読み書きをデータベース(DBMS)に要求する。
  3. DBMSはデータベースにアクセスし、結果をWebサーバに返す。
  4. WebサーバではDBMSから得られた結果に応じてHTMLページを構成し、付加情報とともにクライアントに返信する(HTTP応答)。
  5. ブラウザはWebサーバからのHTTP応答を解釈し、結果を画面に出力する。
13.gif/image-size:411×211

https://www.fe-siken.com/kakomon/24_aki/q13.html

3層クライアントサーバシステムとは、プレゼンテーション層クライアントPC。サービスの要求や、出力結果を表示する。アプリケーション層データの加工を行う。データベース層データベースへアクセスし結果をアプリケーション層に返す。というように各層に役割を分担したシステム構成のことです。

正解の「ア」以外はデータベース層を構成するDBサーバがありませんので、3層クライアントサーバシステムとは呼べません。

https://www.fe-siken.com/kakomon/22_haru/q14.html

3層アーキテクチャ

読み方 : さんそうあーきてくちゃ

  • https://platform.twitter.com/widgets/tweet_button.06c6ee58c3810956b7509218508c7b56.ja.html#dnt=false&id=twitter-widget-0&lang=ja&original_referer=https%3A%2F%2Fwww.otsuka-shokai.co.jp%2Fwords%2Fthree-layer-architecture.html&size=m&text=3%E5%B1%A4%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%20%7C%20IT%E7%94%A8%E8%AA%9E%E8%BE%9E%E5%85%B8%20%7C%20%E5%A4%A7%E5%A1%9A%E5%95%86%E4%BC%9A&time=1620611362026&type=share&url=https%3A%2F%2Fwww.otsuka-shokai.co.jp%2Fwords%2Fthree-layer-architecture.html
  • https://www.facebook.com/plugins/share_button.php?href=https%3A%2F%2Fwww.otsuka-shokai.co.jp%2Fwords%2Fthree-layer-architecture.html&layout=button&size=small&width=61&height=20

3層アーキテクチャとは

2層のクライアントサーバー型システムを「プレゼンテーション層」「ファンクション層」「データ層」の3層に分割して構築するシステムのこと。

一般的に、クライアントサーバーシステムは「2層アーキテクチャ」と呼ばれ、クライアントに業務プログラムなどのアプリケーションを配置し、サーバーにデータベースを配置してシステムを構築する。2層アーキテクチャはクライアントに配置されたアプリケーションの管理に負荷がかかるため、アプリケーションをサーバーに配置する3層システムが登場した。

クライアントには入力や結果の表示を担当する「プレゼンテーション層」、サーバーにはデータ処理を担当する「ファンクション層(アプリケーション層)」とデータベースにアクセスする「データ層」があり、3層を明確に区別することで、システム性能や開発・保守効率が向上する。また、データ加工などの処理をサーバー側で実行させるため、処理性能の低いクライアント機でも利用できることや、クライアントサーバー間のデータ通信量が減るため、低速な回線でも応答速度が落ちにくいことも利点だ。さらに、クライアント上のモジュールが、サーバー上のデータベースの構造やデータの処理ロジックの変更による影響を受けにくいので、仕様変更も容易にできる。

なお、大規模のWebアプリケーションシステムはサーバー側を「Webサーバー」「アプリケーションサーバー」「データベースサーバー」の3層構造で構築する。この形態を3階層アーキテクチャと呼ぶ場合もある。

https://www.otsuka-shokai.co.jp/words/three-layer-architecture.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です