Поиск по сайту:

Как работает бессерверный механизм приложений Google?


App Engine — это полностью управляемая служба бессерверных вычислений от Google Cloud Platform, которая значительно упрощает управление серверной частью микросервисов. Он построен на высокой масштабируемости без необходимости управлять собственными серверами.

Что такое App Engine?

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

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

Распространено использование бессерверных вычислительных сервисов, таких как AWS Lambda Functions или GCP Cloud Functions, для простого развертывания отдельных функций в качестве сервисов. App Engine очень похож, но гораздо мощнее, поскольку создан специально для серверных частей микросервисов.

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

Однако, в отличие от облачных функций, вам все равно нужно запускать «Экземпляры» каждой службы. Ваши расходы основаны на этом, а не на отдельных вызовах функций, поскольку не существует ничего похожего на холодный запуск. (Вы можете уменьшить масштаб до 0 экземпляров в стандартной среде, но холодный запуск будет медленным.)

В настоящее время App Engine поддерживает следующие среды выполнения, однако, если вы используете гибкую среду, вы можете запускать собственные среды выполнения в контейнерах Docker.

  • Питон 2.7, Python 3.7
  • Ява 8, Ява 11
  • Node.js 8, Node.js 10
  • PHP 5.5, PHP 7.2, PHP 7.3 и PHP 7.4 (бета-версия)
  • Ruby 2.5 (бета)
  • Go 1.11, Go 1.12, Go 1.13 и Go 1.14 (бета)

Для хранения и постоянства данных существует встроенное хранилище данных, но оно постепенно заменяется Firestore, базой данных документов NoSQL, предлагаемой как часть платформы Firebase. Он имеет режим хранилища данных специально для совместимости со встроенным хранилищем данных App Engine. Кроме того, в консоли App Engine доступны кэш памяти как услуга, настраиваемые очереди задач и задания cron.

Если вы хотите начать, Google предоставляет множество встроенных руководств из консоли App Engine.

Стандартные и гибкие среды

В App Engine есть две разные среды, которые вы можете выбрать, каждая из которых имеет свои плюсы и минусы.

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

Однако со стандартным вы не получаете доступ к SSH и не получаете фоновые процессы, такие как cron (хотя Google предоставляет это как управляемую услугу). Стоимость запуска и завершения работы составляет 15 минут времени инстанса, поэтому вам следует избегать чрезмерно агрессивного автоматического масштабирования.

Гибкая среда использует контейнеры Docker для запуска всего. Однако, если вы используете одну из поддерживаемых сред выполнения, вам может не понадобиться самостоятельно управлять контейнером. Вы получаете доступ по SSH, гораздо большую гибкость (это в названии) и поддержку фоновых процессов. Однако развертывание и запуск занимают несколько минут, и у вас нет доступа к некоторым встроенным службам App Engine, таким как memcached.