Firebase Hosting を使用した動的コンテンツの配信とマイクロサービスのホスティング

Firebase Hosting は、Cloud Functions for Firebase や Cloud Run などのサーバーレス コンピューティングのオプションと統合できます。Firebase Hosting をこれらのオプションと組み合わせれば、HTTPS リクエストをリダイレクトして安全なマネージド環境で動作する関数やコンテナ化されたアプリを実行することで、マイクロサービスをホストできます。

Cloud Functions for Firebase: 特定のトリガーに反応してバックエンドで実行される関数を記述し、デプロイします。その後、Firebase Hosting を使用して HTTPS リクエストをリダイレクトすることで、リクエストに応じて関数を実行できます。

Cloud Run: コンテナ イメージにパッケージ化されたアプリケーションを記述し、デプロイします。その後、Firebase Hosting を使用して HTTPS リクエストをリダイレクトすることで、リクエストに応じてコンテナ化アプリを実行できます。

ユースケース

Firebase Hosting でのサーバーレス コンピューティング オプションの使用例を以下に示します。

  • 動的コンテンツの配信 - Hosting サイトでの静的コンテンツの配信に加えて、サーバー側ロジックを実行する関数またはコンテナ化アプリから動的に生成されたレスポンスを提供できます。

    たとえば、/blog/<blog-post-id> のような URL パターンを、URL のブログ投稿 ID パラメータを使用してデータベースからコンテンツを動的に取得する関数に向けることができます。

  • REST API のビルド - 関数を使用してマイクロサービス API を作成できます。

    たとえば、ウェブサイトへのログイン機能を関数で処理できます。ウェブサイトが / でホストされている場合、/api へのリクエストはすべてマイクロサービス API にリダイレクトされます。例として、このオープンソース サンプルをご覧ください。

  • 動的コンテンツのキャッシュ - グローバル CDN 上で動的コンテンツのキャッシュを構成できます。

    たとえば、ある関数が新しいコンテンツを定期的に生成する場合は、生成されたコンテンツを少なくとも短期間キャッシュに保存することでアプリを高速化できます。また、そのコンテンツはトリガーされた関数やコンテナ化アプリからではなく CDN から配信されるため、場合によっては実行コストも削減できます。

  • 単一ページアプリの事前レンダリング - 動的な meta タグを作成することで、SEO を改善し、さまざまなソーシャル ネットワーク間で共有を最適化できます。詳細については、こちらの動画を見るか、こちらのオープンソース サンプルをご覧ください。

サーバーレス オプションの選択

Cloud Functions for FirebaseCloud Run はどちらも Firebase Hosting と統合されており、フルマネージドの自動スケーリングされる安全なサーバーレス環境を提供しますが、ユースケースや必要なカスタマイズ構成のレベルに応じてどちらを使用するかを選択できます。

いずれかのサーバーレス オプションを使用する場合は、次のいずれかのリージョンにデプロイして、Firebase Hosting のサーバーと同じ場所に配置することをおすすめします。

  • us-west1
  • us-central1
  • us-east1
  • europe-west1
  • asia-east1

次の表は、基本的な検討事項について Cloud Functions for Firebase を使用した場合と Cloud Run を使用した場合を比較したものです。割り当て、上限、指標を含む完全なリストについては、各プロダクトの詳細なドキュメント(Cloud Functions for Firebase または Cloud Run)をご覧ください。

検討事項 Cloud Functions for Firebase Cloud Run
設定 Firebase CLI によって複数のタスクが単一のコマンドにまとめられており、初期化からビルド、デプロイまでを単一のコマンドで行うことができます。 コンテナはカスタマイズ可能なオプションが多いため、セットアップ、ビルド、デプロイのタスクには個別のステップが必要です。
ランタイム環境 Node.js が必要ですが、使用する Node.js のバージョンを指定することができます。 コンテナをビルドするときにランタイム環境を指定します。
言語とフレームワークのサポート

JavaScript と TypeScript

Express.js などのウェブ フレームワークがサポートされています。

Go、Node.js、Python、Java など、Dockerfile がサポートする任意の言語

各言語のウェブ フレームワークがサポートされています。

Hosting リクエストのタイムアウト 60 秒(下記の注を参照) 60 秒(下記の注を参照)
同時実行 関数インスタンスごとに 1 件のリクエスト
(インスタンスあたりの同時実行は不可)
コンテナ インスタンスあたり最大 1,000 件の同時リクエスト
料金 Cloud Functions の使用量

無料の使用量割り当てあり、ただし Cloud 請求先アカウントが必要。Firebase のよくある質問をご覧ください。

Cloud Run の使用量 + Container Registry の保存量

無料の使用量割り当てあり、ただし Cloud 請求先アカウントが必要