Google App Engine (GAE)

Продукт
Название базовой системы (платформы): Google Cloud Platform (GCP)
Разработчики: Google
Дата последнего релиза: 2015/06/18
Технологии: IaaS - Инфраструктура как услуга,  PaaS - Platform As A Service - Бизнес-платформа как сервис,  Средства разработки приложений

Содержание

Google App Engine — сервис хостинга сайтов и web-приложений на серверах Google с бесплатным именем <имя_сайта>.appspot.com, либо с собственным именем, задействованным с помощью служб Google.

Google App Engine – система разработки облачных приложений от Google, созданная на основе инструментов, которые используются самой Google в инфраструктуре своих приложений. App Engine позволяет разработчикам создавать на языках Python и Java масштабируемые приложения, не задумываясь о низкоуровневой архитектуре.

В то же время, App Engine обладает важными архитектурными ограничениями: создавать приложения можно только на языках Python и Java (также доступны реализации нескольких других языков, которые выполняются поверх Java), вместо традиционной СУБД с SQL-синтаксисом предоставляется СУБД с синтаксисом GQL, где, в частности, не поддерживается оператор JOIN, позволяющий объединять таблицы в базе данных. Доступ к файловой системе возможен в режиме "только для чтения".

Пользоваться Google App Engine можно бесплатно – но только в том случае, если приложение укладывается в заданные Google квоты. Во-первых, для хранения данных выделяется только 1 ГБ дискового пространства. Во-вторых, установлены пределы по суточному объему используемых ресурсов: 1 ГБ входящего и до 1 ГБ исходящего трафика, до 6,5 часов процессорного времени, до 1,3 млн HTTP-запросов, до 10 млн запросов к API базы данных Datastore и до 2000 исходящих электронных писем.

App Engine представлена в апреле 2008, находится в режиме тестирования, доступны как бесплатные аккаунты: «…до 1 Гб дискового пространства, 10GB входящего трафика в день, 10GB исходящего трафика в день, 200 миллионов гигациклов CPU в день и 2000 операций отправления электронной почты в день», так и возможность приобретения дополнительных ресурсов.

Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python либо Java. Среда исполнения включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка, ограниченную версию Django, и т. д.

Предлагается набор API для сервисов хранилища, datastore API (en), аккаунтов Google, загрузки данных по URL, электронной почты, и т. д.

Предоставлена возможность использовать планировщик задач cron как для приложений реализованных на Python, так и на Java. Разрешено планирование не более 20-ти заданий.

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

Платформа Google конкурирует с аналогичными сервисами от Amazon (en), которые предоставляют возможности размещать файлы и веб-приложения, используя свою инфраструктуру.

Отличия от традиционной модели хостинга приложений

В отличие от многих обычных размещений приложений на виртуальных машинах, таких как Amazon EC2, платформа App Engine интегрирована с приложениями и накладывает на разработчиков некоторые ограничения. Конкурирующие среды позволяют оперировать множеством программного обеспечения, созданного под *NIX системами, в то время как App Engine требует от разработчика обязательного использования языков программирования Python или Java и сохранения информации в собственном хранилище (Datastore) — подмножестве проприетарной базы данных BigTable (en), являющейся ноу-хау компании Google.

Хотя большинство из разработанных на языке Python приложений возможно запустить без изменений под App Engine (исключая те, которые требуют доступа к низкоуровневым функциям системы или доступа к сети), использование хранилища потребует значительных сил от разработчиков на адаптацию приложений. В отличие от популярных СУБД MySQL и PostgreSQL, хранилище не является реляционной базой данных, в частности не поддерживает схему и не требует нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привело бы к значительному замедлению работы. Не реляционный характер хранилища требует от разработчиков использования нетрадиционной архитектуры хранения и обработки данных. Например, вместо нормализованного хранения данных в двух или нескольких таблицах с последующим объединением в запросе (join), логически связанные данные рекомендуется хранить в одной таблице.

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

Ограничения

Среда выполнения платформы Google App Engine позволяет разработчику контролировать лишь часть параметров операционной системы, что может представлять проблему для разработки приложений.

Нет доступа на запись в файловую систему сервера. Единственный способ сохранять данные — внутреннее хранилище, нереляционная, высокомасштабируемая база данных. Хранилище отличается от реляционных СУБД MySQL и PostgreSQL, которые используются на большинстве сайтов.

Системы управления сессиями, использующие файловую систему, не будут работать. Google предоставляет альтернативный вариант — Memcache API. Есть возможность организовать авторизацию пользователей через аккаунты Google.

Google широко использует в своих приложениях технологию MapReduce, высокоскоростной интерфейс для параллельных вычислений, проводимых на множестве узлов кластера, её поддержка, вероятно, будет добавлена к возможностям платформы.

2018

Исследователь получил $36 тыс. за информацию об уязвимостях в Google App Engine

Компания Google выплатила 18-летнему исследователю безопасности Изекилю Перейре (Ezequiel Pereira) более $36 тыс. за обнаружение[1] нескольких уязвимостей в сервисе Google App Engine, в том числе одной критической[2].

В феврале 2018 года Перейра смог получить доступ к среде разработки Google App Engine и обнаружил возможность использования некоторых внутренних API Google.

В своем первом отчете для программы вознаграждения за поиск уязвимостей Google исследователь не указал ничего опасного, однако его результатам был присвоен рейтинг P1, который указывает на то, что проблема должна быть устранена как можно быстрее, поскольку может затрагивать большое количество пользователей.

Продолжив исследование, эксперт обнаружил некоторые интересные методы эксплуатации и отправил Google второй отчет, после которого компания посоветовала Перейре прекратить дальнейшее тестирование, так как он может «легко сломать что-то, используя эти внутренние API».

Проанализировав обнаруженные уязвимости, эксперты Google пришли к выводу, что они могли быть проэксплуатированы для удаленного выполнения кода «из-за особенностей работы Google».

В общей сложности Google выплатила исследователю $36 337, в том числе $5 тыс. за обнаружение менее серьезной проблемы. По словам Перейры, первый отчет был отправлен в компанию 25 февраля 2018 года, а исправления были выпущены в период между 6 и 13 марта.

Google больше не позволяет использовать себя для обхода блокировок

Разработчики приложений не смогут больше использовать инфраструктуру Google для обхода блокировок в интернете. Служба хостинга сайтов и веб-приложений на серверах Google, которая называется Google App Engine, закрыла возможности для применения технологии сокрытия конечного адреса, известной как domain fronting[3].

Компания не делала по этому поводу заявлений — первыми изменения в архитектуре сети заметили разработчики Tor, что и привлекло к проблеме внимание СМИ.

Domain fronting позволяла разработчикам использовать Google как прокси, перенаправляя трафик на собственные сервера через домен Google.com. Это давало возможность обходить блокировки государственного уровня, при которых может блокироваться весь трафик, пересылаемый на определенный сервис. При использовании domain fronting все запросы, исходящие из конкретной страны, выглядит так, как будто они направлены к Google.com. Отследить их дальше надзорным ведомствам мешало шифрование.

Google сообщила изданию The Verge, что прекращение работы domain fronting произошло в результате давно запланированного обновления. Компания утверждает, что domain fronting никогда не была специально поддерживаемой функцией — это была просто причудливая особенность программной платформы Google. Теперь эта особенность ликвидирована в ходе непрестанного обновления сетей, и возрождать ее в качестве именно функции компания не планирует.

2015: Google App Engine поддерживает PHP

18 июня 2015 года стало известно об открытии публичного доступа к набору технологий сервиса Google App Engine для создания приложений и другого софта на языке программирования PHP[4].

Ранее платформа поддерживала только языки Python, Go и Java.

В Google App Engine SDK для разработчика доступны:

  • стыковка с Google Cloud SQL и бессхемным хранилищем данных,
  • кэширование,
  • работа с двоичными файлами,
  • обработка изображений,
  • ведение логов,
  • поиск,
  • э-почта,
  • организация XMPP-чатов,
  • управление задачами и очередями,
  • стыковка с Android и iOS,
  • регистрация пользователей через Google Account или OpenID,
  • взаимодействие с клиентами JavaScript.

В составе SDK имеется режим эмуляции облака Google на ПК, посредством которого доступна локальная отладка приложения.

Свойство GAE - если требуется запустить веб-приложение на Java, Python, Go или PHP, но отсутствует желание или возможность заниматься хостингом, серверами, Linux, MariaDB и прочей инфраструктурой веб-приложения - GAE решает большую часть этих вопросов и разработчику остается только разрабатывать приложение, а затем отправить его в облако одной командой. Хранение данных, резервное копирование, масштабирование вычислительных мощностей и т.п. берет на себя Google.

В мае 2015 года появились данные об уязвимостях в Google App Engine.

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

Представители компании, сотрудники которой обнаружили уязвимости, сообщили о некорректной реализации ряда методов и отсутствии проверок на безопасность в App Engine, что и становится основными причинами этих брешей. Обнаруженные ими уязвимости присутствуют теперь в «дополнительной защите», внедренной поверх JRE и предназначенной для защиты Google App Engine от Java-уязвимостей.

2014

На 4 февраля 2014 года App Engine обладает весьма значительной клиентской базой, она составляет, по мнению Google, около 30 тыс. активных (оплачивающих сервис) заказчиков, в числе которых небольшие клиенты и очень крупные деловые сайты. По данным вендора, более 90% его собственных ИТ-систем работают на платформе App Engine и этот проект появился в результате преобразования собственной внутренней ИТ-инфраструктуры компании в вариант публичного сервиса.

Высокая репутация Google как облачного сервис-провайдера и одного из пионеров использования методов Big Data во многом определила доверие рынка к App Engine и другим PaaS-предложениям компании, предназначенным для реализации проектов, требующих высокоэластичного масштабирования, обработки большого числа наборов неструктурированных данных и решения ряда задач бизнес-аналитики. Некоторые добавленные возможности корпоративного уровня (обеспечение SLA на уровне 99,95%, надлежащая техническая поддержка, наличие реляционной СУБД, развитый контроль версий, минимальное время простоя, автоматическое масштабирование, наличие базовых сервисов распределенного кэширования, управление жизненным циклом проектов на базе фреймворков Apache Maven и Spring для Java-версии сервиса) в существенной мере устранили традиционные опасения рынка в отношении подходов aPaaS вообще и в исполнении Google в частности.

Возможности интеграции на уровне API позволяют предлагать PaaS-функционал для создания заказчиками гибридных ИТ-систем, в том числе с использованием других систем программирования. Привлекательным для заказчиков является вариант комбинированного использования прикладных (Google Apps в реализации SaaS) и платформенных (Google Cloud Platform, IaaS и PaaS) предложений Google.

App Engine 1.9.0

26 февраля 2014 года компания Google сообщила о выходе новой версии App Engine 1.9.0.

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

В составе обновления появилась библиотека MapReduce для Java, интегрированная с Google Cloud Storage.

Улучшена среда времени выполнения PHP-скриптов, ускоряющая загрузку типовых библиотек. Внешнее взаимодействие с исполняемыми программами происходит только посредством HTTP/HTTPS-запросов, это ограничивает App Engine сферой веб-систем.

Более 30 брешей в Google App Engine

10 декабря 2014 года СМИ сообщили о наличии более 30 уязвимостей в облачной платформе Google App Engine. Уязвимости обнаружила польская компания Security Explorations[5].

После того как исследователи выбрались из «песочницы» виртуальной машины Java, они получили возможность запуска произвольного кода на более низком уровне и доступ к системным файлам виртуальной машины.

Они принялись изучать способы выхода из «песочницы» операционной системы, то есть еще на уровень ниже. Но сделать этого не удалось — аккаунт заблокировала служба безопасности Google. По мнению исследователей, в Google почли их активность подозрительной и решили заблокировать доступ.

Недоработки в системе защиты допускают уход пользователя из «песочницы» (sandbox - изолированная среда) виртуальной машины Java, внутри которой запускаются приложения, и выполнение произвольного кода в окружении более низкого уровня, поведал Адам Говдяк (Adam Gowdiak), глава и основатель Security Explorations. Он не стал заниматься определением уровня опасности, который представляют обнаруженные бреши, а предпочёл уведомить Google.

Помимо Java, платформа GAE поддерживает приложения, написанные на Python, PHP и Go. По мнению директора компании-исследователя, фактическое количество содержащихся в платформе уязвимостей может быть гораздо больше? поскольку проведенное исследование затронуло лишь виртуальную машину Java.

На 16:10 10 декабря 2014 года компания Google заявление Security Explorations не прокомментировала.

2012

В начале 2012 года Google начала тестировать функцию полнотекстового поиска для сервиса хостинга веб-приложений App Engine. Разработчики уже давно жалуются, что возможности нынешнего поискового API для App Engine далеки от ожидаемых, и раздражаются, что в Google так долго тянули с реализацией полнотекстового поиска.

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

API можно пользоваться бесплатно при условии выполнения не более 20 тыс. запросов в сутки и использования индекса размером не более 250 Мбайт.

2013

App Engine 1.5.0

В этой версии появилась поддержка процессов, требующих больших объемов памяти, и экспериментальная среда исполнения приложений на Go — языке программирования с открытым кодом, который разрабатывается Google. Во второй половине этого года App Engine планируется избавить от статуса ознакомительной версии. Ресурсоемкие процессы App Engine 1.5 поддерживаются средствами модуля Backends, который позволяет применять языки Java и Python. Как объясняют в Google, с помощью Backends можно создавать, например, специализированные поисковые механизмы. Приложения на Go, в свою очередь, можно компилировать в машинный код, — благодаря этому язык можно применять для задач, активно использующих ресурсы центрального процессора. SDK для Go уже доступен для загрузки, а возможность размещать Go-приложения в App Engine появится в скором времени. После снятия статуса ознакомпления с App Engine в Google обещают обеспечить время безотказной работы платформы 99,5%, реализовать офлайн-тарификацию и предложить соглашения об условиях обслуживания, ориентированные на предприятия.

App Engine 1.4.0

В App Engine 1.4.0 появился API Channel, реализующий сервис доставки уведомлений от приложений браузеру. Данный API избавляет от необходимости регулярного исполнения кода на JavaScript, опрашивающего приложение.

Дополнение High Replication Datastore, предлагаемое за отдельную стоимость, расширяет возможности тиражирования, реализуемые платформой: теперь с его помощью можно обновлять до четырех копий данных, а не максимум две, как раньше.

В App Engine увеличен с 30 секунд до 10 минут лимит на время исполнения в фоновом режиме вспомогательных сервисов, таких как обработка и индексирование. Увеличен допустимый размер запросов URLFetch с 1 Мбайт до 32 Мбайт.

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

2011

В октябре 2011 года в платформе разработки и хостинга веб-приложений Google App Engine реализовано дополнение, потребность в котором давно испытывали многие авторы приложений. Теперь кроме имевшейся в App Engine базы данных Big Table, построенной по системе «ключ-значение», приложения смогут использовать стандартную реляционную СУБД под названием Google Cloud SQL, поддерживающую язык запросов SQL. Более того, в нее можно будет переносить имеющиеся локальные базы данных под управлением MySQL. Облачная система Google возьмет на себя администрирование базы и репликацию ее в нескольких дата-центрах.

Аналитики Forrester Research считают появление Google Cloud SQL чрезвычайно важным событием. Реляционные базы данных c языком запросов SQL используются гораздо шире, чем базы «ключ-значение» наподобие Big Table. Отсутствие возможности применения SQL в приложениях App Engine было существенным препятствием для внедрения этой системы.

Google Cloud SQL работает в ограниченном демонстрационном режиме — доступ к ней имеют лишь некоторые специально отобранные компанией разработчики. Для них работа с Cloud SQL пока бесплатна. Компания объявит о ценах за месяц до того, как начнет взимать плату.

2010: Версия 1.3.8 комплекта разработчика (SDK) для Google App Engine

Для разработок на Java или Python облачных приложений, предназначенных для исполнения на серверах компании Google. В новой версии в административной консоли Google App Engine появилась страница Instances, где выводится информация о серверах, ресурсы которых использует в данный момент приложение. Отображается, в частности, время отклика и уровень заполнения памяти каждой из систем. Разработчики на Python найдут в Admin Console экспериментальную функцию удаления всех хранимых объектов. В Python-версии упростилось использование стандартных функций, например, измерения производительности. Java-вариант SDK будет доработан аналогичным образом в следующей версии. Имеется еще ряд исправлений и новых функций. Загрузить комплект можно на сайте Google.[6]

Примечания

Ссылки

Информация о проекте на русском языке



РЕШЕНИЕ НА БАЗЕ (1) СМ. ТАКЖЕ (2)
Название решенияРазработчикКоличество
проектов
FerrisCloud Sherpas0


Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2016 год
2017 год
2018 год
Текущий год

  Cloud4Y (ООО Флекс) (1, 18)
  Microsoft (1, 10)
  Техносерв (1, 9)
  SAP SE (3, 7)
  Крок (1, 7)
  Другие (23, 41)

Распределение базовых систем по количеству проектов, включая партнерские решения

За всю историю
2016 год
2017 год
2018 год
Текущий год

  Microsoft Azure - 83 (63, 20)
  Cloud4Y IaaS - 54 (52, 2)
  IT-Grad Cloud IaaS - 52 (52, 0)
  CorpSoft24: Виртуальный сервер - 26 (26, 0)
  Техносерв Cloud - 25 (25, 0)
  Другие 285

  Cloud4Y IaaS - 25 (23, 2)
  IT-Grad Cloud IaaS - 9 (9, 0)
  CorpSoft24: Виртуальный сервер - 7 (7, 0)
  Техносерв Cloud - 6 (6, 0)
  Microsoft Azure - 5 (5, 0)
  Другие 44

  Техносерв Cloud - 8 (8, 0)
  Microsoft Azure - 6 (6, 0)
  Cloud4Y IaaS - 4 (4, 0)
  De Novo: Облака - 2 (2, 0)
  Oracle Cloud - 2 (2, 0)
  Другие 23

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2016 год
2017 год
2018 год
Текущий год

  Microsoft (93, 125)
  Техносерв (2, 25)
  Oracle (47, 20)
  Онланта (2, 16)
  IBM (40, 11)
  Другие (186, 63)

  Microsoft (2, 10)
  Oracle (2, 3)
  Онланта (1, 2)
  HPC HUB (1, 2)
  SkyparkCDN (1, 2)
  Другие (7, 7)

  Microsoft (2, 7)
  Техносерв (1, 6)
  Онланта (1, 4)
  HPC HUB (1, 2)
  Сервионика (1, 2)
  Другие (4, 4)

  Microsoft (2, 12)
  Техносерв (1, 9)
  Онланта (1, 5)
  Oracle (3, 3)
  Haulmont (Хоулмонт) (2, 2)
  Другие (2, 2)

Распределение базовых систем по количеству проектов, включая партнерские решения

За всю историю
2016 год
2017 год
2018 год
Текущий год

  Microsoft Azure - 83 (63, 20)
  Техносерв Cloud - 25 (25, 0)
  OnCloud.ru - 16 (16, 0)
  Microsoft Azure Blockchain-as-a-Service - 11 (2, 9)
  IBM Cloud - 9 (7, 2)
  Другие 59

  Microsoft Azure - 10 (10, 0)
  Техносерв Cloud - 9 (9, 0)
  OnCloud.ru - 5 (5, 0)
  CUBA.platform - 2 (1, 1)
  Ethereum Blockchain as a Service (EBaaS) - 2 (2, 0)
  Другие 4