Google App Engine (часто называемый аббревиатурой GAE или просто App Engine ) — это платформа облачных вычислений , представляющая собой сервис для разработки и размещения веб-приложений в центрах обработки данных , управляемых Google . Приложения изолированы и запускаются на нескольких серверах. [2] App Engine предлагает автоматическое масштабирование веб-приложений: по мере увеличения количества запросов к приложению App Engine автоматически выделяет больше ресурсов веб-приложению для обработки дополнительных требований. [3]
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 использует некоторые обходные пути. Новая версия стандарта Java App Engine в бета-версии поддерживает 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]
Платная поддержка от инженеров Google предлагается в рамках Премьер-аккаунтов. [20]
В SDK версии 1.2.2 добавлена поддержка массовой загрузки данных с использованием Python. [21] Проекты Python с открытым исходным кодом gaebar, [22] approcket, [23] и gawsh [24] также позволяют пользователям загружать и создавать резервные копии данных App Engine. В настоящее время не существует метода массовой загрузки данных из GAE с использованием Java.
По сравнению с другими услугами масштабируемого хостинга, такими как Amazon EC2 , App Engine предоставляет больше инфраструктуры, упрощающей написание масштабируемых приложений, но может запускать только ограниченный набор приложений, предназначенных для этой инфраструктуры.
Инфраструктура App Engine устраняет многие проблемы системного администрирования и разработки, связанные с созданием приложений, масштабируемых до сотен запросов в секунду и выше. [27] Google занимается развертыванием кода в кластере, мониторингом, аварийным переключением и запуском экземпляров приложений по мере необходимости.
В то время как другие службы позволяют пользователям устанавливать и настраивать практически любое *NIX-совместимое программное обеспечение, App Engine требует от разработчиков использовать только поддерживаемые языки, API и платформы. Текущие API позволяют хранить и извлекать данные из документоориентированной базы данных Google Cloud Datastore ; выполнение HTTP-запросов; отправка электронной почты; манипулирование изображениями; и кэширование. Google Cloud SQL [28] можно использовать для приложений App Engine, требующих реляционной базы данных, совместимой с MySQL . [29]
Дневные и поминутные квоты ограничивают пропускную способность и использование ЦП, количество обслуживаемых запросов, количество одновременных запросов и вызовов различных API, а отдельные запросы прекращаются, если они занимают более 60 секунд или возвращают более 32 МБ данных. .
Интегрированная в Google App Engine база данных Google Cloud Datastore имеет SQL -подобный синтаксис, называемый « GQL » ( язык запросов Google ). GQL не поддерживает оператор Join . [30] Вместо этого отношения «один-ко-многим» и «многие-ко-многим» можно реализовать с помощью ReferenceProperty()
. [31]
Google Firestore является преемником Google Cloud Datastore и заменяет GQL методом запроса на основе документов, который рассматривает хранимые объекты как коллекции документов.
Разработчики обеспокоены тем, что приложения не будут переносимы из App Engine, и опасаются, что их привязывают к этой технологии. [32] В ответ существует ряд проектов по созданию серверных частей с открытым исходным кодом для различных проприетарных/закрытых API-интерфейсов движка приложений, особенно хранилища данных.AppScale , CapeDwarf и TyphoonAE [33] — лишь некоторые из проектов с открытым исходным кодом.
AppScale автоматически развертывает и масштабирует неизмененные приложения Google App Engine в популярных публичных и частных облачных системах и локальных кластерах. [34] AppScale может запускать приложения Python, Java, PHP и Go в EC2, Google Compute Engine, Softlayer, Azure и других облачных поставщиках.
TyphoonAE [33] может запускать приложения Python App Engine в любом облаке, поддерживающем машины с Linux.
Веб-платформа Web2py предлагает миграцию между базами данных SQL и Google App Engine, однако она не поддерживает некоторые специфичные для App Engine функции, такие как транзакции и пространства имен. [35]
Kubernetes — это система управления заданиями с открытым исходным кодом, изобретенная Google для абстрагирования инфраструктуры, чтобы контейнерные приложения с открытым исходным кодом (например, Docker) могли работать на многих типах инфраструктуры, таких как Amazon Web Services , Microsoft Azure и других. Это один из ответов Google на проблему переносимости.
На Google I/O 2011 компания Google анонсировала серверные части App Engine , которым разрешено работать непрерывно и потреблять больше памяти. [36] [37] С 13 марта 2014 года Backend API устарел в пользу API модулей. [38]
В октябре 2011 года Google представила базу данных SQL, не требующую обслуживания, которая поддерживает JDBC и DB-API. [39] Этот сервис позволяет создавать, настраивать и использовать реляционные базы данных с приложениями App Engine. Google Cloud SQL поддерживает MySQL 8.0, 5.7 и 5.6. [40]
Для запуска Google App Engine требуется учетная запись Google, которая может позволить разработчику зарегистрировать до 25 бесплатных приложений и неограниченное количество платных приложений. [41]
Google App Engine определяет квоты использования для бесплатных приложений. Можно запросить расширение этих квот, а авторы приложений могут оплатить дополнительные ресурсы. [42]
{{cite web}}
: |last=
имеет общее имя ( справка )