Открыть сервис

App Engine

App Engine — это платформа как услуга (PaaS) от компании Google, предназначенная для разработки, хостинга и масштабирования веб-приложений в облачной инфраструктуре Google. Она позволяет разработчикам сосредоточиться на написании кода, не управляя серверами, операционными системами или сетевыми настройками. App Engine автоматически обрабатывает такие задачи, как балансировка нагрузки, масштабирование, мониторинг и обновление программного обеспечения.

История

Платформа была анонсирована Google 7 апреля 2008 года на конференции Campfire One. Первоначально она поддерживала только язык программирования Python. В 2009 году была добавлена поддержка Java, а позже — PHP, Go, Node.js и Ruby. В 2011 году App Engine был интегрирован в более широкую экосистему Google Cloud Platform (GCP), которая включает в себя Compute Engine, Cloud Storage, Bigtable и другие сервисы.

В 2013 году Google представила новую версию платформы — App Engine Managed VMs (позже переименованную в App Engine Flexible Environment), которая позволила запускать приложения в контейнерах Docker, предоставляя больше контроля над средой выполнения. В 2017 году была выпущена вторая версия стандартной среды (Standard Environment) с улучшенной производительностью и поддержкой новых языков.

Архитектура и принципы работы

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

Основные компоненты

  • Приложение: единица развёртывания, состоящая из кода, файлов конфигурации (app.yaml, appengine-web.xml) и зависимостей.
  • Экземпляры: копии приложения, запущенные на серверах Google. Платформа автоматически создаёт и уничтожает экземпляры в зависимости от нагрузки.
  • Масштабирование: App Engine поддерживает три режима — автоматическое (динамическое изменение числа экземпляров), базовое (ручное задание минимального и максимального количества) и ручное (фиксированное число экземпляров).
  • Службы (Services): логические компоненты приложения, которые могут быть развёрнуты и масштабированы независимо друг от друга. Каждая служба имеет свой URL (например, https://service-name.project-id.appspot.com`).
  • Версии (Versions): разные версии кода одной службы, позволяющие проводить A/B-тестирование и постепенные развёртывания.

Среда выполнения

App Engine предлагает два типа среды выполнения: стандартную (Standard Environment) и гибкую (Flexible Environment).

Стандартная среда (Standard Environment)

  • Особенности: работает в изолированных песочницах (sandboxes) с ограниченным доступом к файловой системе и сети. Предоставляет предопределённые версии языков и библиотек.
  • Поддерживаемые языки: Python, Java, PHP, Go, Node.js, Ruby.
  • Преимущества: быстрое масштабирование, низкая стоимость (оплата только за используемое время), автоматическое обновление безопасности.
  • Ограничения: нет доступа к произвольным процессам, ограниченный набор библиотек, невозможность записи в локальную файловую систему.

Гибкая среда (Flexible Environment)

  • Особенности: запускает приложения в контейнерах Docker, предоставляя полный контроль над средой выполнения. Позволяет использовать любые библиотеки, языки и инструменты.
  • Поддерживаемые языки: Python, Java, PHP, Go, Node.js, Ruby, .NET, а также любые языки через кастомные контейнеры.
  • Преимущества: гибкость настройки, поддержка фоновых процессов, доступ к локальной файловой системе, возможность использовать любые сторонние сервисы.
  • Ограничения: более высокая стоимость, медленное масштабирование по сравнению со стандартной средой.

Хранение данных

App Engine предоставляет несколько встроенных сервисов для хранения данных:

  • Datastore: масштабируемая NoSQL-база данных, основанная на Bigtable. Поддерживает транзакции, индексы и запросы. Идеально подходит для структурированных данных с высокой нагрузкой на чтение и запись.
  • Cloud SQL: реляционная база данных на основе MySQL или PostgreSQL, совместимая с SQL-запросами. Подходит для приложений, требующих сложных запросов и транзакций.
  • Cloud Storage: объектное хранилище для файлов, изображений, видео и других бинарных данных. Интегрируется с App Engine через API.
  • Memcache: распределённый кэш в памяти для ускорения доступа к часто запрашиваемым данным. Поддерживает два режима: общий (shared) и выделенный (dedicated).

Применение

App Engine используется для создания и хостинга широкого спектра веб-приложений, включая:

  • Веб-сайты и блоги: простые статические или динамические сайты с низкой и средней нагрузкой.
  • API и микросервисы: создание RESTful и GraphQL-интерфейсов для мобильных и веб-приложений.
  • Обработка данных: фоновые задачи, такие как обработка изображений, анализ логов или генерация отчётов.
  • Мобильные бэкенды: серверная часть для мобильных приложений на iOS и Android.
  • Интернет вещей (IoT): сбор и обработка данных с датчиков и устройств.

Ограничения и квоты

App Engine накладывает определённые ограничения на использование ресурсов, особенно в бесплатном тарифе (free tier). Основные квоты включают:

  • Время выполнения: до 28 часов в день для бесплатного уровня.
  • Хранилище Datastore: до 1 ГБ бесплатно.
  • Трафик: до 1 ГБ исходящего трафика в день.
  • Запросы: до 1 миллиона запросов в день.

Для платных тарифов квоты могут быть увеличены за дополнительную плату. Также существуют ограничения на размер файлов (до 32 МБ для загружаемых файлов) и количество экземпляров (до 20 в стандартной среде).

Критика

Несмотря на популярность, App Engine имеет ряд недостатков:

  • Привязка к вендору (vendor lock-in): приложения, написанные для App Engine, могут быть сложны для переноса на другие платформы из-за использования специфических API (например, Datastore, Memcache).
  • Ограничения стандартной среды: невозможность запуска произвольных процессов и ограниченный набор библиотек могут затруднить разработку сложных приложений.
  • Сложность отладки: из-за распределённой архитектуры и автоматического масштабирования отладка ошибок может быть затруднена.
  • Ценообразование: при высокой нагрузке стоимость может превышать аналогичные решения на других облачных платформах, таких как AWS Elastic Beanstalk или Microsoft Azure App Service.

Интересные факты

  • App Engine изначально разрабатывался для внутренних нужд Google, в частности для хостинга приложений Google Apps (ныне Google Workspace).
  • В 2011 году Google запустила программу Google App Engine for Business, которая предоставляла соглашения об уровне обслуживания (SLA) и поддержку корпоративных клиентов.
  • App Engine поддерживает автоматическое масштабирование до нуля экземпляров, что позволяет полностью отключать приложение при отсутствии трафика и не платить за простаивающие ресурсы.

Источники

  • Google Cloud Documentation: App Engine
  • Google Cloud Platform: Overview of App Engine
  • Wikipedia: Google App Engine
  • Google Cloud Blog: App Engine History and Updates
  • Cloud Computing: Concepts, Technology & Architecture by Thomas Erl

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →