Spring Boot で jar まではできた。で、結局どこに置けばいいの?
という人向けの記事です。
まず用語をざっくり整理
GCP ってなに?
Google がやっている「クラウドの総合サービス」です。
サーバーやデータベースなどを借りて、自分のアプリを動かせます。
この記事で出てくる Cloud Run は、この GCP の中の 1 サービスです。
Kubernetes ってなに?
たくさんのコンテナ(Docker など)を、自動で並べたり増やしたりする管理システムです。
ただ、個人開発でいきなり直接さわる必要はあまりありません。
Cloud Run のようなサービスは「Kubernetes 的な難しいところ」を隠してくれているので、
こちらはコンテナ 1 個を渡すだけ、というイメージで大丈夫です。
Cloud Run と Render の立ち位置
- Cloud Run : GCP 上でコンテナを動かすサービス
- Render : GitHub 連携がしやすいホスティングサービス。Docker なしでも Java アプリを動かせる
どちらも jar ベースの Web アプリを公開できます。
結論だけ先に:迷ったらこの 3 択
ざっくり、こういう分け方で考えると決めやすくなります。
- とにかくラクに無料で試したい → Render
- GCP やコンテナの勉強もしたい → Cloud Run
- どっちか決めきれない → まず Render、慣れてきたら Cloud Run に引っ越し
最初の選択を「一生モノ」にする必要はありません。
個人開発なので、気軽に試して合わなければ乗り換えでOKです。
パターン別にもう少しだけ詳しく
1. とにかくラクに無料で試したい(Render)
こんな人向けです。
- インフラはあまり触りたくない
- GitHub に push したら、あとは自動でビルドしてほしい
- クレジットカード登録はできれば避けたい
この場合は、GitHub + Render Free プラン が楽です。
ざっくり手順イメージ
- jar が
java -jarで動く状態にしておく - プロジェクトを GitHub に push
- Render にサインアップ → 「New」→「Web Service」
- リポジトリを選ぶ
- Build コマンド(例:
./gradlew bootJar)と Start コマンド(java -jar ...)を設定 - プランで Free を選ぶ
これで、https://xxx.onrender.com のような URL がもらえます。
2. 勉強も兼ねて、GCP やコンテナを触りたい(Cloud Run)
こんな人向けです。
- 仕事でも GCP を使う可能性がある
- Dockerfile や
gcloudコマンドに慣れておきたい
この場合は、jar を Docker イメージにして Cloud Run にデプロイ するのが良いです。
ざっくり手順イメージ
-
Dockerfile を書く
- 例:
eclipse-temurinなどの JRE ベースイメージを使って jar を COPY
- 例:
-
docker build→docker runでローカル確認 -
GCP プロジェクトを作る(クレジットカード登録が必要)
-
Cloud Run と周辺の API を有効化
-
Cloud SDK を入れて、
gcloud run deployを実行
Cloud Run は無料枠もありますが、
「完全にノーリスクの無料」ではないので、料金ダッシュボードだけはたまに見る前提で使うのがおすすめです。
どっちを選んでもやり直せる
大事なのはここだけです。
- 最初は Render で動かしてみて、慣れてきたら Cloud Run に引っ越してもいい
- 逆に、Cloud Run で触ってみて「やっぱり管理が重い」と感じたら Render に戻してもいい
「最初の一発目で完璧な選択をしないといけない」ということはありません。
今の自分が、
- 無理なく続けられそうか
- ちょっとワクワクするか
このあたりを基準に、軽めの気持ちで選んでみてください。
もっと知りたい人向けの参考リンク(最低限)
深追いしたくなったとき用に、入口レベルのリンクだけ貼っておきます。
- Render 公式: Web Services 概要
https://render.com/docs/web-services - Cloud Run 公式ドキュメント
https://cloud.google.com/run/docs - GCP の無料枠(Free Tier)
https://cloud.google.com/free - Kubernetes の概要
https://kubernetes.io/docs/concepts/overview/