Когда использовать Google App Engine Flex и Google Cloud Run

Я хочу развернуть контейнерный код, используя один из вариантов без сервера Google. Из того, что я понимаю, у Google есть два варианта для этого:

  1. Гибкая среда Google App Engine
  2. Google Cloud Run (в бета-версии)

Я смотрел Google Next 2019, следующий разговор Где я должен запустить свой код? Выбор из 5+ Compute Options. И я прочитал ответ Jerry101 на общий вопрос "В чем разница между Google App Engine и Google Cloud Run?" ,

Мне кажется, что Cloud Run - это ответ на ограничения использования гибкой среды Google App Engine.

Причины, по которым я могу выбрать гибкую среду App Engine вместо Cloud Run:

  • Legacy - если ваш код в настоящее время использует App Engine Flex, вы можете не захотеть переносить его
  • История успеха - App Engine Flex уже давно доступен для общего доступа и в этом смысле имеет репутацию, в то время как Cloud Run только в бета-версии.

Но это оба соображения типа операции. Ни один не беспокоит меня. Есть ли техническое преимущество при выборе App Engine Flex по сравнению с Cloud Run?

Спасибо

Примечание. Бета-версия Serverless VPC Access для App Engine доступна только для стандартной среды на момент публикации этого вопроса в апреле 2019 года, но не для Flex, так что это не рассматривается в вопросе App Engine Flex и Cloud Run.

Ответ 1

Ценообразование/автоматическое масштабирование: модель ценообразования между GAE Flexible Environment и Cloud Run немного отличается.

  • В GAE Flexible вы всегда запускаете как минимум 1 экземпляр в любое время. Таким образом, даже если ваше приложение не получает никаких запросов, вы платите за этот экземпляр. Детализация счета составляет 1 минуту.
  • В Cloud Run вы платите только тогда, когда обрабатываете запросы, а уровень оплаты составляет 0,1 секунды. Смотрите здесь для объяснения модели биллинга Cloud Run.

Базовая инфраструктура: поскольку GAE Flexible работает на виртуальных машинах, он немного медленнее, чем Cloud Run, для развертывания новой версии вашего приложения и его масштабирования. Развертывание Cloud Run происходит быстрее.

Переносимость: Cloud Run использует API с открытым исходным кодом Knative и его контейнерный контракт. Это дает вам гибкость и свободу в большей степени. Если вы хотите запустить ту же рабочую нагрузку в инфраструктуре, которой вы управляете (например, GKE), вы можете сделать это с помощью "Cloud Run on GKE".

Ответ 2

Краткая история: Appengine - это нечто реальное, относительно стабильное. Cloud Run - это всего лишь черновик/идея, очень нестабильный.

Длинная история. Нахождение в альфа/бета-версии Google Cloud Run может претерпеть множество изменений. Если вы достаточно взрослый, вы можете вспомнить, насколько сильно изменились цены на Appengine. Он пообещал ценообразование на основе ЦП/ОЗУ, затем решил, что это "не возможно" или, по крайней мере, не очень выгодно, и перешел на ценообразование на основе виртуальных машин, затем они выпустили достойную версию appengine (Appengine Flex или другое название, которое у него было в то время) но также увеличил цену снова, добавив модель минимального экземпляра. Не говоря уже о бесчисленных API/критических изменениях или изменениях лимитов.

Cloud Run основан на gVisor, который имеет некоторые ограничения, поэтому в зависимости от языка/библиотеки, которую вы используете, и того, что вы делаете, он может сломаться (или может сломаться только реализация Google) в какой-то момент, и вы ничего не можете сделать (например, исправить систему ) и это разрушит вашу производительность и, возможно, ваш бизнес. Вы можете взглянуть на его текущие проблемы.

Бесплатный совет: даже если вы выбираете Appengine или Cloud Run, избегайте проприетарных API/сервисов, таких как Google Datastore. Они могут разрушить ваш бизнес. Цены, API и ограничения будут меняться. Нет реального открытого или платного варианта, поэтому ваш код не переносим. Ваш код довольно бесполезен вне облака Google.

Отказ от ответственности: я был сожжен изменениями appengine и привязкой хранилища данных, так что мое мнение может быть предвзятым.

Ответ 3

На самом деле, я бы посоветовал вам серьезно рассмотреть возможность использования Cloud Run over App Engine

Со временем я увидел несколько комментариев о "новом" App Engine в процессе разработки, и действительно кажется, что Cloud Run - это тот ответ. Это в бета-версии, и это может быть проблемой. Я видел, как некоторые компании используют бета-сервисы в производстве, а другие ждут. Однако, если я собираюсь запустить новое приложение сегодня - это наверняка будет Cloud Run over App Engine Flex.

Google очень глубоко в Kubernetes как бизнес-функции. Поскольку Cloud Run находится на GKE - это означает, что он косвенно получает разработку через другие команды (Общая инфраструктура GKE).

И наоборот, App Engine использует более старую технологию. Хотя это неплохо - это "вчерашняя" технология. Мне кажется, что Google - это компания, которая действительно взволнована тем, что нового и что высоко ценится в отрасли.

Все это говорит о том, что когда вы упаковываете свои сервисы в контейнер, вы сможете запускать их где угодно? Ну, везде есть контейнерная платформа. Вы можете подключить свои службы к чему-то вроде облачных оконечных точек и развернуть их как в App Engine, так и в облачной среде - меняйте их взад и вперед. Тогда, в этот момент, ограничения могут быть услугами, которые предлагаются. Например, Cloud Run в настоящее время не поддерживает некоторые элементы, такие как Cloud Load Balancing или Cloud Memorystore. Это может быть блокирующим сегодня.