RailsアプリをHeroku(US)とGoogle App Engine(tokyo)のエンドユーザレスポンスタイムを計測してみた
この記事はアドベントカレンダー用に少し真面目に書いた記事だよ
はじめに結論
当たり前ですがGoogle App Engine(以下GAE)の方が早かったです.
Heroku
Google App Engine
方法と結果
環境
動かすアプリ
Rails + Elasticsearch を使った検索サービス
Heroku
Heroku Hobby Dyno なのでAWS USリージョンのどこかにサーバが立っています.
Google App Engine
Google App Engine をデフォルト 1インスタンスで tokyoリージョンに立てています.
計測方法
↓珍しく日本のサーバでのクライアントサイドからデータ計測が行える神サイトのでこちらを利用します. www.webpagetest.org
結果
Heroku
Google App Engine
はやい圧倒的なスピードである.
日本鯖なので First Byte が0.6ms位差が出ている.
てか heroku おそすぎでは.
しかしGAEは料金がたか~い(サービス移行4日目くらい)
プロダクト | リソース | 使用量 | 料金(円) |
---|---|---|---|
App Engine | Flex Instance Core Hours Japan | 6,440.42 Minute | ¥796.38 |
App Engine | Flex Instance RAM Japan | 107.34 Gibibyte-hour | ¥106.42 |
なので次はVPSとかで検証しようかな?
おまけ GAE Railsアプリの起動方法
GAE に触ったきっかけは?
GAE (Google App Engine) が無料枠で 28時間分あるみたいなので移行しようと色々試してみた.
しかしRails無料枠の対象外であることにあとから気がついた. (無料枠対象はStandard EnvironmentだけRubyはFlexible Environmentだったw)
rubyで Standard Environment はなんで使われへんのや!!
とりあえずGAEでのRailsアプリケーションをたてる
ここでは以下の構成で環境を構築します.
・GCE でPosgreSQLを起動してます.(CloudSQLは月$10くらいかかるので使わない)
・GAE (Google App Engine) で Rails を起動します.
こちらの記事ではGAEのことだけ説明します.
PosgreSQLに関しては以下のテンプレートを使っただけ
railsのルートディレクトリで下のコマンドでデプロイをしようとできます.
app.ymlつくるー?って聞かれるので Yesと答えましょう.
次になんかか聞かれますがとりあえずコマンドを中断します.
gcloud app deploy
下のDocumentを参考にスケーリング設定等を./app.ymlに書いていきます. Configuring your App with app.yaml | App Engine flexible environment for Node.js docs | Google Cloud Platform
Google App EnginのFlexible Environment の app.yml に関する日本語記事が見当たらなかったので書き記しておきます.
entrypoint: bundle exec rackup -p $PORT env: flex runtime: ruby includes: - secret.yaml #環境変数を設定するymlを分けておけるので便利 threadsafe: true #デフォルトだとシングルスレッド処理なのでマルチスレッド処理を許可 automatic_scaling: min_num_instances: 1 #最小インスタンス数 max_num_instances: 2 #最大インスタンス数 cool_down_period_sec: 60 #60刻みで設定、インスタンスがアイドル状態になってから寝るまでの時間 cpu_utilization: target_utilization: 0.8 #CPU使用率が何%になったら次のインスタンスを立てるかの設定、これだと80%になったら次のインスタンスが立つ
./secret.yamlの中身もついでに
env_variables: SECRET_KEY_BASE: 'hogehoge'
database.ymlもついでに
production: adapter: postgresql encoding: unicode database: your_databasename username: your_user password: your_password host: your_ip port: your_port
ここまでできたら一旦デプロイしてみましょう.
ここでものすごくデプロイに時間がかかるのでこーひーぶれいくーでもしましょう.
gcloud app deploy
とりあえずgcloud app browse
でサイトが見えればおk
ついでに独自ドメインも設定〜
GCPコンソールでGAEの設定項目ないのカスタムドメインを追加します. 追加したら以下のような画面になるのでDNSに設定しましょう.
お名前ならここからへんこうできる https://www.onamae.com/domain/navi/dns_controll/result