🎾

サーバーの種類(Web&App)

2021/01/28に公開

EC2にクローンしたアプリケーションを本番環境で動作させるときに、
"Unicorn"と"Nginx"と言う2つのタイプのサーバーを使う必要がありました。

それぞれ「アプリケーションサーバー」と「Webサーバー」と呼ばれるもの。これらの違いをまとめます。

Webサーバー(Nginx)とは

静的コンテンツをレスポンスとしてクライアントに返すサーバー。ここでいう「クライアント」とは、サイトを閲覧するブラウザのことを示します。同時に、動的コンテンツに関する処理はアプリケーションサーバーに任せます。

静的コンテンツとは

誰がいつみても同じように表示されるコンテンツのこと。(画像ファイルなど)

アプリケーションサーバー(Unicorn)とは

Webサーバーから任せられた動的コンテンツを処理し結果をWebサーバーに渡すサーバー。アプリケーションサーバーの中にあるアプリケーション本体とリクエスト&レスポンスを行う。

動的コンテンツとは

みる人、みるタイミングによって内容が変更されるコンテンツのこと。リクエスト毎に該当するデータを表示。

シンプルにまとめます。

それぞれの役割

Webサーバー

  • 静的なコンテンツをレスポンスとしてクライアントに返す役割
  • 動的なコンテンツ生成をアプリケーション本体に依頼する役割
  • アプリケーションサーバから返ってくる処理結果をレスポンスとしてクライアントに返す役割

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

  • Webサーバから渡されてきた情報を、アプリケーションサーバー内で役割
  • 処理結果を、Webサーバに返す役割

一連の流れ

  1. ブラウザからのリクエストをWebサーバが受ける
  2. 動的コンテンツはアプリケーションサーバーに依頼
  3. アプリケーションサーバー内で動的コンテンツを処理してWebサーバーに返す
  4. 静的コンテンツ&動的コンテンツをWebサーバーがレスポンスで返す

SOTD

プログラミング言語の使用にはそれぞれ差異があるけど、今回のようなサーバーの概念などはどんなタイプの開発にも必要な知識だと思うのでこういった知識から固めていこうかなと思いました。

一方で、こういった概念から派生するエラーは曖昧で対処法を絞りずらいことが多いので、概念を理解した後は何を技術として利用するのかを明確化した方が良さそう。

Discussion