メインコンテンツへスキップ

gRPC - connect - Render でwebサービスを作ってみる:Renderでサービスを公開する

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

概要
#

gRPCの勉強のためサービスを公開する作業をしてみました。サービスのプロトタイプ実装ができたので公開してみたいと思います。公開にはRenderを使います。

以下のリポジトリのコードを使っています。

サービスは以下で公開しています!

作業手順
#

なにはともあれやってみます。

アカウント作成

Renderを許可

バックエンドサーバ作成
#

RenderのWorkspaceが作られました。ここからServiceを作るようです。どれがいいのでしょうか。Web Servicesかな?

Web Servicesを選ぶとSource Codeの指定に移動しました。

Renderアプリのgithubへのインストール

許可します。

Source Codeに選択肢が出たので選択してみます。

Webサービスのデプロイ設定をします。

デプロイします。

デプロイ成功したのか?サーバーの実行コマンドとか何も指定していないけど。

フロントエンドの設定で使うのでURLをコピーしておきます。今回は以下。

https://gobble-fcef.onrender.com

フロントエンドサーバー作成
#

コードの修正
#

バックエンド
#

バックエンド側はCORSにフロントエンドサーバーを指定する必要があるので以下のように設定を追加します。

/* CORS */
func withCORS(h http.Handler) http.Handler {
	return cors.New(cors.Options{
		AllowedOrigins: []string{"http://localhost:5173", "https://gobble-frontend.onrender.com"},
		AllowedMethods: []string{"GET", "POST", "OPTIONS"},
		AllowedHeaders: []string{"Content-Type", "X-User-Agent", "Connect-Protocol-Version"},
	}).Handler(h)
}

フロントエンド
#

フロントエンドからアクセスするバックエンドサーバーのURLを環境変数で指定できるようにします。gPRCの接続はhttps、websocketはwssの設定が必要です。以下のようなイメージの変更をします。

const backendUrl = import.meta.env.VITE_BACKEND_URL || "http://localhost:8080";
const wsUrl = backendUrl.replace(/^http/, "ws") + "/ws";

以上修正をしたらgithubに変更をpushします。 そうするとバックエンド、フロントエンドともにビルド・サーバーが再起動されます。

動作確認
#

以上でバックエンド、フロントエンドのサーバーをRenderでdeployすることができました。

今回は Dobble に似た Gobble というサービスを作ってみました!gRPCの勉強のために作ったので頭文字をGにしています。

以下のような動作になっています。Dobble というのはカードゲームで、前回のカードと同じシンボルを見つける、というシンプルなゲームです。

最終的にカードを捌き切ると以下のような結果になります。

まとめ
#

今回はgRPCをバックエンドとしてフロントエンドから一気通貫のwebアプリをRenderでdeployしてみました。今回のデプロイに向けて同じシリーズでgPRC調査からやってみましたが、結構大変でした。。。何が大変ってアプリの設計と開発が大変でした!特にアプリのステータス管理がめんどいめんどい・・・ちょっと技術を試すだけならもっと小さいアプリを作ったほうが良かったですね 😅 そして以下にAIが進化してもやりたいことの具現化が一番大変という狡兎を理解しました。ニーズの理解具現化大事。

ぜひDobble買ってやってみてください!

Reply by Email

関連記事

gRPC - connect - Render でwebサービスを作ってみる:gRPC with connect on Docker
· loading · loading
gRPC - connect - Render でwebサービスを作ってみる:開発テンプレート完成
· loading · loading
gRPC - connect - Render でwebサービスを作ってみる:local buf build for web service
· loading · loading