【Web】Webアプリケーションの基本

MVCモデル

MVCモデルは、サーバーサイドスクリプト部分の設計モデル。

  • Model
    データ処理に関する部分。コントローラから命令を受けて処理を実行し、結果(表示データ)をビューに渡す。

  • View
    出力(表示)部分に関する部分。コントローラから表示命令を受けて、モデルに対してデータを要求し、返ってきた結果を受け取って表示する。

  • Controller
    ユーザー(クライアントサイド)からの命令を受けて、ビューとモデルに命令を出す。

Webサーバー

Webサーバーは、Webクライアントからの命令を受け取る役割を担うプログラム(が動いているコンピューター)である。

クライアントからのリクエストを受け取って静的コンテンツを配信したり、動的処理が必要であればAPサーバーに処理を依頼する、といった動きをする。

Webサーバーの構成について

Webサーバーが動作しなくなると、サービス提供ができない上に、ユーザーに対して サービスが停止中であることの通知もできない。そのため、Webサーバーは冗長構成をとるのが一般的である。

冗長構成とすることで、クライアントからの大量アクセスを捌くことができ、どれかが故障しても他のサーバーで処理を継続できる。また、こういった運用とする場合は、全サーバーで常に同じコンテンツが保存されるようにしておく必要がある。

サーバーに求められる性能

リクエスト量が増えたときの、レスポンス処理の速さが求められる。
レスポンス処理を早くするための性能としては、以下がある。

  • ハードディスクの読み取り速度
  • CPUの性能の高さ

Webクライアント

Webシステムを利用するためのプログラムのこと。Webサーバーにリクエストを送り、Webサーバーからのレスポンスを受け取る。

Webクライアントの種類

アプリケーションサーバ

APサーバーとも呼ばれる。 Webアプリケーションにおいて、サーバーサイドのプログラムでデータ加工などの動的処理を実行する役割のサーバー。

3層アーキテクチャにおいては、アプリケーション層に位置しており、プレゼンテーション層とデータ層の両方とやり取りを行う。実行するプログラムが複雑になるほど負荷がかかりやすいため、CPU性能やメモリ容量の設定が重要となる。

※Webサーバーのみで動的処理やデータ処理を担うこともできるが、サーバーへの負荷を考えて、動的処理はAPサーバー、データ処理はDBサーバーというように分散した構成にすることが一般的である。

APサーバーの機能

  • セッション管理機能
    ショッピングサイトなどでステートフルな処理を行う必要がある場合、APサーバーがセッションIDを発行して、セッション管理を行う。APサーバーは、クライアントごとにセッションIDを発行し、それを通信データに含める。

  • トランザクション管理機能
    セッション中の、一連の作業の最小単位をトランザクションと呼ぶ。
    予約手続きなど1つの通信で完結しない処理については、関連する通信を一つのトランザクションとしてまとめて管理している。トランザクション内の処理は、一つでも失敗すればトランザクションとしては失敗と見なされる。

データベース管理システム(DBMS

DBMSがのったサーバー機器をDBサーバーと呼ぶ。

DBサーバーの構成

データ保持のため、DBサーバーは冗長構成をとることが一般的である。 冗長構成とする上で、使用している機器間でのデータの同期をとることが重要となる。 冗長化の方法としては以下の3つがある。

  • ミラーリング
    APサーバーからの命令を受ける正のDBサーバーが更新命令を受けたときに、同時に副DBサーバーのDBMSに対して、同じ命令を転送する方法。平常時は、正のDBに対して命令が送られ、障害時には副のDBに命令が送られる。

  • レプリケーション
    ミラーリングと同様に、正のDBサーバーを更新したときに他のDBも同様に更新する方法だが、更新履歴を転送するという点が異なる。更新履歴の情報を受け取った副DBサーバーは、任意のタイミングでDBの更新を行う。

  • シェアードディスク
    DBを共通の一つの機器にもち、複数のDBサーバからそれを更新しにいく方法。この場合、DBサーバーには正副の概念はない。(APサーバーからどのDBMSにも命令が行くことがある。)また、DB自体は冗長化されないため、障害に強い機器を採用する。

キャッシュサーバー

更新が少ないコンテンツやデータとリクエストをキャッシュサーバーに保存しておき(この記憶をキャッシュと呼ぶ)、同じリクエストがあったときにキャッシュサーバーからコンテンツを読み出すようにすることで、サーバーの負荷を下げることができる。
Webサーバーの手前にキャッシュサーバーがいて、記憶しているリクエストが来た場合にはキャッシュサーバーからレスポンスを返すイメージ。

キャッシュの有効期限

キャッシュには有効期限をつけておく必要がある。同じリクエストに対して同じレスポンスを返し続けると、コンテンツやデータの更新がレスポンスに反映されなくなるため。

Web API

プログラムが、外部のWebシステムの機能を利用するためのインターフェース。 プログラムがWeb APIにデータを送信することで、データを受け取った外部のWebサーバーがプログラムに対して処理結果を返す。プログラムは受け取った結果を処理に使ったり、表示したりする。

〈WebAPIの例〉

  • 位置情報を送信すれば、その場所の天気予報が送信される天気予報API
  • ログイン情報と投稿内容を送信すれば、Twitterにその文章が投稿されるTwitter投稿API

マッシュアップ

複数のWebサービスを組み合わせて、新たなWebサービスを生み出すこと。
マッシュアップでは、Googleマップなどの位置情報やAmazonの商品情報がよく使用される。

CGI(Common Gateway Interface)

Webサーバー上でサーバサイドスクリプトを実行する仕組み。
クライアントがCGIプログラムの場所(URL)にアクセスすることで、プログラムが起動する。 WebサーバーはCGIへのリクエストに対してはCGIプログラムの実行結果を、それ以外のリクエストに対してはURLに対応するコンテンツを返す。
APサーバーを用意することなくサーバーサイドスクリプトを実行できるため、小規模な動的ページの作成に用いられる。

CGIへのデータの渡し方

クライアントがCGIのURLにアクセスした際、CGIにデータを送信することができる。 データの渡し方は4種類ある。

  • コマンドライン引数渡し
    形式:URL + ? + データ1 + データ2
    CGIプログラムの実行と同時にデータを渡す。

  • パス渡し
    形式:URL + / + データ1 + / + データ2
    データは「PATH_INFO」という変数に格納されるため、プログラム内でこの変数からデータを取り出して使用する。

  • GETメソッド
    形式:URL + ? + データ名1=データ1 + & + データ名2=データ2
    データは「QUERY_STRING」という変数に格納されるため、プログラム内でこの変数からデータを取り出して使用する。

  • POSTメソッド
    URLとは別に、リクエストのメッセージボディとしてデータを送信する。

サーバー間の連携

Webサーバーと、APサーバー、DBサーバー間の連携は、ネットワーク通信によって行われる。つまり、IPアドレスとポート番号を指定してTCP/IP通信が行われる。

IPアドレスは機器ごとに割り当てられているため、各サーバーが稼働している機器のIPアドレスを指定する。(通信相手のサーバーが同じ機器で稼働している場合は同じIPアドレスを指定することになる。)

サーバー間の通信に利用するプロトコル

Webサーバー<>APサーバー

以下のプロトコルがよく使用される。

  • HTTP
  • AJPApache JServ Protocol)
  • WebSocket

APサーバー<>DBMS

DBMSではそれぞれ独自のプロトコルが使用されており、APサーバーがそれら全てに対応するのが難しい。そのため、ODBC(Open Database Connectivity)というAPIを使用している。APサーバーは、ODBCドライバを使用して各DBMSプロトコルに対応して通信している。

参考

イラスト図解式 この一冊で全部わかるWeb技術の基本 | NRIネットコム株式会社, 小林 恭平, 坂本 陽, 佐々木 拓郎 |本 | 通販 | Amazon

スクリプト言語

Webクライアント

APサーバー

Web API

CGI