Предоставляйте динамический контент и размещайте микросервисы с помощью хостинга Firebase.

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 , вы можете предоставлять динамически генерируемые ответы от функции или контейнеризированного приложения, выполняющего логику на стороне сервера.

    Например, вы можете указать в URL-адресе (например, /blog/<blog-post-id> ) функцию, которая использует параметр ID записи блога в URL-адресе для динамического извлечения контента из вашей базы данных.

  • Создавайте REST API — вы можете создать микросервисный API, используя функции.

    Например, функции могут обрабатывать функциональность авторизации на вашем веб-сайте. Хотя ваш веб-сайт размещен по адресу / , любой запрос к /api перенаправляется на ваш микросервисный API. В качестве примера ознакомьтесь с этим открытым исходным кодом .

  • Кэширование динамического контента — Вы можете настроить кэширование вашего динамического контента в глобальной CDN.

    Например, если функция генерирует новый контент только периодически, вы можете ускорить работу приложения, кэшируя сгенерированный контент хотя бы на короткий период времени. Вы также можете потенциально снизить затраты на выполнение, поскольку контент предоставляется из CDN, а не через запускаемую функцию или контейнеризированное приложение.

  • Предварительная отрисовка одностраничных приложений — вы можете улучшить SEO и оптимизировать распространение в различных социальных сетях, создавая динамические meta . Чтобы узнать больше, посмотрите это видео или ознакомьтесь с этим примером с открытым исходным кодом .

Выбор бессерверного решения

Хотя Cloud Functions for Firebase и Cloud 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 объединяет множество задач в одну команду, от инициализации до сборки и развертывания. Контейнеры предоставляют больше возможностей для настройки, поэтому задачи по настройке, сборке и развертыванию включают в себя отдельные этапы.
Среда выполнения Требуется Node.js, но вы можете указать, какую именно версию Node.js использовать. При создании контейнера вы указываете среду выполнения.
Поддержка языков и фреймворков

JavaScript и TypeScript

Поддерживаются веб-фреймворки, такие как Express.js.

Dockerfile поддерживает любые языки программирования, включая Go, Node.js, Python, Java и другие.

Поддерживаются веб-фреймворки для каждого языка программирования.

Истекло время ожидания для запроса Hosting . 60 секунд (см. примечание ниже) 60 секунд (см. примечание ниже)
Параллелизм 1 запрос на каждый экземпляр функции
(без параллельного выполнения для каждого экземпляра)
До 1000 одновременных запросов на один экземпляр контейнера.
Выставление счетов Использование Cloud Functions

Предоставляется бесплатный лимит использования, но требуется учетная запись Cloud Billing . См. раздел часто задаваемых вопросов Firebase .

Использование Cloud Run + хранилище Container Registry

Предоставляется бесплатный лимит использования, но требуется учетная запись Cloud Billing