🖊️

Heroku→Renderに切り替えてWebサーバを無料プランで乗り切る

2022/10/29に公開

Herokuが無料プランを終了する話は少し前に界隈を賑わしました。

https://devcenter.heroku.com/changelog-items/2461

自分もその賑わいの中にいた1人でした。
9月にリリースを予定していた個人開発アプリのAPIサーバ・DBにHerokuを使っていたからです...!

そもそもHerokuの無料枠だと30分間何も操作が行われないと自動的にスリープモードに切り替わるしどうしようかなーと思っていたところに、有料化するという話が舞い込んだので、それなら!と、リリース前にRenderに切り替えることにしました。
https://render.com/

他の選択肢と比較してRenderを選択したのですが、その際には以下の記事などを参考にしました。

https://zenn.dev/shwld/articles/e624486c2a1208

Renderの使い方や費用感などは以下の記事などが非常に丁寧に紹介してくれているので譲りたいと思います。

https://zenn.dev/mc_chinju/articles/compare_render_and_heroku

※ この記事では細かい方法を紹介するというよりは、手段的なところの紹介に留めます...。

RenderのwebサーバをFreeプランで乗り切る

移行先の検討やRenderのメリットの記事は丁寧な記事がたくさんあるのでそちらに譲り、

今回はWebサーバをFreeプランで乗り切った話を書きたいと思います。

ちなみに今回は以下のような前提のもとになります。

  • 個人開発である
  • コストを最小限に抑えたい

WebサーバのFreeプランについては以下に詳細があります。

https://render.com/docs/free#free-web-services

個人的に、運用する上での最大の難点は以下でした。

Web Services on the free plan are automatically spun down after 15 minutes of inactivity.

15分inacitivityだったらサーバを落とすのですね。
次にアクセスしたときに起動から始まり、非常に重いアプリケーションになってしまいます。

個人開発でもそれは渋いと思い、
CloudFunctionsで13分ごとにリクエストを飛ばすようスケジューリングして、15分inacitivityにならないように制御した、という話です。

詳細なやり方は公式が非常に丁寧なので、参考にすればハマるところなくできると思います。

https://firebase.google.com/docs/functions/schedule-functions?hl=ja

ちなみに、DBはStarterプランに

詳細は以下にあるのですが、
https://render.com/docs/free#free-postgresql-databases

作成から90日後に停止されアクセスできなくなるので、これは個人開発でも耐えられない要件なので、その次に安いStarterプランでいくことにしました。
※ Render側もそもそもこのFreeプランを実運用に使えるものとしては想定していないと思うのですが..。

ただ、1GBしか入らないのでデータ量が増えてくるとすぐにPlanを上げないといけないですね。。。

おわりに

Render使い始めて2ヶ月ほど経ちますが、違和感なく快適に使えています。
(公式を読みながらやったのですが、最初の設定も大きな苦労なくスムーズにできた記憶です)

今回移行先選定に伴い、Supabaseも触ってみたので、いつかそれに関しても記事をアップしたいなと思っています。

https://supabase.com/

Discussion