はじめに
普段おまじないのように使っているrails sコマンドについて理解したいと思います。
rails sとは
Railsアプリケーションを起動するためのコマンド。rails sの"s"は"server"の短縮形。
「Webサーバーを立ち上げなさい」という命令にあたるコマンド。
デフォルトの設定では、Railsに標準で付随しているPumaをWebサーバとして起動する。
Pumaとは
Railsのデフォルトのアプリケーションサーバ。
開発環境ではHTTPを直接受け取るためWebサーバとしても振る舞うが、
本番環境ではアプリケーションサーバに専念させ、
WebサーバはNginxなどに任せる構成が一般的らしい。
Pumaは、Railsのデフォルトのアプリケーションサーバーであり、コミュニティ全体で最も一般に使われているWebサーバーです
https://railsguides.jp/tuning_performance_for_deployment.html
Puma はアプリケーションサーバですが、 Web サーバとしての機能も持っています。そのため別途 Web サーバを用意しなくてもすぐに利用ができます。(利用方法や目的に応じて別途 nginx や Apache などの Web サーバと組み合わせることもできます)。
https://www.javadrive.jp/rails/ini/index3.html
PumaはWebサーバーとしての機能を兼ねることもできますが、通常の本番運用ではPumaはアプリケーションサーバーとしての機能に特化させて、NginxやApache等のWebサーバーと連携させた構成にすることが多い。
https://qiita.com/yusuke2310/items/1695cd702cdf25d34fbc
開発環境ではPumaがWebサーバとアプリケーションサーバを兼任していて、本番環境ではNginx等、Webサーバを別に用意している理由について。
「開発は手軽さ重視」して、
Pumaが一人二役(受付と調理)をこなしているという認識。
「本番は性能重視」にしているため、
効率と安全性を重視し、WebサーバにNginx、アプリケーションサーバにPumaで役割分担(分業)をしている認識。
🍌NanoBanana君による解説漫画
参考文献