
Herokuの無料プランが2022年11月28日で終了となるため、移行先候補としてtwitterでよく名前の出ているRenderを試してみました。
2022/11/28以降の最安料金比較
私が必要な機能の11/28以降の料金比較は以下の通りです。
cronを別の方法で実現出来れば、Renderでも引き続き無料運用できそうな気がしてきます。
※2022.10.05追記
9/26、現在のHeroku無料運用と同等のスペックで使える低価格プラン「Eco」が発表されました。
2022.11.28に無料が終了する前に利用可能となるそうです。移行方法は11月初旬発表とのこと。
ブログポスト:https://blog.heroku.com/new-low-cost-plans
$22はさすがにつらいと思っていましたが$8ならHerokuのままでいいような気がしてきました。
node | redis | cron | 合計 | |
Heroku Eco(新プラン) | $5/月 | $3/月 | 無料 | $8/月 |
Heroku Basic(Hobby改め) | $7/月 | $15/月 | 無料 | $22/月 |
Render | 無料 | 無料 | $1/月 + ¢0.016/分 | $1/月 + ¢0.016/分 |


Hello World
以下の記事を参考にHello Worldで動作確認しました。
特に詰まるところはなし。
記事中では Public Git repository を指定していますが、 GitHubとアカウント連携すれば、Private Git repositoryも繋げることができました。

GitHubリポジトリ(Private)の指定方法
PrivateなGitHubリポジトリを指定する方法の補足です。
右側の「Connect account」をクリック。

「Only select repositories」をチェックして、連携したいリポジトリを選択(全リポジトリを連携したい場合はAllを選択)して、「install」をクリック。

上で選択したGitHubリポジトリがリストに表示されるので「Connect」を選択して指定完了。

デプロイについて
デプロイ方法
デプロイは、管理画面の「Manual Deploy/Deploy latest commit」から、mainブランチの最新のコミットをデプロイすることが出来ます。
Herokuとは違って、デフォルトで、自分のGitHubのプライベートリポジトリからデプロイ出来るのは良いと思いました(Herokuでも設定で出来ると見たような気がしますが)。

デプロイ速度について
困ったのが、デプロイがめっちゃ遅いことです。
設定やアプリによるのかもしれませんが、私のやり方だと10分ぐらいかかります。
Herokuも遅いと感じますがそれどころの騒ぎじゃないです。
あまりに遅いので、試しにStarterプラン($7/月)にしてやってみたところ、早くはなりましたがそれでも5分ぐらいはかかりました。
ローカルマシンで動作確認して、デプロイはそこまで頻繁に行わないのであれば、我慢できるとは思いますが、何かRenderサーバーで動かしてデバッグしたい、となったときなどはかなりしんどそうです。
というかやってられんと思います。

Redisを使う
セットアップ方法
以下の記事を参考にredisをセットアップしました。
こちらも特に詰まるところはなく、動作確認できました。

process.env.REDIS_URLがセットされない
上記マニュアルの「ioredis(Javascript)」のソースでは、以下のようになっており、「process.env.REDIS_URL」でredisのURLを取得出来るとなっているのですが、envにセットされていませんでした。
const redis = new Redis(process.env.REDIS_URL)
恐らく設定が足りていないと思うのですが、原因はよくわかりませんでした。
マニュアルを読むと、REDIS_URLは、redisのダッシュボードにある「Internal Redis URL」の値が入るとのことなので、これを直接指定するようにしました。
当然、このURLが変わるとredisに繋がらなくなるので、あまり良いやり方ではありません。
本番運用時には、この問題を解決する必要があると思います。

ちなみに、「Internal Redis URL」は、同じアカウントの同じリージョンにデプロイしているサービスからアクセスできるURLとのことです。
つまり、一切外部公開されません。基本的にはこれを使うべきと書いてありました。
「External Redis URL」は外部サービスからredisを利用する場合のURLです。IPアドレス制限が可能です。
以下のようにしておけば、どこからでもアクセスできますが、セキュリティが緩くなるので注意が必要です。

「Redis CLI Command」は、redis-cliを使ってCLIからredisを操作するためのコマンドです。
コピーして、ターミナルにコピペするとそのまま使えて便利です。
実行速度について
私のnode+puppeteerのサーバーの場合、無料運用比較だと、RenderがHerokuの6倍遅く、RenderをStartプラン($7/月)にしてもまだ3倍遅いという結果になりました。
デプロイの遅さはともかく、この部分の遅さは アプリAPIの応答速度やcronバッチの処理速度に直接関わってくるため、かなり厳しい印象でした。
まとめ
Herokuの無料プラン終了に伴い、移行先の候補として名前が出ているRenderを試してきました。
Herokuと非常によく似た使い勝手で、特に詰まることなく、Renderに環境を移行することはできました。
管理画面の使いやすさや仕組みのわかりやすさは、Renderの方が洗練されているように感じるぐらいです。
一方で、上記の通り、少なくとも私の試した方法では、デプロイ時間やWEBアプリケーションの実行速度に課題があり、無料運用の移行先としては厳しい印象でした。
※2022.10.05追記
とはいえ、$7/月払えば、Herokuで課金するよりもredis分の$15/月 安く、なんとか実用に足る速度でweb+redisを使えることはわかったのは収穫でした。
Renderを使えば、最悪、アプリの継続はできそうです。
Herokuの新低価格プラン「Eco」では、現在の無料環境(node+redis)が$8/月で使えそうなので、ひとまずRenderの出番はなさそうです。
今日初めて触ったばかりで、何かやり方を間違っている気がするのでもう少し情報を集めつつ、別の移行先候補も探していこうと思います。
以上、参考になれば幸いです。
急ぎ調べたので、色々間違っている部分もあると思います。
ご指摘いただけると助かります。

コメント