#はじめに
開発を進めていると、デプロイすることがあると思います。
デプロイをするにあたって、Webサーバーや、アプリケーションサーバーという
言葉はよく耳にすると思いますが、今回これらの何なのか、そしてどういった違いがあるかについて説明します。
#Webサーバーとは
###サーバーの役割
そもそもサーバーの役割とは、ユーザーが送るリクエストに対して、何らかのレスポンスを返すことです。
例えば、「ユーザーがURLを打ち込んで、サーバはそのURLに該当するビューページのファイルを表示する」などです。
Webサーバーの例:apache IIS nginx
###Webサーバーの役割
では、Webサーバーが何をするかというと、データベースと通信せずに、静的なコンテンツのみに対応できるやつです。
※静的なコンテンツ:リクエストのたびに内容が変更されないファイルのこと。
例:表示するものが定まっているCSSや、画像ファイルのこと
#アプリケーションサーバーの役割
では、逆にアプリケーションサーバは、動的なコンテンツを生成し、処理結果をWebサーバに返すという役割を果たします。
ようは、Webサーバーでは対応できないリクエストに対応できるやつです。
例:unicorn puma (rubyの場合)
実は、Webサーバーがなくとも、アプリケーションサーバーだけで本番環境は動きます。
しかし、Webサーバーを設置することで、負荷を分散させることができパフォーマンスが向上します。
#Web三層構成
この考え方をWeb三層構成といい、どのようにwebサーバーやアプリケーションサーバー、データベースを配置するかによって、
コスト面
パフォーマンス面
などが変わります。
※追記予定