App Hosting とその仕組みを理解する

App Hosting は、アプリの デプロイを簡素化するために、一連の複雑なバックグラウンド タスクを処理します。このページでは、そのタスクフローの重要な部分について説明し、アプリのニーズに応じてフローをカスタマイズできるポイントについて 解説します。

主な用語と定義

App Hosting フローの詳細を理解するには、用語を明確に定義することが役立ちます。基本的な用語は次のとおりです。

  • バックエンド: ウェブアプリのビルドと実行のために App Hosting が作成するマネージド リソースのコレクション。
  • ビルド: アプリの特定のリビジョン。通常は git コミットにリンクされています。ビルドを作成するプロセスには、 Cloud Build でのアプリのビルド、 Cloud Run でのリビジョンのデプロイ(ロールアウトされるまでトラフィックの 0% を処理)など、多数のサブプロセスがあります。Cloud BuildCloud Run
  • ロールアウト: ビルドをアクティブにトラフィックを処理するように設定するプロセス。 git コミットによって自動的にトリガーされると、App Hostingまずライブブランチを使用してビルドを作成し、ライブ トラフィックをそのビルドに転送するロールアウトを作成します。
  • ライブブランチ: 一般公開 URL にデプロイされる GitHub リポジトリのブランチ。多くの場合、機能ブランチまたは開発ブランチがマージされるブランチです。

Google Cloud と App Hosting のアーキテクチャ

App Hosting は、一連の Google Cloud プロダクトをオーケストレートして、ウェブアプリを デプロイ、提供、モニタリングできるようにします。アプリは Cloud Build でビルドされ、 Cloud Run で提供され、Cloud CDN にキャッシュされます。Cloud Secret Manager などの統合サービスにより、API キーが安全に保管されます。

このページで説明するアーキテクチャの図式。

  1. コミットがライブブランチに push されると、Google Cloud Developer Connect は Firebase App Hostingにイベントを送信します。
  2. このイベントに応答して、Firebase App Hosting はリポジトリに接続されたバックエンドの新しいビルドを作成します。
    1. まず、Firebase App Hosting は コミットの新しい Cloud Build ビルドを作成します。このジョブでは、 Google Cloud Buildpack が、アプリケーションで使用されているフレームワークを特定し、アプリケーションに適したコンテナと構成( 環境変数、シークレット、最小インスタンス数または最大インスタンス数、同時実行 メモリ、CPU、VPC 構成など)を作成します。 詳細については、the App Hosting ビルドプロセス をご覧ください 。
    2. Cloud Build ジョブが完了すると、コンテナは Firebase App Hosting 専用の Artifact Registry リポジトリに保存されます。 Firebase App Hosting は、イメージと構成を使用して、新しい Cloud Run リビジョンを Cloud Run サービスに追加します。
  3. Cloud Run リビジョンが完了し、正常であることが確認されると、Firebase App Hosting はトラフィック構成を変更して、すべての新しいリクエストを新しい Cloud Run リビジョンに転送します。これで、ロールアウトが完了しました。
  4. リクエストが Firebase App Hosting でホストされているウェブサイトに送信されると、 Cloud CDN が有効になっている Google Cloud ロードバランサによってリクエストが処理されます。 キャッシュされていないリクエストは Cloud Run サービスに送信されます。Cloud CDN でパフォーマンスを最適化する方法については、 アプリのコンテンツをキャッシュに保存するをご覧ください。

フレームワークの統合

App Hosting は、ウェブアプリ のビルドとデプロイを事前構成でサポートしています。

  • Next.js 13.5.x 以降
  • Angular 18.2.x 以降

特定のバージョンとサポートレベルの詳細については、 サポート スケジュールをご覧ください。

Next.js と Angular に加えて、App Hosting は、出力バンドル仕様に一致するビルド出力を提供できるウェブ フレームワークもサポートしています。フレームワーク、フレームワーク アダプタ、関連ツールについて詳しくは、フレームワークとツール App Hostingをご覧ください。App Hosting

App Hosting リポジトリの統合の仕組み

GitHub リポジトリと App Hosting バックエンド間の重要な接続は、 Developer Connect( 外部 DevOps ツール用の Google Cloud 接続プラットフォーム)によって処理されます。この接続を設定すると(通常は App Hosting バックエンドの作成時)、 Developer Connect の UI ワークフローで Firebase GitHub アプリのインストール手順が表示されます。このプロセスの主な手順は次のとおりです。

  1. Developer Connect に Secret Manager 管理者 のロールを付与します。これにより、システムは認証情報を Cloud Secret Managerに「シークレット」として安全に保存できます。
  2. Firebase GitHub アプリが GitHub リポジトリにアクセスすることを 承認します。適切なリポジトリにアクセスするには、追加の GitHub 権限が必要になる場合があります。
  3. Developer Connect は、専用の GitHub 認証トークンをプロジェクトの Secret Manager リポジトリに保存します。このトークンを変更または削除しないでください。

また、App Hosting は GitHub Checks API と統合して、ロールアウトの チェックを提供します。このチェックを使用すると、 GitHub でロールアウトのステータスを確認し、エラーが発生した場合はデプロイ プロセスをデバッグできます。

Firebase や他の Google サービスとの統合

App Hosting は、ビルド環境とランタイム環境の両方を設定するため、 Google アプリケーションのデフォルト認証情報 を使用して Firebase Admin SDK を初期化できます。これにより、バックエンドはビルド時と実行時の両方で他の Firebase プロダクトと通信できます。アプリの初期化とその他の Firebase SDK 関連のトピックについて詳しくは、ウェブアプリに Firebase SDK を統合するをご覧ください。

App Hosting のロケーション

App Hosting は、プライマリ リージョンと呼ばれる特定のロケーションにバックエンド リソースを作成します。App Hosting は高速 配信のためにグローバル CDN と統合されていますが、キャッシュされていないコンテンツはアプリのプライマリ リージョンから提供されます。ウェブアプリのロケーションの柔軟性には、次のような重要な利点があります。

  • データをユーザーの地理的位置の近くに配置することで、パフォーマンスが向上し、レイテンシが短縮されます。
  • 1 つのリージョンで App Hosting に壊滅的な障害が発生しても、 他のリージョンにデプロイされたウェブアプリには影響しません。

App Hosting バックエンドを Firebase コンソールまたは Firebase CLI から作成するときに、次のいずれかのリージョンを選択できます。

  • us-central1(アイオワ)
  • us-east4(N. バージニア)
  • us-east5(コロンバス)
  • asia-east1(台湾)
  • asia-southeast1(シンガポール)
  • europe-west4(オランダ)

App Hosting バックエンド サービス アカウント

ビルド時と実行時に、App Hosting バックエンドはサービス アカウントを使用して 他の Google サービスを認証します。Firebase プロジェクトで App Hosting を初めて有効にすると、これらの目的で使用されるデフォルトのサービス アカウントが作成されます。

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

このサービス アカウントはデフォルトですべてのバックエンドに適用され、アプリのビルド、実行、モニタリングを可能にする最小限の 権限セットが付与されています。また、 アプリケーションのデフォルト認証情報で Admin SDK を認証する権限も付与されており、 Cloud Firestoreからデータを読み込むなどのオペレーションを実行できます。Firebase のロールをご覧ください。App Hosting

アプリがビルド時または実行中のバックエンドから追加の Google サービスとやり取りする必要がある場合は、ロールを追加してデフォルトのサービス アカウントをカスタマイズできます。たとえば、アプリに Vertex AI の権限が必要な場合は、 追加する必要があるかもしれません roles/aiplatform.user または関連するロール。