【プログラミング全般】最近調べたことまとめ

しばらく離れていたらすっかり忘れていたので記録。

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や更新頻度を考えると現実的ではないらしい。 また、厳密にはデータベースの結果待ちなどで並列化は可能なので、使用するメリットはある。

Rails: Puma/Unicorn/Passengerの効率を最大化する設定(翻訳)