RailsアプリをHerokuからFly.ioに移行した
背景
Heroku が有料化され、しばらく経ちました。
Rails製 個人開発アプリの app と db で月に $16 かかっていたので、巷に噂されていた fly.io に移行しました。
以下は移行のメモです。
サービスの技術構成
- Rails
- Nuxt.js (SPA)
- Postgresql
- Cloudflare
Rails アプリケーション上に Nuxt.js が載っている構成。
before
- パフォーマンス
Region は United States。
Speed Index が 7.9s とあるように、データ保存や取得時は体感でも遅く感じていました。
- 料金
after
流石に東京リージョンなだけあって、Speeed Index が -4.6s になりました!
以前に比べると、データの保存や取得も爆速です。
- 料金
今の所は、$0.1x程度。
以下が無料の範囲ですが、メモリが256MBと少ないため、すぐに512MBに上げることになります。例えばCSVダウンロード機能がある場合に256MBのままだと Out of Memory エラーが頻発します。
メモリ256mbのVM 3台
合計3GBの永続ボリュームストレージ
160GBアウトバウンドデータ転送
ですが、$5以下の場合は無料でいいよと fly.io からメールが来ていたので実質無料になっています。
詰まったところ
データ移行
Heroku から fly.io へデータ移行は専用のコマンドが用意されているのですが、自分が試した時は schema は反映されたものの、データの移行までされませんでした。
なので、こちらの記事を参考に別途 pg_dump をして対処しました。
cron
fly.io は Heroku でいう Heroku Scheduler アドオンのような簡単に cron を設定できる仕組みはないようです。
Crontab with Supercronic という手順を紹介されているので、こちらに従って cron の設定をする必要があります。
デプロイした後に cron の machine を再起動しないと、反映されなかったりしました。
まとめ
微妙にコマンドが動かなかったり、一時的にデプロイできなかったりするのですが、後発で頑張ってるので応援します。
これからの個人開発者のインフラの第一選択肢は fly.io になっていくでしょう。
今までありがとう Heroku。よろしく fly.io
Discussion