#express #google-cloud-functions
#экспресс #google-cloud-функции
Вопрос:
Я много читаю о облачных функциях Google и вижу, что вы можете запустить Express App
функцию в облаке, но я не нахожу статью или ресурс, который оправдывал бы это из-за наличия нескольких облачных функций.
- Лучше ли использовать экспресс-приложение с несколькими маршрутами?
- Когда лучше использовать экспресс-приложение поверх облачных функций Google?
- Есть ли какие-либо преимущества или недостатки, помимо времени развертывания?
Ответ №1:
С одной стороны, Cloud Functions — это среда, которая работает с простыми, универсальными функциями, привязанными к событиям. С другой стороны, Express — это фреймворк, который можно использовать для создания приложения с отслеживанием состояния (среди прочего).
На самом деле, Cloud Functions использует Express под капотом для обработки запроса.
В качестве наилучшей практики вам следует попытаться сохранить минимальный код и функциональные возможности в одной функции, поскольку это то, для чего они предназначены: одиночные независимые выполнения без состояния. Тем не менее, как доказывает этот пост (который я воспроизвел), можно развернуть приложение Express в облачной функции и заставить его работать.
Лучше ли использовать экспресс-приложение с несколькими маршрутами?
Мне не удалось найти ни одного другого сообщения, подтверждающего или отрицающего это, но, на мой взгляд, если вы собираетесь использовать несколько маршрутов, вам может быть лучше использовать Google App Engine или несколько облачных функций.
Google App Engine нацелен на создание масштабируемых приложений на бессерверной платформе. Я думаю, что этот вариант лучше подойдет для сценария, если вы действительно работаете над полноценным API. Кроме того, CF выполняется один раз для каждого запроса, таким образом, весь фреймворк Express будет выполняться при каждом запросе, очень похоже на PHP.
Посмотрите, как развернуть приложение Express в GAE в этом посте.
Когда лучше использовать экспресс-приложение поверх облачных функций Google?
Когда вы намереваетесь создать целый API, а не только второстепенные функции, которые вам нужно запускать с помощью события.
Есть ли какие-либо преимущества или недостатки, помимо времени развертывания?
Их цель иная, не то чтобы приложение Express с несколькими маршрутами было бы в невыгодном положении по сравнению с обычным CF, но их цель иная, и вы должны использовать их в разных сценариях.
Комментарии:
1. Цена также является критерием, ИМХО, для использования одной функции для каждой конечной точки требуется объект маршрутизации, обычно Google API gateway, который имеет дополнительную стоимость. При развертывании всего API в одной функции с помощью Express можно отказаться от использования API Gateway. Также читайте здесь: firebase.google.com/docs/hosting/functions#use_a_web_framework