Подтвердить что ты не робот

Как выбирать между облачными функциями Google и Google App Engine?

Облачные функции Google кажутся очень интересными, так как это бессерверное и нулевое техническое обслуживание. Но когда целесообразно использовать Google Cloud Functions над Google App Engine?

4b9b3361

Ответ 1

Обновить:
По состоянию на 12 июня 2018 года Node.js 8.x поддерживается в среде Google App Engine Standard вместе с гибкой средой.

Короткий ответ: это зависит от ваших потребностей.

Длинный ответ: Здесь контрольный список

время выполнения
Облачные функции в данный момент поддерживают только Node.js, и, насколько мне известно, нет никаких планов по внедрению новых рабочих мест. Если вы с этим согласны, вы можете поместить функции Cloud в свои параметры.

App Engine поддерживает Node.js, хотя он доступен только в среде Flexible. Стандартная среда App Engine поддерживает Python 2.7, Java 8, Java 7, PHP 5.5, Go 1.8 и 1.6, а гибкая среда App Engine поддерживает Python, Java, Node.js, Go, Ruby, PHP или.NET. Вы также можете предоставить свою собственную среду выполнения с помощью файла docker в гибкой среде. Поэтому, если вы хотите разработать свое приложение ничем, кроме Node.js, App Engine - лучший вариант.

Безсерверная архитектура
Вы ищете серверную архитектуру? Вы разочарованы управлением экземплярами и их масштабированием вверх или вниз? Вы не хотите тратить время на управление своим сервером? Пойдите для функций Облака, если вы ответите "да" на все эти вопросы.
Вы ищете контроль мелкого зерна на нет. случаев и выставления счетов. Вы хотите иметь отдельные версии и хотите лучше контролировать их. Посмотрите на App Engine в этом случае.

Microservice
Можете ли вы разбить свой код на более мелкие независимые функции? Перейдите для функций облака.
App Engine поддерживает архитектуру Microservice с использованием той же базы кода, но разные файлы yaml для разделения сервисов, но это зависит от вас, если вы хотите разбить их на сервисы или нет. В течение последних нескольких лет мы запускаем весь наш код в одно монолитное приложение, и оно все еще работает на App Engine.

База данных
Хранили ли ваши данные приложения в Firebase? Тогда функции Облака могут быть легко использованы там. Если нет, App Engine - лучшая альтернатива. App Engine также может подключиться к Firebase, если вам интересно.

Есть и другие вещи, которые нужно учитывать, например, ценообразование, и если вы хотите перенести существующее приложение или если вы пишете вещи с нуля. Фактически вы можете использовать оба параметра. Мы используем стандартную среду App Engine (Python) для нашего приложения, но недавно мы перенесли некоторые из наших длительных задач на функции Cloud, и они работают потрясающе.

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

Ответ 2

Когда вы хотите выполнить функцию (некоторую логику какого-то рода) в ответ на событие, возникшее в облаке, и вы не хотите создавать (и быть выставленным) для полного веб-приложения именно для этого.

Из обзора продукта:

Облачные вычисления сделали возможными полностью бессерверные модели вычислений, где логика может быть развернута по требованию в ответ на события, происходящие из любого места. Постройте приложения из бизнес-логики размера укуса, выставленной на сумму до 100 миллисекунд, только во время работы вашего кода. Служить пользователям от нуля до масштаба планеты, без управления какой-либо инфраструктурой.

Что такое Google Cloud Functions?

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

Если у вас уже есть приложение GAE, связанное с частью логики, которую вы хотите реализовать, возможно, проще просто сделать это внутри приложения :)