自分は初心者に毛が生えた程度の知識しかないので一般的な基準ではない前提で見て欲しい。そもそもこの「Herokuの無料期間は終わるので代替先を探してみた!」って記事はさんざん書かれてるだろうから、今更ではある。
結論から書けば、無料Herokuの代替先は現状存在しないが、個人的には「Herokuより良いところも悪いところもあるけど概ねスタンドアロンで動かせる」という意味ではfly.ioがダントツだと思う。fly.io以外は「これ一つ足りない!」ではなく、どれもこれも二つも三つも足りないという印象。ただ当然のことだが、広く使われていたとという意味で「情報量がまったく違う」というのはどのサービスであれだいぶ大きい。
以下、とくに断りがなければ全て無料プラン前提の話をする。
自分に必要な要件
自分がHerokuで展開していたrailsのwebアプリに必要な要件は次のものがある
- RailsとPostgresqlが必要
- cronかスケジューラーとなるものが必要
- webアプリとは別にスクリプトを回せるWorkerが必要
- seleniumが動かせる環境が必要
- 24時間でなくてもいいが、せめて月700時間程度は動かせてほしい
単純なアプリではあるのだが、botやスクレイピングなども行うので意外と必要な項目が多いのがなかなかキツい。
render.com
Herokuの代替先が話題になったときに、まず最初に話題になったサービスだと思うんだけど、正直言って無料ではほとんどムリだと思う。あくまで、有償プランと考えるとHerokuより安いというだけだ。
Cronも使えるが有償である。Heroku Schedulerは無料だった…致命的なのはPostgreSQLが90日で初期化するという仕様。データベースを毎回作りなおすか、別のDB使うならありかもしれない。
ちなみに、herokuでもあった無償で使える時間制限は750時間。24*31で744時間なので、複数のアクティブがなければ一応起動しっぱなしも可能だが、herokuと同じように15分自動スリープはついてくる。
当初は「cronは有償といっても、Redisは無料なんだからsidekiq Schedulerを使えばいいんじゃん」と思っていたが、なんとWorkerも有料である。いや、webとworker一つずつなら無料だったHerokuが異常だったと言われれば返す言葉もないが。もし無料プランでrender.com使うのなら、余計な機能はいらず、データベースは他と繋げるって前提なら、まぁいけるかもしれない。それならrender使う理由もとくにないが。
Railway.app
2023年7月3日以降は無料プランが廃止なので、無償の選択肢ではなくなった。月5ドルで既存無料プランは使えるので、5ドルならいいかって人は今後も使えると思う。
Railwayはほんとーーーにドキュメントがわかりづらい。普通にrailsデプロイして動かすだけで相当苦しんだ。他二つはサンプルアプリを1からデプロイまでできるドキュメントがあるのに対して、Railwayは断片的な情報があるにすぎない。
railway.appは512MBのRAMが使えるのでHerokuと同等だが、500時間制限がかなりきつい。webは一時的にシャットダウンする時間を設けるだとかで対応できるかもしれないが、データベースやRedisも無料時間を食う計算になっているのは驚き。Herokuはデータベースは時間換算されてなかったと思うので、この仕様には驚いて最初は断念した。
しかしクレカを登録することで、500時間制限は解除される。5ドル未満の利用範囲なら無料なので、小規模なら一応無償ではいける。
ただ使ってみて、思った以上に料金のかかり具合がシビアだということがわかった。webについてはわからないが、自分はworkerだけ走らせてる。数時間に一回動かしてるだけで残りは何もしてないし、走らせたWorkerのメモリは解放するようにしてるのでかなり節約してるつもりだけど、それでも3.5ドルペースという感じ。タスクの実行そのものより、Railsの待機メモリの方だけで相当食ってるようなので、一時的にシャットダウンできるような仕組みができなきゃ、単純なRailsあげるだけでも割とカツカツだと思う。
あとはもしかしてだがwebとworkerを同時に一つずつ動かすは出来ないかもしれない?自分が試した限り、何やってもどっちかしか動かない。それとDockerfile自体は使えるが、Dockerコンテナでビルドしているわけではないっぽいので、Dockerの仕組みを利用したあれこれはできないように感じる(Docker composeも非対応)。Docker側で再起動してやればメモリ浮くかなぁと思ったらそれも出来ないのでなかなかつらい。
Fly.io
今回試した中では圧倒的に良かった。ドキュメントも圧倒的に丁寧だし、Rails使いへの配慮も行き届いていた。時間制限もなし!そしてPostgresqlは1GB無料で、Redisも使える!国内リージョンもある!回してみた感じ、web回すだけなら無料範囲超えるような料金かかる感じは全くない!最高!
だが致命的なのはVMのメモリ256MBだった。これじゃーchromedriverつかったSelenium動かせないんだね。ここはworkerなどでちょっと凝ったことしたい場合は、別の対処が必要なところ。実際webアプリ移設して動かしても、herokuのときよりは少し重いとは感じる。まぁ無料で使わせてもらってるサービスなんて身内向けなんで、多少重くて別に構わないと思うけど。
CLIがメインだから初学者にはとっつきづらい云々いわれていたが、正直railwayに比べれば圧倒的に簡単だった。デプロイ時に選択肢が出てきてそれを選ぶだけでセッティング完了。エラーも大してでないし、コマンドも多くてわかりやすい。ビルダーがたまにおかしくなるようなので、たまにビルダーをdestroyしなきゃいけないってくらいなもの。他は自分の使う限り不満はほぼなかった。
所感、今のところの迷い
自分のアプリは自分用ではなく、自分のコミュニティ用ということもあって「移行先がないから潰す」というわけにもいかず、とりあえずHerokuに上納金を支払うことにはしている。
だが大した利用人数もいない有志のためのアプリに月2000円支払い続けるのは正直にキツイ。
なので今はFly.ioにwebとデータベースを移管し、railwayにworkerを移すことにした。renderはそのどっちも有料なので無理。Fly.io側には何の不満もないんだが、railwayの料金のシビアさにちょっと困ってて、また他を試すかも。