【プログラミング全般】最近調べたことまとめ
しばらく離れていたらすっかり忘れていたので記録。
Webサーバー、アプリケーションサーバーについて
認識が混ざっていた。 WebサーバーはApacheとかNginxとか。 アプリケーションサーバーはUnicornとかPumaとか。 厳密にはWebサーバーにもなるが、本番環境ではNginxなどをリバースプロキシサーバーとして仲介させるのが一般的。
Rackについて
さっぱり記憶から消えていた。 Nginxを介してUnicornに届いたリクエストはRackという規格に基づいて、Railsに届く。 それ以外にも色々なミドルウェアを挟むことができる。実体はgem。
UnicornとPumaの違い
Unicornはプロセスベース、Pumaはスレッドベース。 PumaはMRI(CRuby)だとGILがあり、1プロセス1スレッドしか実行できない。 JRubyなら回避できるが、利用できるgemや更新頻度を考えると現実的ではないらしい。 また、厳密にはデータベースの結果待ちなどで並列化は可能なので、使用するメリットはある。