Разница между Google App Engine Flexible и Google Container Engine?

Конкретно для развертывания на основе Docker, каковы различия между этими двумя? Поскольку теперь приложение Google App Engine Flexible также поддерживает развертывание на основе Dockerfile, а также полностью управляемый сервис, представляется предпочтительным вариантом, а не настройкой развертывания Kubernetes в контейнере, не так ли?

В каких случаях предпочтительнее использовать Google Container Engine над гибким движком App?

Ответ 1

Это разные вещи. App Engine Flexible ориентирован на разработку приложений - то есть у вас есть приложение, и вы хотите, чтобы его развертывали и управляли Google). С другой стороны, Кубернетес больше связан с вашей собственной инфраструктурой. Очевидно, что вы также можете развернуть приложения в Kubernetes, но, поскольку это ваша "собственная" инфраструктура, вы можете напрямую управлять тем, как будут вести себя как приложение, так и приложение (создавать службы, создавать политики масштабируемости, RBAC, политики безопасности...),

В этом смысле Кубернетес более гибко в том, чего вы можете достичь. Однако, как разработчик, вас может не интересовать инфраструктура вообще, только то, что ваше приложение работает и масштабируется. Для этого профиля лучше использовать App Engine Flexible.

Если с другой стороны вы хотите управлять полной инфраструктурой контейнера (больше профиля SRE), то Kubernetes для вас.

Ответ 2

Основное преимущество помимо того, что упомянуто в ответе Хавьера, заключается в том, что использование Kubernetes делает ваше приложение переносимым и независимым от базовой облачной платформы. Если вы когда-нибудь захотите переместить свое приложение в AWS, Azure, on-prem и т.д., Вы можете сделать это с очень небольшими изменениями, если вы используете Kubernetes, а если вы используете App Engine Flex, это потребует гораздо большего изменения.

Другое отличие состоит в том, что если вы хотите создавать множество различных микросервисов со сложной структурой, Kubernetes больше подходит для этого, чем для App Engine. В App Engine также невозможно реализовать архитектуру микросервисов. Конечно, вы можете использовать разные файлы yaml, но они не дают вам большой гибкости, и в конечном итоге любое сложное приложение нужно будет портировать.

Кроме того, если вы хотите иметь контейнеры с состоянием, вы не можете сделать это с помощью App Engine Flex.

Kubernetes, являющийся проектом с открытым исходным кодом, имеет более энергичное сообщество, чем App Engine. Google больше сосредоточен на Kubernetes, чем на App Engine, а обновления на Kubernetes происходят чаще, чем на App Engine.

Но это не значит, что App Engine менее мощный. Я работал над сложными приложениями, обслуживающими сотни тысяч (сейчас, вероятно, миллион) пользователей с помощью App Engine (как стандартной, так и гибкой среды), и мы никогда не думали о его переносе из GAE. Я имею в виду, если он может обрабатывать трафик Pokemon Go, он, безусловно, может обрабатывать и ваше приложение.

Производительность мудрый, кто-то сделал сравнение здесь. Итоговые результаты следующие:

Важным отличием между службами является то, что App Engine Flex смещает автоматизацию к управлению Googles, тогда как Kubernetes Engine требует большего контроля со стороны клиента. Kubernetes Engine развивается быстрее и добавляет более мощную автоматизацию.

Тонкое отличие состоит в том, что Flex использует контейнеры как средство для достижения цели. Обычно пользователи Flex могут игнорировать использование контейнеров, потому что это делается негласно. Kubernetes Engine - как следует из названия - основан на контейнерах и явно разработан как инструмент, который облегчает управление службами, созданными из контейнеров. С Flex сервисом всегда являются n-контейнеры одного типа. При использовании Kubernetes Engine услуга включает в себя m-pod, а сами pod могут содержать p-контейнеры.

  • Практично перенести развертывание App Engine Flex в GKE.
  • В этом случае (!) Flex достиг большей пропускной способности, чем GKE.
  • Увеличенная скорость появляется из-за скорости, с которой App Engine
    умеет сигнализировать о событиях автоматического масштабирования; GKE быстро взвешивает стручки
    внутри существующего кластера узлов, но немного медленнее, чтобы увеличить количество узлов.
  • App Engine и GKE совместно используют основные ресурсы GCP, в том числе службу балансировки нагрузки HTTP/S и автоматическое масштабирование групп управляемой инфраструктуры.
  • Для той же нагрузки, используя тот же размер виртуальной машины (1 vCPU и 1 ГБ оперативной памяти): App Engine Flex масштабируется до 6 контейнеров на 6 экземплярах виртуальных машин (1 экземпляр/виртуальная машина); GKE масштабируется до 10 пакетов (1 контейнер/пакет) на 3 виртуальных машинах (50%).