Heroku無料枠廃止で路頭に迷う開発者に捧ぐ、次世代PaaS「Render.com」の使い方

Herokuは2022年8月25日、Heroku DynosやHeroku Postgresなどの無料プランの廃止を[アナウンス](https://blog.heroku.com/next-chapter)しました。このニュースには、個人開発者だけでなく、Web開発者であればほとんどの人が衝撃を受けたのではないでしょうか？

かくいう僕も個人開発で作っているアプリのインフラの多くをHerokuに頼っていました。

いままで個人開発者や技術検証の場面で役に立ってくれたHerokuに感謝しつつも、個人開発では、月間数千円のコストですら惜しみたいので、何か別のプラットフォームへの移行を検討しなければいけません。

そこで見つけたのが、[Render.com](https://render.com/)というサービスです。Herokuとほぼ同じ内容のインフラを無料で提供してくれています。

## Render.comとは？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/9b9c42c8-1a79-de6d-3238-90b870ccf1a3.png)
「Render」という会社が運営するPaaSプラットフォームです。アメリカ・サンフランシスコに拠点を置く比較的若い会社で、2018年創業、2019年のTechCrunch Battlefieldで優勝しています。

https://techcrunch.com/2019/10/04/and-the-winner-of-startup-battlefield-at-disrupt-sf-2019-is-render/

創業者はAnurag Goelというインド系のエンジニアで、Stripeの8番目の社員として参画していたみたいです。インド工科大学出身です。IIT強し。

Herokuとの比較ページを作成しているあたり、もろ競合として意識している感じがします。今回のHeroku無料枠終了はRenderにとってはめちゃめちゃ追い風だったんでしょうね。

https://render.com/render-vs-heroku-comparison

## Render.comが提供するサービスと価格
丸々Webサイトから持ってきてしまいましたが、Herokuで小規模Web開発をしている人にとっては十分なレパートリーじゃないでしょうか？

MySQLはないけど、HerokuのClearDBは無料枠廃止になってないので、どうしてもMySQLがいいという人はHerokuを使い続けるといいと思います。

今回Herokuで無料枠廃止になったアプリケーションサーバーと、Postgresがほぼ同じスペックで無料で提供されているのがありがたいです。
![FireShot Capture 001 - Pricing - Render · Cloud Hosting for Developers - render.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/9a8e215a-1fea-9116-a72c-422826288f37.png)

## アプリをデプロイしてみる
基本的な使い方はHerokuと特に変わりないです。簡単すぎて解説するまでもないと思いますが、サクッと解説します。僕が個人開発で使っていたのはNestJSだったのですが、5分くらいでRender.com上で動くものが作れました。

### 1. アプリを作成する
ログイン後の画面右上の「New」から「Web Service」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/e5f39f84-04a4-0b8e-16a7-f460d01dc698.png)

### 2. GitHubレポジトリと連携
Render.com上からGitHubにログインし、レポジトリへのアクセス権限を付与します。
レポジトリの欄に対象アプリのレポジトリが表示されたら、「Connect」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/b190db4e-1f2e-655e-99cc-6a7aef1fcc97.png)

### 3. アプリの設定
アプリ名、言語、リージョン、連携レポジトリブランチ、ビルドコマンドを設定します。ここらへんの設定も基本的にはHerokuとほぼ一緒だと思います。入力し終わったら画面下部の「Create Web Service」で完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/8d8d7be5-2d6d-f23e-799a-bdc9b5174594.png)

デプロイが完了するまで数分待つと、dashboard上のSTATUSが「Deploy in progress」から「Deploy succeeded」に変わります。https://sample-app.onrender.com のようなURLが発行されるのでアクセスして動作確認してみてください。

※ デプロイが完了してURLにアクセスしても、数十秒くらいはレスポンスが返ってこないことがありますが、少し待つと動くようになります。

## PostgreSQLを作成してみる
こちらもWebアプリ同様、画面右上の「New」ボタンを開いて、「PostgreSQL」を選択します。
以下のような画面に遷移するので、必要情報を入力します。Herokuと違って、DB名やユーザー名が自分で選択できるんですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/1532641c-ba9f-21a7-d986-c9a04a4dacc6.png)

接続情報は、dashboardのサービス一覧から、作成したPostgreSQLを選択 → 詳細画面中段のConnectionsというセクションがあるのでそこから参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2731282/eba61538-9328-664b-189a-5f6414c68042.png)

Render.comにデプロイしているアプリから接続する時には、Internal Database URLを使うことで、レイテンシを最小限に抑え、アプリのパフォーマンスを最大化できるとのこと。ローカルとかから接続するときは、External Database URLを使いましょう。
> The hostname will differ depending on where you’re connecting from. For services deployed on Render, you should always use the internal connection parameters shown below. This minimizes network latency and maximizes app performance.

[PostgreSQL | Render · Cloud Hosting for Developers](https://render.com/docs/databases)



:::note info
**追記：2022年09月12日 21:47**
PostgreSQLが無料なのは、最初の90日だけみたいですね。スポットの技術検証だと問題ないけど、継続的にWebサービスを運営する人にとっては厳しいかもしれません。
:::

## まとめ
Herokuの無料枠は11/26で終了するみたいなので、Herokuでインフラを立てている開発者の方は、次なるプラットフォームを探している最中だと思いますが、その選択肢の1つとしてRender.comはかなり有望だと思います。

他にも個人開発者にとって最適な移行先を知っている人は是非コメントで教えてください。

あと、僕が個人開発で作っている、日程調整サービス「Calinto」も興味ある方は是非ご覧ください。

https://calinto.jp/

そして、いままでありがとう、Heroku。