Help us understand the problem. What is going on with this article?

Railsを乗せるPaaSを比較してみた

ちょっと前に比較しためもが雑にローカルに残っていたので投稿しておきます。
案件とかもHerokuで作ることが多いけどGoogle App Engine (以下GAE) が良さそうなので推進していきたい。

...のでとりあえずざっくりどんなものか自分のユースケースで比較してみた。

最低利用コスト

とりあえず、アクセスはそんなにないけど、安定稼働できてそこそこデータ入れたい(10,000レコード超)
案件とかのMVPならきっとこんなスペックで作るんじゃないかな(Herokuは無料DBで行くことも結構あるが)

Heroku

image.png

$16くらい

GAE(Flexible)

image.png

image.png

$75くらい。
ちょっと高め

FlexibleとStandardっていう環境があるみたいだが現状Ruby使うならFlexibleっぽい(Standardはベータ)

手順・設定のシンプルさ

githubのリポジトリをdeployする手順

Heroku

  1. コンソールでgithubと連携、リポジトリを選択などの設定
  2. githubへpushまたはその場でデプロイ

GAE(Flexible)

  1. コンソールでgithubと連携、リポジトリを選択などの設定
  2. app.yamlを作成して内容を書く
  3. cloudbuild.yamlを作成して内容を書く
  4. 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においてます。

https://www.g-g-g-g.games

image.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away