😽

Webアプリケーションについて

2023/02/25に公開

Webアプリケーションの3層構造

  • ネットワークを介してWebブラウザ上で動作するアプリケーションをWebアプリケーションと言います。
  • Webアプリケーションは基本的に3層構造(3層アーキテクチャ)と呼ばれる階層的な構造になっている。
    この3階層とは、ユーザーインターフェースとなる「プレゼンテーション層」、業務処理を行う「アプリケーション層」、データ処理や保管を行う「データ層」です。
  • プレゼンテーション層はWebブラウザとWebサーバー、「アプリケーション層」はアプリケーションサーバー(APサーバー)、データ層はデータベースサーバー(DBサーバー)がその役割まっとうします。
  • ここでいうサーバーとは、サーバープログラムのことを指している。
  • クライアントサイド・スクリプトはプレゼンテーション層、サーバーサイド・スクリプトはアプリケーション層で動作します。

負担分散

  • 層別に分割されていないアプリケーションであれば、必然的に単一のサーバー機器でリクエストを受け、業務処理、データ処理を実施することになる。一方、3層アーキテクチャでは層別に動作させるサーバー機器を分けることが可能になる。
  • 単一サーバーに3層全ての役割を実装することは可能であり、小規模なシステムではそのような構想になることがある。
  • しかし、複雑な処理を実装するとアプリケーション層やデータ層の負荷が高くなり、アクセス数が多くなると、プレゼンテーション層の負荷が高くなるため、システムの規模が大きくなる。

改修範囲の限定

  • アプリケーションの改修が必要になった場合、層別に分かれていることで改修範囲が小さくなるというメリットがある。例えば、データ層の改修が発生しても、アプリケーション層やプレゼンテーション層には影響を及ばさないため、改修コストを抑えることができる。

MVCモデル

  • アプリケーションをMVCモデルの構造にする利点としては、開発や改修の分業が容易になることが挙げられる。
  • 各要素が分離されていることで3層アーキテクチャと同様に、仕様変更が別の要素は影響を及ぼさないため、要素ごとに個別に開発を行うことが可能です。近年のWebアプリケーションは規模が大きく、少しずつ機能追加が行われてるものが多くなっている。そのため、改修や機能追加が容易で、分業で開発を行いやすいMVCモデルが使われている

フレームワーク

  • 一般的な処理の流れを「ひな形」として準備しておき、Webアプリケーションごとの独自の内容を開発者が埋めることで、プログラムが開発できるようにしたものをフレームワークという。

Webサーバー

  • Webアプリケーションに置いて、Webクライアントに対する窓口の役割を果たすプログラム。
  • Webクライアントからリクエストを受け取り、静的コンテンツを配信したり、動的処理が必要なものがあればサーバーサイド・プログラムと連携し、処理の結果として作成されたHTMLファイルをWebブラウザへ転送したりする。
  • 窓口の役割のため、このサーバーが動作しなくなると、サービスが提供できない上、リクエストを送信してきた「Webクライアントへ、サービスが現在停止しています」と通知することもできなくなる。

Webクライアント

  • Webサーバーとやりとりを行い。Webシステムを利用するためのプログラムをWebクライアントと呼ぶ。
  • 基本的な機能はWebサーバーへリクエストを送り、Webサーバーからのレスポンスを受け取ってそれを解釈する。

Webブラウザ

  • Webアプリケーションを利用するためのWebクライアントとして最も利用されるのが、Webブラウザ。
  • 元々はハイパーテキストの表示のためのプログラムでしたが、クライアントサイド・スクリプトの実行や、Cookieの管理が多くの機能を持つようになったことで、現在では多くのWebアプリケーションがWebブラウザで実行できる。

クライアントプログラム

  • Webブラウザは多くのWebアプリケーションに対する汎用的なWebクライアントですが、Webブラウザでは利用できないものや、十分に機能を活かせないものについては専用のクライアントプログラムが用意されている。
  • 例)Facebook、TwitterアプリなどがWebブラウザとは異なり、対応するWebアプリケーションに特化した機能(表示の最適化やログイン情報管理など)を持っている」

アプリケーションサーバー

  • アプリケーションサーバー(APサーバー)はWebアプリケーションの中核となる業務処理を行うプログラムです。具体的には、 Webサーバーから転送されてきたユーザーからデータを受け取り、サーバーサイド・プログラムを実行することで、そのデータを加工したり、データベースのデータを検索・加工した後、Webサーバーに応答を返します。
  • 3層アーキテクチャにおけるアプリケーション層に位置し、プレゼンテーション層とデータ層の両方のやり取りも行うことから、3層アーキテクチャにおいては最も多機能なサーバーである。

セッション管理機能

  • HTTPは基本的に1回のリクエストとレスポンスで通信が切断される、ステートレスなプロトコルです。
    そのため、HTTPだけでは、クライアント毎に発行した🆔(セッション🆔)を通信データに含めることで、同じクライアントからの通信を1つのセッションと呼ばれる単位で判別し、各クライアントのログイン状況などを確認する。
    クライアントがログアウトした場合は。それ以降の状態を把握する必要がないため、セッション🆔は破棄される
    ログインからログアウトするまでの一連が1セッションと考える

トランザクション管理機能

  • セッション中で行われる一連の作業の最小単位をトランザクションと呼ぶ
  • トレンザクション内には複数の処理が含まれるが、HTTPの通信は1リクエスト、1レスポンスで成り立っているため、アプリケーションサーバーはそれらの複数の通信を1つのトランザクションとまとめて管理する機能を持っている。

データ管理システム

  • Webアプリケーションに蓄積されるデータはデータベース(DB)に格納されますが、そのデータベースを管理する役割を担うのがデータベース管理システムです。
  • 主にアプリケーションサーバーから、データの検索や更新命令を受け、それに従ってデータ管理を行います。
    DBMSを搭載したサーバー機器を一般にデータベースサーバー(DBサーバー)と言います

キャッシュサーバー

  • 静的コンテンツのハードディスクからの読み出しやDBMSのデータ検索処理は、リクエストに対するレスポンスを覚えておけば毎回コンテンツを読み込んだりデータを検索したりする必要がなく、かつWebサーバーやDBMSに負担がかかりません。この「リクエストに対するレスポンスの記憶」をキャッシュと呼ぶ。

Discussion