Heroku から Render へ移行してみた

2022.09.29

こんにちは、森田です。

以前、趣味でHerokuでアプリケーションを作っていたのですが、先日Herokuの無料利用枠がなくなるという話を耳にし、別のPaaSへの移行を行うことにしました。

無料利用枠があるPaaSを調べたところ、どうやらRenderが良さそうだったので、本記事では、Heroku から Renderへ移行についてご紹介します。

Heroku と Render

Heroku、RenderともにPaaS型のクラウドプラットフォームです。現時点での両者の比較が、Renderのwebページにありましたので気になる方は是非ご参照ください。

どちらでも似たような機能を提供しているので、どちらを利用するかは好みかなと思いますが、 私の場合は、前述したように趣味のアプリケーションをただ動作させるだけの用途なので、無料利用枠のあるRenderへ移行を行います。

移行するアプリケーションについて

MNIST(手書き文字)の認識を行うアプリケーションです。

利用している主なライブラリのバージョンはは以下の通りです。

version

tensorflow-cpu==2.3.0
flask==2.0.1

ネックになりそうなのは、TensorFlowです。 では、実際に試してみましょう。

Renderへデプロイするための準備

始めてRenderを利用するため、会員登録から行なっていきます。

会員登録

以下のURLから登録していきます。

https://dashboard.render.com/register

GitHubとの連携

続いて、GitHubをRenderと連携させます。 Account Settings より Connect GitHub を選択し、そのまま進めます。

デプロイするアプリケーションのプロジェクトを用意

以下のようにプロジェクトを用意します。

├── main.py
├── model.h5
├── requirements.txt
├── static
└── templates
    └── index.html

各ファイルは以下に配置しているのでご参照ください。

GitHubリポジトリの作成

今回のプロジェクトを管理するために、以下のリンクより新規GitHubリポジトリの作成を行います。

https://github.com/new

以下のコマンドでアプリケーションのプロジェクトのリモートリポジトリに新規リポジトリを追加します。

git init
git remote add origin URL

Render上でのセットアップ

Web Serviceの作成

以下のリンクを開き、先ほど作成したリポジトリをRenderと紐付けを行います。

https://dashboard.render.com/select-repo?type=web

続いてアプリケーションの情報を入力していきます。
Nameなどを入力し、Flaskアプリケーションは、一旦WSGIサーバーなしで動作させるため、以下のコマンドをStart Commandに登録します。

export FLASK_APP=main.py && flask run -h 0.0.0.0 -p 10000

デプロイしてみる

では、gitコマンドを実行してデプロイしていきます。

git add .
git branch -m main
git commit -m "first commit"
git push origin main

正常にpushできると、Renderでもデプロイのイベントが発生します しばらく待つと、以下のようにデプロイの結果が表示されます。

あとは、アプリケーションURLにアクセスして動作を確認してみましょう。

最後に

Renderを利用してみましたが、思ったより簡単に使うことができたように感じます。 ぜひ、Herokuユーザであればすぐに使うことができると思いますので、PaaSサービスを利用する際にRenderも検討してみてはいかがでしょうか。

参考資料