新しいWebサービスサーバを立てることになったが、そのためのサーバをどうするか、決める必要があった。
自分でベンチマークをとったわけではなく、ネット上の情報を集めただけだが、その時に調べたことを備忘録的にメモしておく。
前提
- そのサービスはPython(Pyramid)で作られている
- 開発中はpyramid導入時に自動で使えるようになる「pserve」コマンドを使ってサービスを起動していた(pyramidのチュートリアルにこれ使えと書かれていた)
疑問点
- 公開後もこの「pserve」コマンドを使ってサービスを提供しても、本当にいいの?
- それ以外の手段を考慮し、もっといいものがあればそれを使うべきでは?
個人的結論
- pserveではなくnginx+gunicornを使おう
理由
- pserveは画像などの静的コンテンツの提供とクエリの結果などの動的コンテンツの提供、両方を担っている
- 静的コンテンツの提供と動的コンテンツの提供は別サーバが行った方がいい(いわゆるリバース プロキシ)
なぜnginxなのか
- 同時リクエストを多く処理することに特化しており、シンプルで早い
なぜgunicornなのか
- そこそこ早く、Pyramidとの親和性も高く運用しやすい