Google App Engine (часто называемый GAE или просто App Engine ) - это платформа облачных вычислений в качестве службы для разработки и размещения веб-приложений в центрах обработки данных, управляемых Google . Приложения изолированы и работают на нескольких серверах. [2] App Engine предлагает автоматическое масштабирование для веб-приложений - по мере увеличения количества запросов для приложения App Engine автоматически выделяет больше ресурсов для веб-приложения, чтобы справиться с дополнительным спросом. [3]
Разработчики) | |
---|---|
Первый выпуск | 7 апреля 2008 г . [1] |
Тип | Платформа как услуга |
Веб-сайт | облако |
Google App Engine в первую очередь поддерживает приложения Go , PHP , Java , Python , Node.js , .NET и Ruby , хотя он также может поддерживать другие языки через «настраиваемые среды выполнения». [4] Услуга бесплатна до определенного уровня потребляемых ресурсов и только в стандартной среде, но не в гибкой среде. Плата взимается за дополнительное хранилище, пропускную способность или часы работы экземпляра, необходимые приложению. [5] Впервые он был выпущен в качестве предварительной версии в апреле 2008 года и вышел из нее в сентябре 2011 года.
Поддерживаемые функции / ограничения
Время выполнения и фреймворк
Google App Engine в первую очередь поддерживает приложения Go , PHP , Java , Python , Node.js , .NET и Ruby , хотя он также может поддерживать другие языки через «настраиваемые среды выполнения». [4]
Веб-фреймворки Python, работающие на Google App Engine, включают Django , CherryPy , Pyramid , Flask , web2py и webapp2, [6], а также пользовательский фреймворк для веб-приложений, написанный Google, и несколько других, разработанных специально для платформы, появившейся после выпуска. [7] Любая среда Python, поддерживающая WSGI с помощью адаптера CGI, может использоваться для создания приложения; фреймворк можно загрузить вместе с разработанным приложением. Также могут быть загружены сторонние библиотеки, написанные на чистом Python. [8] [9]
Google App Engine поддерживает множество стандартов и платформ Java. Ядро в это сервлет 2,5 технологии с использованием открытых источников Jetty веб - сервер , [10] вместе с сопутствующими технологиями , такими как JSP . JavaServer Faces работает с некоторыми обходными путями. Более новый выпуск App Engine Standard Java в бета-версии поддерживает Java8, Servlet 3.1 и Jetty9.
Хотя интегрированная база данных Google Cloud Datastore может быть незнакома программистам, она доступна и поддерживается с помощью JPA , JDO и простого низкоуровневого API. [11] Существует несколько альтернативных библиотек и фреймворков, которые вы можете использовать для моделирования и сопоставления данных с базой данных, таких как Objectify, [12] Slim3 [13] и Jello framework . [14]
Spring Framework работает с GAE. Однако для модуля Spring Security (если он используется) требуются обходные пути. Поддерживается Apache Struts 1, а Struts 2 работает с обходными путями. [15]
Фреймворк Django и приложений , работающих на нем можно использовать на App Engine с модификацией. Django-nonrel [16] нацелен на то, чтобы позволить Django работать с нереляционными базами данных, и проект включает поддержку App Engine. [17]
Надежность и поддержка
Все приложения в счетах App Engine имеют 99,95% времени бесперебойной работы в ОАС . [18]
App Engine спроектирован таким образом, что он может выдерживать перебои в работе нескольких центров обработки данных без простоев. Об этой устойчивости к простоям свидетельствует статистика, согласно которой в хранилище данных с высокой репликацией время простоя составляло 0% в течение года. [19]
Бесплатная поддержка предлагается в группах App Engine, Stack Overflow , Server Fault и GitHub . Однако помощь сотрудника Google не гарантируется. [20] Платная поддержка инженеров Google предлагается как часть профессиональных аккаунтов. [21]
Массовая загрузка
В SDK версии 1.2.2 добавлена поддержка массовой загрузки данных с помощью Python. [22] Проекты Python с открытым исходным кодом gaebar, [23] Approcket, [24] и gawsh [25] также позволяют пользователям загружать и создавать резервные копии данных App Engine. В настоящее время не существует метода массовой загрузки данных из GAE с использованием Java.
Ограничения
- Разработчики имеют доступ только для чтения к файловой системе в App Engine. Приложения могут использовать только виртуальные файловые системы, такие как gae-filestore. [26]
- App Engine может выполнять только код, вызываемый из HTTP-запроса (запланированные фоновые задачи позволяют самостоятельно вызывать HTTP-запросы).
- Пользователи могут загружать произвольные модули Python, но только если они являются чистыми модулями Python; Модули C и Pyrex не поддерживаются.
- Приложения Java могут использовать только подмножество (Белый список классов JRE) классов из стандартной редакции JRE. [27] Это ограничение отсутствует в стандартной среде выполнения Java8 App Engine.
- Процесс, запущенный на сервере для ответа на запрос, не может длиться более 60 секунд (с выпуском 1.4.0 это ограничение больше не применяется к фоновым заданиям).
- Не поддерживает закрепленные сеансы (также известные как привязка сеанса), поддерживаются только реплицированные сеансы, включая ограничение на объем сериализуемых данных и время сериализации сеанса.
Основные отличия
Отличия от хостинга других приложений
По сравнению с другими услугами масштабируемого хостинга, такими как Amazon EC2 , App Engine предоставляет больше инфраструктуры, чтобы упростить написание масштабируемых приложений, но может запускать только ограниченный набор приложений, предназначенных для этой инфраструктуры.
Инфраструктура App Engine устраняет многие проблемы системного администрирования и разработки, связанные с созданием приложений для масштабирования до сотен запросов в секунду и более. [28] Google обрабатывает развертывание кода в кластере, мониторинг, восстановление после сбоя и запуск экземпляров приложений по мере необходимости.
В то время как другие службы позволяют пользователям устанавливать и настраивать практически любое * NIX-совместимое программное обеспечение, App Engine требует, чтобы разработчики использовали только поддерживаемые языки, API-интерфейсы и платформы . Текущие API позволяют хранить и извлекать данные из документно-ориентированной базы данных Google Cloud Datastore ; выполнение HTTP-запросов; отправка электронной почты; манипулирование изображениями; и кеширование. Google Cloud SQL [29] может использоваться для приложений App Engine, которым требуется серверная часть базы данных, совместимая с реляционной MySQL . [30]
Дневные и поминутные квоты ограничивают пропускную способность и использование ЦП, количество обслуживаемых запросов, количество одновременных запросов и вызовов различных API, а отдельные запросы прекращаются, если они занимают более 60 секунд или возвращают более 32 МБ данных. .
Различия между SQL и GQL
Интегрированная база данных Google Cloud Datastore в Google App Engine имеет синтаксис, подобный SQL, который называется « GQL » ( язык запросов Google ). GQL не поддерживает оператор Join . [31] Вместо этого можно установить отношения «один ко многим» и «многие ко многим» с помощью ReferenceProperty()
. [32]
Google Firestore является преемником Google Cloud Datastore и заменяет GQL методом запросов на основе документов, который обрабатывает хранимые объекты как коллекции документов .
Проблемы переносимости
Разработчики опасаются, что приложения нельзя будет переносить из App Engine, и опасаются быть привязанными к этой технологии. [33] В ответ существует ряд проектов по созданию серверных частей с открытым исходным кодом для различных проприетарных / закрытых API-интерфейсов движка приложений, особенно хранилища данных. AppScale , CapeDwarf и TyphoonAE [34] - это лишь некоторые из проектов с открытым исходным кодом.
AppScale автоматически развертывает и масштабирует неизмененные приложения Google App Engine в популярных общедоступных и частных облачных системах и локальных кластерах. [35] AppScale может запускать приложения Python, Java, PHP и Go на EC2, Google Compute Engine, Softlayer, Azure и других облачных сервисах.
TyphoonAE [34] может запускать приложения Python App Engine в любом облаке, поддерживающем Linux-машины.
Веб-фреймворк Web2py предлагает миграцию между базами данных SQL и Google App Engine, однако он не поддерживает несколько специфичных для App Engine функций, таких как транзакции и пространства имен. [36]
Kubernetes - это система управления заданиями с открытым исходным кодом, изобретенная Google для абстрагирования инфраструктуры, чтобы контейнерные приложения с открытым исходным кодом (например, Docker) могли работать на многих типах инфраструктуры, таких как Amazon Web Services , Microsoft Azure и других. Это один из ответов Google на проблему переносимости.
Бэкэнды
В Google I / O 2011 Google анонсировал серверные части App Engine , которым разрешено работать непрерывно и потреблять больше памяти. [37] [38] С 13 марта 2014 г. Backend API устарел и заменен на Modules API. [39]
Google Cloud SQL
В октябре 2011 года Google анонсировал базу данных SQL без обслуживания, которая поддерживает JDBC и DB-API. [40] Эта служба позволяет создавать, настраивать и использовать реляционные базы данных с приложениями App Engine. Google Cloud SQL поддерживает MySQL 8.0, 5.7 и 5.6. [41]
Квоты использования
Для начала работы Google App Engine требуется учетная запись Google, и учетная запись может позволить разработчику зарегистрировать до 25 бесплатных приложений и неограниченное количество платных приложений. [42]
Google App Engine определяет квоты использования для бесплатных приложений. Могут быть запрошены расширения этих квот, а авторы приложений могут оплачивать дополнительные ресурсы. [43]
Смотрите также
- Веб-сервисы Amazon
- AppScale
- AWS Elastic Beanstalk
- Bluemix
- Кокаин (PaaS)
- Машинный двор
- Force.com
- GoGrid
- Скрипт Google Apps
- Облачная платформа Google
- Heroku
- Jelastic
- Microsoft Azure
- OpenShift
- Облачная платформа Oracle
- Rackspace Cloud
- Skytap
- VMware
Рекомендации
- ^ «Представляем Google App Engine + наш новый блог» . Блог Google App Engine . 7 апреля 2008 . Проверено 3 декабря 2019 .
- ^ «Среда выполнения Python - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ Сандерсон, Дэн (2009). Программирование Google App Engine: создание и запуск масштабируемых веб-приложений в инфраструктуре Google . O'Reilly Media . ISBN 978-0-596-52272-8.
- ^ а б «Документация по Google App Engine | Документация по App Engine» . Google Cloud . Проверено 3 декабря 2019 .
- ^ «Квоты - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ «Добро пожаловать в webapp2! - документация по webapp2 v2.5.1» . Webapp-improved.appspot.com . Проверено 14 февраля 2012 .
- ^ «AppEngineFrameworks - tipfy - Всемогущий фреймворк для Google App Engine - Хостинг проектов Google» . Проверено 14 февраля 2012 .
- ^ «Что такое Google App Engine? - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ «Обзор веб-приложений - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ «Google выбрал причал для App Engine» . Infoq.com. 2012-07-13 . Проверено 17 июля 2012 .
- ^ "Низкоуровневый API хранилища данных Google App Engine" .
- ^ "Объективизировать библиотеку" .
- ^ «Фреймворк Slim3» .
- ^ «Джелло Фреймворк» .
- ^ «WillItPlayInJava - googleappengine - Перечисляет уровень совместимости различных технологий Java и App Engine - Google App Engine - Google Project Hosting» . Проверено 14 февраля 2012 .
- ^ «Django-nonrel - поддержка NoSQL для Django» . Все кнопки нажаты. 2010-02-04 . Проверено 17 июля 2012 .
- ^ "djangoappengine - серверные части Django App Engine (БД, электронная почта и т. д.)" . Все кнопки нажаты . Проверено 17 июля 2012 .
- ^ «Соглашение об уровне обслуживания App Engine - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ «Блог Google App Engine: С Днем Рождения, хранилище данных с высоким уровнем репликации: 1 год, 100 000 приложений, время простоя 0%» . Googleappengine.blogspot.com. 2012-01-05 . Проверено 14 февраля 2012 .
- ^ «Google Cloud Platform - Поддержка» .
- ^ «Основные аккаунты - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ «Выгрузка и загрузка данных - Google App Engine - Google Code» . 1999-02-22 . Проверено 14 февраля 2012 .
- ^ арал. "арал / гаебар" . GitHub . Проверено 14 февраля 2012 .
- ^ "Approcket - Живая синхронизация между AppEngine и MySQL - Google Project Hosting" . Проверено 14 февраля 2012 .
- ^ "gawsh - Помощники веб-служб Google Apps - Хостинг проектов Google" . Проверено 14 февраля 2012 .
- ^ "gae-filestore - Простая виртуальная файловая система в хранилище данных Google App Engine - Хостинг проектов Google" . Проверено 14 февраля 2012 .
- ^ «Белый список класса JRE - Google App Engine - разработчики Google» . 1999-02-22 . Проверено 14 июня 2013 .
- ^ «Среда выполнения Python - Google App Engine» . 2009-11-10 . Проверено 10 ноября 2009 .
- ^ «Базы данных Google Cloud SQL - Cloud SQL - Платформа Google Cloud» . Облачная платформа Google .
- ^ «Использование Google Cloud SQL - стандартной среды App Engine для Java - Google Cloud Platform» . Облачная платформа Google .
- ^ Разработчики Google (7 апреля 2008 г.). «Campfire One: Представляем Google App Engine (часть 3)» - через YouTube.
- ^ «Моделирование отношений сущностей - Google App Engine - разработчики Google» . 2012-06-26 . Проверено 17 июля 2012 .
- ^ Галлахер, Шон (2008-04-09). «Анализ: Google App Engine заманчив, от него будет трудно избавиться» . Ars Technica . Проверено 17 июля 2012 .
- ^ а б "typhoonae - Typhoon App Engine - Хостинг проектов Google" . Проверено 17 июля 2012 .
- ^ AppScale запускается как средство резервного копирования с открытым исходным кодом, эквивалентное Google App Engine . TechCrunch (24 июня 2013 г.). Проверено 18 сентября 2013.
- ^ [1] Архивировано 20 февраля 2010 года в Wayback Machine.
- ^ Google I / O 2011: серверные части App Engine на YouTube
- ^ «Обзор Backends Python API - стандартная среда App Engine для Python - Google Cloud Platform» . Облачная платформа Google .
- ^ «Обзор Backends Python API - стандартная среда App Engine для Python - Google Cloud Platform» . Облачная платформа Google .
- ^ «Google Cloud SQL: ваша база данных в облаке - официальный блог Google Code» . 6 октября 2011 г.
- ^ «Возможности Cloud SQL - Документация по Cloud SQL - Платформа Google Cloud» . Облачная платформа Google .
- ^ «Общие вопросы по Google App Engine» . Разработчики Google . Проверено 18 июня 2015 .
- ^ «Общие сведения о квотах приложений с помощью Google App Engine» . Проверено 16 апреля 2010 .
Библиография
- Сандерсон, Дэн (26 октября 2012 г.), Программирование Google App Engine (2-е изд.), O'Reilly Media , стр. 536, ISBN 978-1449398262
- де Йонге, Адриан (31 октября 2011 г.), Essential App Engine: создание высокопроизводительных приложений Java с помощью Google App Engine (1-е изд.), Addison-Wesley Professional , стр. 304, ISBN 978-0-321-74263-6
- Гермер, Даниэль; Унру, Эми (24 ноября 2010 г.), Google App Engine Java and GWT Application Development (1-е изд.), Packt Publishing , стр. 480, ISBN 978-1-84969-044-7
- Рош, Кайл; Дуглас, Джефф (31 декабря 2009 г.), Beginning Java Google App Engine (1-е изд.), Apress , стр. 375, ISBN 978-1-4302-2553-9
- Сандерсон, Дэн (23 ноября 2009 г.), Программирование Google App Engine (1-е изд.), O'Reilly Media , стр. 400 , ISBN 978-0-596-52272-8
- Северанс, Чарльз (22 мая 2009 г.), Использование Google App Engine (1-е изд.), O'Reilly Media , стр. 262 , ISBN 978-0-596-80069-7
- Чурана, Юджин (2 февраля 2009 г.), Разработка с помощью Google App Engine (1-е изд.), Apress , стр. 164, ISBN 978-1-4302-1831-9
Внешние ссылки
- Официальная маркетинговая страница
- Официальный веб-сайт
- Официальный блог Google Cloud Platform
- Примечания к выпуску
- Google App Engine - запускайте свои веб-приложения в инфраструктуре Google - технический доклад инженера Google Гвидо ван Россума из Стэнфордского университета . ( онлайн-архив видео )
- Преимущества внедрения Google App Engine
- Использование внешней базы данных с Google App Engine
- Поддерживаемые платформы и библиотеки Java
- Книга Web2py - онлайн-документация - рецепт развертывания Google App Engine
- Примеры проектов Google Cloud SQL
- Google Cloud поддерживает node.js
- Appmd : пример проекта разработки Python. App Engine / django / Google Closure / Endpoints / Material design