🌟

RailsアプリをHerokuからFly.ioに移行した

2023/09/29に公開

背景

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アウトバウンドデータ転送

Pricing

ですが、$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