😊

Next.jsをCloudRunにデプロイする選択肢

2024/09/18に公開

ローカルからデプロイするのにはコマンド1つで済む

gcloud run deployコマンドを実行し、プロンプトに従って必要な情報を入力します。
※事前の設定などは必要ですが、一回設定してしまったら次回移行量産体制が整います。

注意ダメ絶対

負債解消するのが大変なので、エンジニア経験が少ない人はfirestoreはメインのDBとして本番で使わないでーー

Vercel vs GoogleCloud

  • ローカルからデプロイするならむしろVercelよりもデプロイは楽に思える。
  • 使ってない時は基本0円(Docker imageのStorageの代金は別途1日10円ほど)
  • firestoreを使ったらデータベースも使った分だけ
  • redisとcloudsqlも外向きの通信をvpcに流せるようになったのでprivate-privateな通信が可能

VercelではなくCloud Runを選ぶメリット

  • 費用: Cloud Runはコールドスタートが前提であれば無料枠に収まる可能性があり、費用を抑えられる可能性があります。一方、Vercelは無料プランの制限が厳しく、アクセス数が増加すると有料プランへの移行が必要になる可能性があります。Cloud Runはリクエストの処理中に使用したリソースに対してのみ課金されるため、コスト効率の高い選択肢となりえます。
  • Google Cloudとの統合: Cloud RunはGoogle Cloudの各種サービスとシームレスに連携できます。Google Cloudのエコシステムを活用することで、より柔軟でスケーラブルなシステムを構築できます。これは、Google Cloudの他のサービスをすでに利用している場合や、将来的に利用する可能性がある場合に特に大きなメリットとなります。
  • スケーラビリティと可用性: Cloud Runは、受信したリクエストを処理するためにコンテナイメージを自動的に水平方向にスケールアウトし、リクエスト数が減少するとスケールインします。また、複数のリージョンにデプロイすることで、高可用性を実現することも可能です。
  • カスタマイズ性: Cloud Runは、コンテナベースのサービスであるため、カスタマイズ性が高い点がメリットです。実行環境、ネットワーク設定、セキュリティ設定などを自由に構成できます。

Cloud Run のアーキテクチャ構成の利点

https://zenn.dev/google_cloud_jp/articles/cloudrun-architectures
Cloud Runを中心としたサーバーレスアーキテクチャの構成例が23個紹介されています。これらの構成例から、Cloud Runのアーキテクチャ構成の利点を具体的に示します。

1. シンプルな構成と柔軟なカスタマイズ

  • 3-Tier構成(SPA/SSR): フロントエンド(SPAまたはSSR)、APIサーバー(Cloud Run)、静的コンテンツ(Cloud Storage)というシンプルな構成で、Webアプリケーションを構築できます。
  • モバイルアプリの2-Tier構成: モバイルアプリからFirestoreを直接利用するシンプルな構成に加えて、FirestoreのイベントトリガーでCloud Runを発火させることで、ロジックを柔軟に追加できます。

これらの構成例から、Cloud Runはシンプルな構成を維持しながら、イベントトリガーなどを活用することで、必要な機能を柔軟に追加できる利点があることがわかります。

2. 高可用性とスケーラビリティ

  • 高可用なWebアプリケーション/API: Cloud Runを複数のリージョンにデプロイし、グローバルロードバランサを組み合わせることで、高可用性を実現できます。
  • キューイングサービス: Pub/SubのメッセージキューとCloud Runを組み合わせることで、メッセージの量に応じて自動的にスケールするシステムを構築できます。

これらの構成例から、Cloud Runは複数のリージョンへのデプロイや、他のマネージドサービスとの連携によって、高可用性とスケーラビリティを容易に実現できる利点があることがわかります。

3. セキュリティ

  • Identity-Aware Proxy でアクセス制限: Identity-Aware Proxy を利用することで、認証・認可を容易に実現できます。
  • 攻撃のブロック(WAF)とreCAPTCHA Enterprise: Cloud ArmorとreCAPTCHA Enterpriseを組み合わせることで、Webアプリケーションへの攻撃を効果的に防御できます。

これらの構成例から、Cloud Runは他のGoogle Cloudサービスと連携することで、多層的なセキュリティ対策を容易に実装できる利点があることがわかります。

4. Google Cloudサービスとの連携による費用対効果

  • コンテンツ配信(CDN): Cloud CDNを利用することで、コンテンツ配信を高速化し、オリジンサーバーの負荷を軽減できます。
  • 機械学習モデルのエンドポイント: Vertex AIでトレーニングしたモデルを、Cloud Runでホスティングすることで、費用対効果の高い機械学習モデルのAPIを提供できます。

これらの構成例から、Cloud RunはCDNや機械学習モデルのAPIサービスなど、様々な用途で利用できるだけでなく、他のGoogle Cloudサービスと連携することで、より費用対効果を高められる利点があることがわかります。

VercelからCloud Runへ移行した事例が紹介されています。この事例では、ISRが使えなくなる代わりに、Cloud CDNとSWRを組み合わせることで、高速なページ表示を実現可能です。これは、Cloud Runが柔軟な構成とGoogle Cloudサービスとの連携によって、Vercelの独自機能を補完できることを示しています。

以上のことから、Cloud Runはシンプルな構成、高可用性とスケーラビリティ、セキュリティ、Google Cloudサービスとの連携による費用対効果といった利点があり、様々なユースケースで効果的に活用できることがわかります。

まとめ

慣れてる方を使ったらいいなと思いますが、個人開発でお金かけたくない場合はGoogle Cloudを使用してもいいと思います。

Discussion