1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Webアプリの通信と3層構造

Last updated at Posted at 2025-11-12

自己学習で,バックエンドにPythonを使ったWebアプリを製作しています。
(プロジェクトの詳細は後日掲載します)

製作にあたり,Webアプリの仕組みについて学んだ内容をまとめてみました。

動作環境

Webアプリは,基本的に以下のように

  • クライアントとWebサーバ
  • アプリサーバ
  • データベースサーバ

の3層構造となります。

各層のミドルウェアロゴは一例です

図1.jpg

  • クライアント(ブラウザ)
    ブラウザに表示されたWebアプリをユーザが操作することで,URLのホスト名が該当するサーバ宛にhttpリクエストを送信し,応答として返されたHTMLファイルをブラウザへ表示する。

  • Webサーバ
    サーバ内のWebサーバにて,クライアントの要求(リクエスト)のアプリケーションへの振り分けや,アプリケーションの処理結果のクライアントへの応答(レスポンス)を行う。また,不正な通信の遮断や負荷の分散なども行う。

  • アプリサーバ(アプリケーション)
    サーバ内のアプリケーションにて,リクエストの内容に応じた処理を実行し,処理結果や取得したデータを反映したHTMLファイルをWebサーバへ返す。

  • データベースサーバ(DBMS)
    サーバ内のDBMS(データベースマネジメントシステム)にて,アプリケーションから送信されるクエリに応じて,該当するデータベースから取得したデータを返す。

リクエスト通信内容

1. クライアント ~ Webサーバ

図2.jpg

上図のように,ユーザがWebサイトのリンクやボタンを押下すると,URLのHost名が該当するWebサーバ宛(ここではDNSサーバの説明は省略します)に以下のような,要求(httpリクエスト)が送信されます。

http_request
GET /website HTTP/1.1
Host: www.kachi.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.9
Connection: keep-alive
Cookie: session_id=abc123xyz

2. Webサーバ ~ アプリサーバ

図3.jpg

Webサーバは,受信したリクエストのパス(上図の ”website" や "content" )に応じて,あらかじめ設定された転送先のアプリケーションへリクエストを転送します。
この仕組みを「リバースプロキシ」 と呼びます。

ただし,リクエストのパスが静的ページ("page.html"のようにHTMLファイル指定)の場合は,転送せずWebサーバが直接応答します。

3. アプリサーバ ~ データベースサーバ

図4.jpg

アプリケーションとデータベースは,上図のようにデータを取得したいデータベースを管理しているDBMSへ対し,そのDBMSに応じた通信方式で接続を行います。
接続後,データベースとテーブルおよび取得したいデータを指定したクエリ(SQL)を送信します。

レスポンス通信内容

1. データベースサーバ ~ アプリサーバ

図5.jpg

クエリが成功の場合は,
 ・結果セット(取得したデータや,列名・型などの情報)
失敗の場合は,
 ・エラーコード
 ・エラーメッセージ
などが返されます。

2. アプリサーバ ~ Webサーバ

図6.jpg

アプリケーションは,
 ・ステータスコード(成功の"200"や,ページが見つからない"404"など)
 ・処理によって生成したHTMLおよび取得したデータ
をWebサーバへ返します。

3. Webサーバ ~ クライアント

図7.jpg

Webサーバは,アプリケーションから受け取ったレスポンスをクライアントへ返し,ブラウザは受け取ったレスポンスのコンテンツを表示し,通信が終了します。

さいごに

学習の過程でまとめた内容のため,内容には理解不足や誤りが含まれている可能性があります。
お気づきの点があれば、ご指摘いただけると幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?