nero15.dev のインフラ選定:なぜGCP Cloud Runを選んだのか

nero15.dev のインフラ選定:なぜGCP Cloud Runを選んだのか
著者: nero15
開発

はじめに

nero15.devのインフラ構築において、GCP(Google Cloud Platform)のCloud Runを採用しました。

正直に言うと、運用経験は長くあったものの、商用レベルのインフラ構築経験はほぼありませんでした。そんな私がCloud Runを選んだ理由と、実際に使ってみてどうだったのかを共有します。

きっかけ:Modern App Summit '25

選定のきっかけは、Googleが主催する**Modern App Summit '25**というイベントに参加したことでした。

このイベントは生成AIやGoogle Cloudの活用がメインテーマで、最新のクラウドネイティブな開発手法やGCPの新機能について学べる内容でした。様々なセッションを聞く中で、特に印象に残ったのがCloud Runでした。

「とにかく使ってみたい」

イベントで得た知識だけでは実感が湧かなかったので、まずは会社の社内用管理画面のリプレイスプロジェクトで試してみることにしました。この管理画面は社内のみで使用するツールで、アクセス頻度も高くなく、トラフィック予測も比較的容易でした。

実際に構築してみたところ、想像以上に良かった

  • デプロイが驚くほど簡単
  • スケーリングを全く気にしなくて良い
  • 従量課金で社内限定なのでコストメリットが莫大
  • インフラの運用負荷がほぼゼロ

この経験から、個人プロジェクトであるnero15.devでも採用を決めました。

GCP Cloud Runとは

Cloud Runは、フルマネージドなサーバーレスコンテナ実行環境です。

簡単に言えば:

  • Dockerコンテナをそのままデプロイできる
  • サーバーの管理が一切不要
  • トラフィックに応じて自動でスケールする
  • 使った分だけ課金される

公式ドキュメント:https://cloud.google.com/run/docs

私の見解では、サーバレスで運用がほぼ0でいけることとコストメリットが最強だと考えています。

Cloud Runを選んだ理由

1. Scale to Zero によるコスト最適化

Cloud Runの最大の特徴はScale to Zeroです。

リクエストがない時、インスタンスは完全に0にスケールダウンします。つまり、アクセスがない時間帯は料金が発生しないのです。

個人で運営するメディアサイトにとって、これは非常に大きなメリットでした:

  • 深夜〜早朝のアクセスが少ない時間帯はコストゼロ
  • 記事を書いていない期間も無駄なコストが発生しない
  • 試合速報などでアクセスが集中しても自動でスケールアップ

従来のVMベースのインフラでは、常に最低限のインスタンスを起動しておく必要がありましたが、Cloud Runではその必要がありません。

課金は100ms単位で、実際にリクエストを処理している時間のみです。EC2やGCEのように、起動している時間全体に対して課金されるわけではありません。

2. 自動スケーリングの柔軟性

Cloud Runは、トラフィックに応じて自動的にインスタンスを増減します。

  • デフォルトで最大1000インスタンスまで自動拡張(必要に応じて上限変更可)
  • 負荷分散も自動で行われる
  • スケールアップ・ダウンの閾値を細かく設定する必要がない

試合速報記事を公開した瞬間にアクセスが急増する、といった状況でも、Cloud Runが自動で対応してくれます。インフラの知識が浅い私でも、スケーリング設計で悩む必要がありませんでした。

3. コンテナベースの柔軟性

Cloud Runは任意の言語・フレームワークに対応しています。

Dockerコンテナとして動くものなら何でもデプロイできるため:

  • Next.jsのようなNode.jsアプリケーション
  • Python/Go/Javaなどのバックエンドサービス
  • 既存のレガシーアプリケーション

すべて同じプラットフォームで動かせます。将来的に技術スタックを変更したり、マイクロサービス化する際も、柔軟に対応できます。

また、Cloud Runはソースコードから直接デプロイする機能もあります(Buildpacks)。Dockerfileを書かなくても、Node.js、Python、Go、Javaなどの主要言語であれば、自動でコンテナイメージを生成してデプロイできます。

4. 運用負荷の低さ

フルマネージドなので、インフラの運用負荷がほぼゼロです。

  • サーバーのパッチ適用やOSのアップデートは不要
  • ロードバランサーの設定も不要(自動で提供される)
  • HTTPSも自動対応(*.run.appドメインでTLS証明書が自動管理される)
  • ログは自動でCloud Loggingに送信される
  • エラーはError Reportingで自動集約される

商用レベルのインフラ構築経験がほぼなかった私にとって、これらが全て自動で提供されるのは非常に助かりました。本来学ぶべきインフラの知識をスキップできるわけではありませんが、まずはプロダクトを世に出すことに集中できました。

5. CI/CD統合の容易さ

Cloud Runは、GitHub ActionsやCloud Buildとの統合が非常にスムーズです。

  • GitHubリポジトリと直接連携できる
  • 特定のブランチにpushしたら自動デプロイ
  • リビジョン管理が自動で行われる
  • トラフィック分割による段階的ロールアウトが可能

例えば、新しい記事を書いてGitHubにpushすれば、自動的にビルドされてデプロイされる、という流れを簡単に構築できます。手動デプロイの手間が完全になくなりました。

6. GCPエコシステムとの統合

Cloud Runは、他のGCPサービスとシームレスに統合できます。

nero15.devでは現在は使っていませんが、将来的に以下のような拡張が考えられます:

  • Cloud SQL:PostgreSQL/MySQLのマネージドデータベース
  • Cloud Storage:画像やメディアファイルの保存
  • Pub/Sub:非同期処理やイベント駆動アーキテクチャ
  • Secret Manager:APIキーなどの機密情報管理
  • Cloud CDN:静的コンテンツの配信高速化
  • Firestore:NoSQLデータベース

これらを組み合わせることで、より高度なメディアプラットフォームに進化させることができます。

7. カスタムドメインとHTTPS対応

*.run.appのデフォルトドメインだけでなく、カスタムドメインも簡単に設定できます。

  • Cloud Run側でドメインマッピングを設定するだけ
  • HTTPSも自動で有効化される(Let's Encryptベース)
  • DNS設定さえすれば、すぐに独自ドメインで公開できる

nero15.devのような独自ドメインでの運用も、特別な設定なしで実現できました。

上述した社内管理画面のリプレイスの際は大きなハマりポイントがあったのですが、それはまたの機会に...ほぼ私と同様の事象は起こらないと思うので。

8. トラフィック管理機能

Cloud Runには、リビジョン管理とトラフィック分割の機能が組み込まれています。

  • 新しいデプロイは自動的に新しいリビジョンとして作成される
  • 古いリビジョンへのロールバックが即座に可能
  • トラフィックを複数のリビジョンに分割できる(例:90%を旧版、10%を新版)

これにより、新機能を段階的にリリースしたり、問題があればすぐに戻したりできます。カナリアリリースのような高度なデプロイ戦略も、インフラの深い知識なしで実現できます。

他の選択肢との比較

Vercel

Next.jsとの相性が良く、最も手軽な選択肢でした。

ミニマムでやるならまあこれなんだと思う。ただ「エンジニアとして個人プロジェクトを立ち上げるんだよ?自前で1から構築するよな?な?」という、リトルnero15の圧高めベテランエンジニアが言ってました。従いました。

AWS全般

AWSのサービスでも構築は可能でした。

こちらでも正直良かったが、Cloud Runを使いたいという感情面が優位でした。

実際に使ってみての感想

良かった点

  • デプロイが本当に簡単gcloud run deploy一発で完了
  • コストが予想以上に安い:アクセスの少ない個人サイトでは月数百円〜数千円程度
  • スケーリングを気にしなくて良い:バズった時も自動で対応
  • 運用負荷がほぼゼロ:インフラを意識せずにコードに集中できる
  • コールドスタートが想像より速い:最近の改善で、初回リクエストも数秒で応答

特に、会社の管理画面で一度経験していたので、個人プロジェクトでの導入は非常にスムーズでした。

課題や工夫が必要だった点

  • 環境変数の扱い:Next.jsのビルド時環境変数問題と絡んで、CI/CD設計に工夫が必要だった(これは別記事で詳しく書く予定)

感想

パフォーマンスが良い。運用なし。最強!

高トラフィック時(そんな嬉しい悩みが発生するのはいつになることか)にどうなるかは今後調査。

まとめ

nero15.devのインフラとして、GCP Cloud Runは最適な選択でした。

特に:

  • コスト効率:Scale to Zeroにより、アクセスがない時は完全に無料
  • 運用負荷の低さ:フルマネージドで、インフラを意識せずに開発に集中できる
  • 自動スケーリング:トラフィックの急増にも自動で対応
  • 拡張性:GCPエコシステムとの統合で、将来的な機能追加が容易

社内管理画面での実践を経て、個人プロジェクトを本番環境で運用できるようになりました。

**「まずは使ってみる」**という姿勢が、結果的に最良の学習方法だったと感じています。

Cloud Runは、個人開発者にとって非常に優れた選択肢です。インフラの知識に自信がなくても、まずは触ってみることをおすすめします。


参考リンク

最終更新: 2025年10月5日

このコンテンツは役に立ちましたか?

サーバー代やコンテンツ制作費として、コーヒー1杯分のサポートをいただけると嬉しいです!

皆様のサポートが継続的なコンテンツ制作の励みになります

Buy me a coffee