はじめに
qiitaの連続更新記録を更新し続けたいという思いで毎週いろいろなものを作っているが、どれもローカル環境開発の枠を出ておらず、何かしらの方法で外部に公開+自分だけが使用できるようなものを作ってみたいと思い始めました
そこで、「そういえば、はるか昔にherokuというものを使って何か作った記憶があるな」と思い、情報を探し回っていると何と無料枠が終わっているということが発覚しました
困ったこれでは、やりたいこともできなくなってしまったか、、
と思いましたが、諦めずに探してみると「Render」というサービスに辿り着くのでした
サーバーサービスの選定
現在だと簡単にサーバーを持ちたいなどがあれば、AWSやGoogle Cloudを使用するのが一般的になっていると思います
よく使用しているAWSではEC2の無料枠があるみたいですが、アカウント作成から12ヶ月経過すると無料枠がなくなってしまうようです、、
Google CloudではE2-micro(F1-micro)インスタンスが無料という情報もありましたが、詳細に利用したことがないので、勉強も兼ねて使ってみるのはまた今度
そしてこれらのクラウドインフラ利用する際に、高額な請求になるといった嫌なことを見かけてしまうのでそういうリスクはあまりまだ持ちたくないなという個人的な理由で使わないことにしました
段々と手段が狭まってしまいましたが、chatgptに縋ってみると「Render」というサービスがherokuの代替として人気ですという情報を教えてくれました
調べてみると確かに無料枠が使えそうなので試してみることにしました
Renderを試してみる
早速サービスに登録します
いろいろなところで紹介されているので詳細は省きますが、githubやgitlabがあるとサービス登録は簡単でした
いろんなサービスを作成できるダッシュボードが表示されます
今回はFast APIで簡単に「Hello, Render!」が表示されるようなAPIをデプロイしてみたいと思います
github内でFast APIのコードを書きます
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, Render!"}
fastapi
uvicorn
上記の内容でコミット&プッシュします
githubリポジトリにコードが反映されていることを確認後、再びRenderに戻ります
今回は「new Web Service」を使用します
そうするとgithubやその他のサービスと連携しますかという画面になるのでgithubを選択
そして利用したいリポジトリを選択
次に詳細な設定値を決めていきます
Name:任意の名前
Language:Pythonを選択
Region:一番近そうなSingaporeを選択
Branch:デプロイしたいコードが存在しているGitのBranch
Build Command:「pip install -r requirements.txt」
Start Command:「uvicorn main:app --host 0.0.0.0 --port 10000」
Plans:Free を選択
他の任意の項目は特に利用しないので、空欄で進めます
設定ページ最下部まで進めて行くと最終的にデプロイが始まります
デプロイ完了後、画面上部に表示されたWebページを確認すると「{"message":"Hello, Render!"}」が表示されました
注意点
一応、月に750時間は使用できるので1つのアプリであれば稼働し続けられますが、利用がない時は都度停止するのがベストかと思われます
また、Freeプランは15分で自動停止される模様です(リクエストが来ると再度立ち上がるようですが)
おわりに
ということで今回はHerokuに代わるサービスを探してみましたが、Renderという非常に個人利用にはもってこいのサービスが見つけられたかなと思います
これからの個人利用ツールの開発もまだまだ始まったばかりです
いろいろ試していければと思います