
Heroku有料化(公式HP)となり、ついに私のwebサイト(Flask)も使えなくなったので、今回はHerokuの代替サービスとなる【Render】について紹介します。
Renderについて
結論、簡易的なwebアプリケーションであれば、Herokuとほぼ同じように、かつ無料で使うことができます。
ネット上では、Herokuよりも格安で使いやすい、機能が豊富などポジティブな情報が多い印象でした。
実際、無料枠の範囲では使用感はほぼ同じ、むしろHerokuよりも機能が充実していました。
個人的に一番良かったは、SSL化が無料できることです。デフォルトでSSL化してあるので設定不要です。
また、Heroku同様にカスタムドメインは無料で設定できます。
逆に、デメリットとして、『15分使用しないと非アクティブ化する』、『データベースの無料期間は3ヶ月』は気になりました。
後は、日本語のドキュメントがないので英語が頑張って読む必要があります。
準備
Githubアカウントの作成
以下については、Githubのアカウントを持っていることを前提としています。Githubのアカウントを持っていない方は、Githubアカウントの作成からお願いします。
Renderへの登録と連携
GithubのアカウントでRenderに登録すると、非常に円滑に進みます。
webサービスの作成とデプロイ
1.新しいWeb Service作成
『New+』から『Web Service』を選択

2.Githubとの連携
Githubのレポジトリを選択し、『Connect』をクリックします。

3.Web Service の設定と作成
以下の6項目について設定し、『Create Web Service』をクリックします。

Name
名前を設定します。
Region
使用するサーバーを選択します。『Oregon (US West)』,『Frankfurt (EU Central)』,『Ohio (US East)』,『Singapore (Southeast Asia)』の4つから選択します。
今ところ、この4つの違いは不明なので、とりあえず日本から比較的近い『Singapore (Southeast Asia)』にしておきます。
Branch
Githubのブランチを選択します。『main』であることが多いと思います。
Environment
今回は、Flaskのアプリをデプロイするので、『python 3』を選択します。
Build Command
必要なライブラリなどをrequirements.txtに締めておき、Githubに保存しておけばインストールしてくれます。締めてあるtxtファイルがrequirements.txt以外の名前の場合、変更が必要です。
基本的には、Herokuで使っていたものを使い回しで大丈夫です。
※注意点
いくつかのライブラリが古いverにしか対応していませんでした。よく使われるライブラリとしては、以下の3つでエラーが出ました。
pandas:panada==1.3.5まで

numpy:numpy==1.21.6まで

scipy:scipy==1.7.3まで

Start Command
こちらも、基本的にはHerokuと同様にgunicornを使用します。
Procfileに記載してある内容と同じ内容をコピペしておけば大丈夫です。
基本的には、『gunicorn app:app』かと思います。
Instance Type
『free』を選択します。

4.Deploy
webサービスを作成した時点で1度、デプロイされます。
ただし、だいたいエラーが出るのでマニュアルでデプロイが必要となります。
右上の『Manual Deploy』から『Deploy latest commnit』を選択すると、デプロイが始まります。
うまくいけば、『in progress』が『Live』に変わります。エラーがあると『Failed』となります。
左上にあるonrenderを含むアドレス(https://XXXXXX.onrender.com)がサイトのURLになります。


カスタムドメイン設定(Optinal)
これは必須ではありませんが、よく使うので簡単に解説しておきます。
カスタムドメインもHeroku同様に設定できます。公式ドキュメントに沿って、順に設定していきます。
左のバーの『Settings』から、『Custom Domains』にある『Add Custom Domain』を選択します。

ドメインを入力して、saveすると自動的にwwwがあるURLとwwwがないURLが生成されます。

次に各サーバーでDNSの設定を行います。
wwwがないドメインについては、ANAME、またはALIASにサイトURL(XXXXXX.onrender.com)を登録します。もし、ANAMEとALIASがない場合には『A』に『216.24.57.1』を登録します。
wwwがあるドメインについては、CNAMEにサイトURL(XXXXXX.onrender.com)を登録します。
これでカスタムドメインの設定は完了です。少し時間がかかるため、しばらくは『Certificate Error』が出るはずなので、気長に待ちましょう。
まとめ
いかがだったでしょうか?Herokuと操作はほとんど変わらなかったと思います。SSL化も自動で行ってくれるので、Herokuの代替サービスとして有力な候補になりえるかと思います。
プログラミングの勉強に悩んだら、、
プログラミングの勉強に悩んだら、『Udemy』をオススメします。
