速度対決!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

f:id:yuya0120117117:20150421104843g:plain
以下が作成したアプリ。
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

ちょっと速すぎ!!!

速すぎでしょ。トップページのリロードで1秒未満です。
ターボリンクに至っては、ホント一瞬。
すごいなAWS
最初はHerokuを使いながら開発しようと考えていたのですが、金のあるかぎりAWSを使いたい。
AWS万歳。

書籍