速度対決!AWS、heroku、puma、webrick、 usリージョン、euリージョン
AWSを触っていたら、今まで気にかけていなかったwebサーバーの問題にぶち当たりpumaやwebrickなど意味不明な単語が出現し、今までいろいろ調べていた。herokuの公式ページを見ると、rails標準のwebサーバーwebrickの使用を避けpumaの使用を奨めていた。今までそんなことを気に掛けていなかったため普通に本番環境でもwebrickを使用していたが、調べてみるとそのような使い方は論外らしい。なので、webrickからpumaにしたらどれだけ速度が向上するのか適当に計測していることにする。
そしてherokuはUSリージョンとeuリージョンでしか使用できないため、それ相応の遅延が発生する。はたしてその遅延はどれほどなのかAWSの東京リージョンと比較してみる。
heroku × webrick
ローカルでRailsアプリを作り、そのままHerokuにアップロードするとこの環境になる。Railsアプリは静的なページと、scaffoldで作成したページの簡単なデザイン。
以下が作成したwebアプリ。
Heroku and weblick
これでも結構速い。
トップページのリロードでだいたい2.2秒くらい。
ターボリンクで移動するとブラウザで計測できなかったので数字は不明だが、体感的も結構速い。
ただし、アクセスが同時に来たときにwebrickは大変なことになるらしいのでpumaもしくはuniconを使うべき。
heroku × puma
Herokuの公式ドキュメントにやり方が載っていたのでそれを見ながらpumaに変更。
Deploying Rails Applications with the Puma Web Server | Heroku Dev Center
以下が作成したアプリ。
Heroku and puma
測定してみるとwebrickの場合と同じくトップページのリロードでだいたい2.2秒くらいで、速度の差はほとんどなかった。
ただ、頑張って設定したせいか、それとも本当に速くなっているのか気持ちターボリンクが速くなっている気がする。
ちなみにherokuはforkというアプリをまるまるコピーできる機能があるみたいで、今回はそれを使用した。詳しくは以下のurl参照
Forking Applications | Heroku Dev Center
heroku × euリージョン
herokuはeuリージョンも用意しているようで、デフォルトのUSリージョンから変更することができる。
以下が作成したアプリ。
Heroku and puma
まあ、そんなに変わらないですね。
普通にUSリージョン使おうと思います。
AWS × 東京リージョン
AWSのElasticBeanstalkというHeroku的なサービスを使用し、デプロイしたのが以下のアプリ。(設定はデフォルト)
Heroku and puma