ちょっと前に比較しためもが雑にローカルに残っていたので投稿しておきます。
案件とかもHerokuで作ることが多いけどGoogle App Engine (以下GAE) が良さそうなので推進していきたい。
...のでとりあえずざっくりどんなものか自分のユースケースで比較してみた。
最低利用コスト
とりあえず、アクセスはそんなにないけど、安定稼働できてそこそこデータ入れたい(10,000レコード超)
案件とかのMVPならきっとこんなスペックで作るんじゃないかな(Herokuは無料DBで行くことも結構あるが)
Heroku
$16くらい
GAE(Flexible)
$75くらい。
ちょっと高め
FlexibleとStandardっていう環境があるみたいだが現状Ruby使うならFlexibleっぽい(Standardはベータ)
手順・設定のシンプルさ
githubのリポジトリをdeployする手順
Heroku
- コンソールでgithubと連携、リポジトリを選択などの設定
- githubへpushまたはその場でデプロイ
GAE(Flexible)
- コンソールでgithubと連携、リポジトリを選択などの設定
- app.yamlを作成して内容を書く
- cloudbuild.yamlを作成して内容を書く
- githubへpush
entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby
env_variables:
SECRET_KEY_BASE: hogehogehogehoge
APP_DATABASE: app_production
APP_DATABASE_HOST: localhost
APP_DATABASE_USERNAME: test
APP_DATABASE_PASSWORD: test
beta_settings:
cloud_sql_instances: rpg-g4:asia-northeast1:rpg-production
automatic_scaling:
min_num_instances: 1
max_num_instances: 5
cool_down_period_sec: 180
cpu_utilization:
target_utilization: 0.6
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
拡張性
Heroku
- Dockerfileを使ったカスタムイメージを利用可能
- docker pushに時間がかかる。ネットワーク状態の影響を受けやすい
- buildpackを使って拡張可能
- 込み入った拡張は難しい
GAE
- Dockerfileを使ったカスタムイメージを利用可能
- cloudbuildでDockerビルドされるのでそれなりに早い?
- Google提供のimageをFROMに指定してDockerfileを拡張すると安心
デプロイ
Staging環境やblue-green
Heroku
- heroku pipelineがイケてる
- prebootが良い
heroku pipelineはほんとに良い
GAE
- versionタグによって管理可能
- トラフィックを細かく制御できる
- A/Bテストにも
こちらもなかなか使いやすそう
環境変数
Heroku
- Settingから簡単に変更可能
GAE
- app.yamlに直接書く
- app.yamlをcommitしないといけない
- メタデータサービスというものから取得できるらしいが、コードに取得処理を書かないといけなさそう
自分は暗号化したapp.yamlをcommitして
circle ciからdeploy時にを複合してdeployしてるがHerokuに比べると手軽さがないすねぇ
ストレージ
Heroku
別途自分で用意しないといけない
GAE
GCP内にあるのでCloud Storage使うのがいいのかな
ログ
Heroku
- Papertrailかな
- 無料では容量制限あるが使いやすい
GAE
- Stackdriver Loggingをつかう
- 見やすくはないなぁ
まとめ
GAE(Flexible) | Heroku | |
---|---|---|
最低利用コスト | △ | ○ |
手順・設定のシンプルさ | ○ | ◎ |
拡張性 | ○ | △ |
デプロイ | ○ | ○ |
環境変数 | △ | ○ |
GAEのいいところ
- 東京リージョン
- セキュリティ安心感
- Dockerの扱いやすさ
結果
比較結果はまあHerokuいいよね。って感じですね。
でもGAE使ってみたかったのでGAEを使ってみることにしました()
RubyのイメージがStandardで提供されるようになるみたいなので、そうなったらコスト面などかなり改善しそうだし、拡張もしやすそうで○
GAEのStandard環境で使えるようになると、使ってないときに0台まで縮退できたりするみたいなので、ステージング環境とかのコストを抑えたり色々使いみちが多そうで期待大
GAEでサービスを作ったよ
以下のサービスのAPIサーバーをRails + graphql-rubyを使って書いてGAEにおいてます。