LoginSignup
76
78

More than 3 years have passed since last update.

Web技術の基本 ~Webアプリケーションの構造~

Posted at

はじめに

  • 新卒で入社をさせていただいた会社の課題図書でWeb技術の基本を読むこととなったので、そのアウトプットとして、本記事を書いています。
  • 本記事が僕と同じような駆け出しエンジニアさんのお役に立てれば幸いです。

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

Webアプリケーションはユーザインターフェースとなるプレゼンテーション層、業務処置を行うアプリケーション層、データ処理や保管を行うデータ層の3層構造となっている。

  • プレゼンテーション層はWebブラウザ(ChromeやFirefoxなど)とWebサーバーが役割を担う。
  • アプリケーション層はアプリケーションサーバー(APサーバー)が役割を担う。
  • データ層はデータベースサーバー(DBサーバー)が役割を担う。

Webアプリケーション3層アーキテクチャ.png

3層構造にするメリット

  1. 負荷分散

    • 1つのサーバーに3層全ての役割を実装することは可能だが、アクセス数の増加や複雑な処理を実装すると各層への負荷が高くなるため、システムの規模が大きくなると各サーバー機器の特性に合わせた役割を与えることが一般的である。
  2. 改修範囲の限定

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

MVCモデル

  • MはModelでアプリケーションの扱うデータと業務処理を指す。
  • VはViewでユーザーへの出力処理を指す。
  • CはControllerで必要な処理をModelやViewに伝える役割を担う。

3層アーキテクチャとMVCモデルの相違点

  • 3層アーキテクチャはWebシステム全体の設計思想のこと。
  • MVCモデルはサーバーサイド・スクリプトの設計思想のこと。

MVCモデル.png

MVCモデルのメリット

  1. 開発や改修の分業が容易になる。
    • 3層アーキテクチャのように各要素が分離されているため、仕様変更が別の要素へ影響を及ぼさない。
  2. 表示を変更したいときはView、処理を変更したい場合はModelと行ったように改修範囲が特定しやすい。

Webサーバーの役割

  • Webサーバーの役割は静的ページのデータやAPサーバーから転送された動的ページのデータをWebクライアントに転送すること。

Webサーバ.png

主なWebサーバー

Webサーバー名 説明
Apache HTTP Server 世界中でもっとも多く使われているWebサーバソフトウェアであり、大規模な商用サイトから自宅サーバまで幅広く利用されている。単にApacheとも称されている。
nginx(エンジンエックス) 静的コンテンツ(つまりサーバ上のファイル)を高速に配信するように設計されている。
IIS Microsoft Windowsの標準Webサーバ。

アプリケーションサーバーの役割

  • アプリケーションサーバーは業務処理を行うプログラム。
    • Webサーバーから送られてきたユーザーからのデータを受け取り、サーバーサイド・プログラムを実行することでそのデータを加工したり、DB(データベース)のデータを検索・加工した後、Webサーバーにレスポンスを返す。

Webアプリケーション3層アーキテクチャ (1).png

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

  • Rubyであれば、PumaUnicorn
  • Javaであれば、Tomcat
  • PHPの場合はアプリケーションサーバーを使う必要がない。
    • Apacheのモジュールを使用することでアプリケーションサーバーのような仕組みを導入できる。
    • もしくはFastCGIを通してPHPを実行する。

データベースサーバーの役割

  • データベースサーバーの役割はアプリケーションサーバーからの要求に従って処理を行い、結果をアプリケーションサーバーに返却すること。

DBサーバー.png

主なデータベースサーバー

データベースサーバーは大きく分けてRDBMSNoSQLの2つが存在する。

RDBMS

RDBMS(Relational DataBase Management System)ではデータやデータ間の関連を2次元の表で表す

代表的なRDBMS

名称 概要 有償/無償
Oracle Database Oracle Databaseは世界初の商用RDBMSであり、大型コンピュータからパーソナルコンピュータまで、幅広いプラットフォームをサポートしている。 有償
MySQL MySQLは、オープンソースのリレーショナルデータベース管理システムである。その名前は、共同設立者のMichael Wideniusの娘の名前である「My」と、Structured Query Languageの略称である「SQL」を組み合わせたものである。 無償
PostgreSQL PostgreSQLはオープンソースのオブジェクト関係データベース管理システム(ORDBMS)である。「Postgres」や「ポスグレ」と呼ばれることも多い。 無償

NoSQL

RDBMS以外のデータベースのこと。

代表的なNoSQL

名称 概要 有償/無償
MongoDB RDBMSのようにレコードをテーブルに格納するのではなく、「ドキュメント」と呼ばれる構造的データをJSONライクな形式で表現し、そのドキュメントの集合を「コレクション」として管理する(このデータの物理的な格納はBSONと呼ばれるJSONのバイナリ版といえる形式で行われる)。 無償
Redis Redisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列(キー・バリュー)、リスト、セットなどのデータ構造を扱える。 無償

参考記事一覧

76
78
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
76
78