Rails で作ったサービスを Heroku から Sqale に乗り換えた話

先日公開した FeedlyGraphホスティングを移行した。


乗り換えた経緯

Heroku の無料枠を超えたことがきっかけ。


アプリケーションは問題なかったが、問題は DB。
Postgress は 10k rows までが無料枠だった。
(よく確認してなかった。容量制限だろうと油断した)


サービスの性質上、Feedly購読者数のレコードが毎日ガンガン増えるため、1ヶ月足らずで突破していた。


Heroku の DB を有料で使うとすると、$9 / 10k rows か、$50 / month が候補。
流行ってないプライベートプロジェクトでそれほどのコストをかけるのはつらい。


少し気になっていた Sqale を調べてみると、月額940円で DBは2GBついてくる。
ということで Sqale に移行することに。


移行でやったこと

アプリケーションを修正

Gemfile を修正。


移行前(Heroku)

group :production, :staging do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

移行後(Sqale)

group :production, :staging do
  gem 'mysql2'
end


database.yml を修正。


移行前(Heroku)
Rails 初期状態なのでカット。


移行後(Sqale)

production:
  adapter: mysql2
  encoding: utf8
  username: { username }
  password: { password }
  database: { database_host }
  host: mysql001.sqale.jp


DB の移行

Heroku 上の Postgres をエクスポート

pgAdmin3 を使って接続し、ローカルにエクスポートした。
pgAdmin: PostgreSQL administration and management tools


Sqale 上の mysql にインポート

Qiita の記事を参考にデータを加工。
PostgreSQLのデータをMySQLに移行する - Qiita

あとは ssh で Sqale 上のマシンに接続。
mysql で直接 SQLを読み込ませてインポート。


Cron

Heroku の Scheduler でやっていたタスクを Cron に移行した。
Sqale - Sqale の特長


NewRelic

特に変更なし。
Heroku 上でアドオン削除すると何か起きそうで不安だったけど、問題なし。


ドメイン

ドメインの割り当てを Heroku のサーバから Sqale のサーバに変更。
自宅からは 5分くらいで変わっていた。
2日くらいしたら Heroku を削除しても大丈夫なはず。


最後に

極力無料の範囲内でやるつもりだったけど、少しコストをかけてでもサービスを続けたほうが問題が起きて勉強になる気がするので続けてみる。
元は取れないだろうけど、お世話になることだし、Sqale の広告でも入れてみようか。


ペパボの教科書 インターネットサービスではじめる、あたらしい自分

ペパボの教科書 インターネットサービスではじめる、あたらしい自分