アウトプットの部屋

エンジニアになるためのアウトプット

railsにおけるWebサーバーとアプリケーションサーバー

Webサーバーとアプリケーションサーバーの違いを説明します。今回はrailsを前提に書きます。

Webサーバーとは

Webサーバーとは、ユーザーからのリクエストを受け取り、処理をおこなうプログラムです。NginxとApacheなどがあります。

最初にユーザーからのリクエストを受け取るのがWebサーバーで、railsで処理が可能なものであればリクエストに簡単な処理を加えて、アプリケーションサーバーに渡します。

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

アプリケーションサーバーとは、railsのアプリケーションを動かしているサーバーです。Webサーバーからリクエストを受け取ると、アプリケーションにその内容を知らせます。その処理が終わると、レスポンスをWebサーバに返します。アプリケーションには、UnicornやPumaなどがあります。

また、railsMVCモデルもこのアプリケーションサーバーで行われています。

簡単な流れ

railsではRackという、railsアプリケーションサーバーをつなぐものがあります。railsはこのRackを通して通信をおこなっています。通信の流れを見るとこんな感じです。

リクエスト → Webサーバー → アプリケーションサーバー → Rack → router → MVCモデル

レスポンスはこの逆で通信をしています