Herokuの無料枠がなくなるので、移行先候補としてTwitterでよく名前の出ているRenderを早速試してみた。

Herokuの無料プランが2022年11月28日で終了となるため、移行先候補としてtwitterでよく名前の出ているRenderを試してみました。

2022/11/28以降の最安料金比較

私が必要な機能の11/28以降の料金比較は以下の通りです。
cronを別の方法で実現出来れば、Renderでも引き続き無料運用できそうな気がしてきます。

noderediscron合計
Heroku$7/月$15/月無料 $22/月
Render無料無料$1/月
+ ¢0.016/分
$1/月
+ ¢0.016/分
価格 | Heroku
Heroku の価格設定はシンプルで幅広く、どのようなアプリや組織のニーズにも対応できるようになっています。データストアやクラウドサービス、サポートなどをお気軽にご購入ください。
Pricing | Render · Cloud Hosting for Developers
Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.

Hello World

以下の記事を参考にHello Worldで動作確認しました。
特に詰まるところはなし。

記事中では Public Git repository を指定していますが、 GitHubとアカウント連携すれば、Private Git repositoryも繋げることができました。

Expressアプリを無料のホスティングサービスRenderにデプロイする - Qiita
概要 Expressとは Node.jsで利用できるWebアプリケーションフレームワーク 今回はHTTPサーバーとして利用 Express/Node のイントロダクション - ウェブ開発を学ぶ | MDN Rend...

デプロイについて

デプロイ方法

デプロイは、管理画面の「Manual Deploy/Deploy latest commit」から、mainブランチの最新のコミットをデプロイすることが出来ます。

Herokuとは違って、デフォルトで、自分のGitHubのプライベートリポジトリからデプロイ出来るのは良いと思いました(Herokuでも設定で出来ると見たような気がしますが)。

デプロイ速度について

困ったのが、デプロイがめっちゃ遅いことです。

設定やアプリによるのかもしれませんが、私のやり方だと10分ぐらいかかります。
Herokuも遅いと感じますがそれどころの騒ぎじゃないです。

あまりに遅いので、試しにStarterプラン($7/月)にしてやってみたところ、早くはなりましたがそれでも5分ぐらいはかかりました。

ローカルマシンで動作確認して、デプロイはそこまで頻繁に行わないのであれば、我慢できるとは思いますが、何かRenderサーバーで動かしてデバッグしたい、となったときなどはかなりしんどそうです。
というかやってられんと思います。

Redisを使う

セットアップ方法

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

Redis®* | Render · Cloud Hosting for Developers
Learn how to store state in a Redis database on Render with this quickstart guide.

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アプリケーションの実行速度に課題があり、無料運用の移行先としては厳しい印象でした。

とはいえ、$7/月払えば、Herokuで課金するよりもredis分の$15/月 安く、なんとか実用に足る速度でweb+redisを使えることはわかったのは収穫でした。
Renderを使えば、最悪、アプリの継続はできそうです。

今日初めて触ったばかりで、何かやり方を間違っている気がするのでもう少し情報を集めつつ、別の移行先候補も探していこうと思います。

以上、参考になれば幸いです。
急ぎ調べたので、色々間違っている部分もあると思います。
ご指摘いただけると助かります。

Cloud Application Hosting for Developers | Render
Render is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.

コメント

タイトルとURLをコピーしました