railsにおけるWebサーバーとアプリケーションサーバー
Webサーバーとアプリケーションサーバーの違いを説明します。今回はrailsを前提に書きます。
Webサーバーとは
Webサーバーとは、ユーザーからのリクエストを受け取り、処理をおこなうプログラムです。NginxとApacheなどがあります。
最初にユーザーからのリクエストを受け取るのがWebサーバーで、railsで処理が可能なものであればリクエストに簡単な処理を加えて、アプリケーションサーバーに渡します。
アプリケーションサーバーとは
アプリケーションサーバーとは、railsのアプリケーションを動かしているサーバーです。Webサーバーからリクエストを受け取ると、アプリケーションにその内容を知らせます。その処理が終わると、レスポンスをWebサーバに返します。アプリケーションには、UnicornやPumaなどがあります。
また、railsのMVCモデルもこのアプリケーションサーバーで行われています。
簡単な流れ
railsではRackという、railsとアプリケーションサーバーをつなぐものがあります。railsはこのRackを通して通信をおこなっています。通信の流れを見るとこんな感じです。
リクエスト → Webサーバー → アプリケーションサーバー → Rack → router → MVCモデル
レスポンスはこの逆で通信をしています