Contents
Web3層構造とは?
Web3層構造とは、Webアプリケーション(Webシステム)を構築するときの物理的なサーバーの構造です。
1つの物理的なサーバー(筐体)にWebサーバー、アプリケーションサーバ-、DBサーバーの3つの機能を持たせるのではなくて、1つの物理的なサーバーに1つの機能を割り当てる要する構成です。
各層の役割とソフトウェアを表にまとめました。
層 | Webサーバー | アプリケーションサーバー | DBサーバー |
役割 | HTTPリクエストの受付とレスポンスの返却。 静的コンテンツ(HTML/CSS/JavaScript/画像/動画...)を配信する。 | アプリケーション(Java/SpringBoot)・動的処理を実行する。 | データベース機能を提供する。 |
ソフトウェア名 | ・Apache HTTP Server ・Nginx ・IIS(MicroSoft製) | ・Tomcat/Jetty/GlassFish(Java) ・Puma/Unicorn(Ruby) ・mod_php(PHP) *1 ・mod_wsgi(Python) *1 | ・MySQL ・PostgreSQL ・Oracle ・Windows SQL Server |
*1について・・・PHPとPythonはアプリケーションサーバーを用意する必要はありません。WebサーバーのApacheに、拡張モジュールであるmod_phpやmod_wsgiをインストールすることで動的処理を実行できるようになります。
代表的なWebサーバーソフト
Webサーバーとして使用されるソフトウェアはオープンソースのApachとNginxがほぼ占有しています。マイクロソフトのお客さんは、IISを使用することがあるようです。
市場シェア | ソフトウェア名 | ベンダー |
50% | Apache HTTP Server(オープンソース) | Apacheソフトウェア財団 |
35% | Nginx(オープンソース) | Nginx社 |
15% | IIS | MicroSoft社 |
代表的なDBサーバーソフト
DBサーバーソフトはいわゆるRDBMSです。
市場シェア | ソフトウェア名 | ベンダー |
MySQL(オープンソース) | Oracle | |
PostgreSQL(オープンソース) | ||
Oracle database | Oracle | |
SQL Server | MicroSoft社 |
Web3層構造のメリット・デメリットは?
なぜ、Webアプリケーションを3層構造にしておくか、なぜ、そうする必要があるのかと言うと、層に分割しておくメリットがあるからです。
メリット
・層を分けることで、サーバーの負荷分散ができ、処理の高速化と故障しにくさが期待できる。
・層を分けることで、故障範囲を限定でき、サーバーの取り替えが簡単になる。特定の層だけ故障したら、その層だけを取り替えれば済むので楽になります。
・層を分けることで、冗長化(複数台構成)がしやすくなり、大量リクエストに対する対策がとりやすくなる。
デメリット
・層を分けることで、物理サーバーを複数用意する必要があり、コスト(お金)がかかる。
Web3層構造とMVCフレームワークの違いは?
Web3層構造は、作成するWebシステム全体のサーバー構造の話です。
MVCフレームワークは、3層の真ん中、アプリケーションサーバーでアプリケーションを構築するときのモジュール構成(クラス構成)の話です。
Web3層構造をAWSクラウドで構築するには?
AWSでWeb3層構造を作るには、次のようなサービスを組み合わせれば良い。
層 | Webサーバー | アプリケーションサーバー | DBサーバー |
AWSのサービス名 | Amazon EC2 | Amazon EC2 | Amazon RDS |
概要 | LinuxコマンドでApacheまたはnginxをインストールする。 | ・LinuxコマンドでJava(JDK)をインストールする。 ・SpringBootの場合は組み込みTomcatを使用する。 SpringBootでない場合はTomcatをインストールして、Javaプロジェクトの.warを配置する。 | RDSは好きなRDBMSを選択すれば良い。 |