Google App Engine

Google App Engine — служба Хостинга сайтов и web-приложений на серверах Google с бесплатным именем <имя_сайта>.appspot.com — https://appspot.com либо с собственным именем, задействованным с помощью служб Google — http://www.google.com/a/help/intl/ru/.
App Engine представлена в апреле 2008, доступны как бесплатные учётные записи: «…до 1 Гб дискового пространства, 10 Гб входящего трафика в день, 10 Гб исходящего трафика в день, 200 миллионов гигациклов CPU в день и 2000 операций отправления электронной почты в день», так и возможность приобретения дополнительных ресурсов.
Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python, Java, Node.JS,.NET, Ruby, Go либо PHP (последние два до сих пор имеют статус «экспериментальных» инструментов, хотя Google и заявлял о намерениях расширить список поддерживаемых языков программирования и сред, а саму службу сделать не зависящей от какого-либо языка программирования). Среда исполнения Python включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка Python, ограниченную версию Django, и т. д.
Предлагается набор API для служб хранилища, datastore API (BigTable) аккаунтов Google,, загрузки данных по URL, электронной почты и т. д. Предоставлена возможность использовать планировщик задач Cron как для приложений, реализованных на Python, так и на Java; разрешено планирование не более 20 заданий.
Использование службы учётных записей Google позволяет быстро начать работу с приложением, нет необходимости проводить отдельную регистрацию учётных данных на каждом сайте. Это также позволяет разработчику не заботиться о реализации ещё одной системы регистрации пользователей специально для своего приложения. Платформа Google конкурирует с аналогичными сервисами от Amazon (Amazon EC2), которые предоставляют возможности размещать файлы и веб-приложения, используя свою инфраструктуру.
Отличия от традиционной модели хостинга приложений
В отличие от многих обычных размещений приложений на виртуальных машинах, таких как Amazon EC2, платформа App Engine тесно интегрирована с приложениями и накладывает на разработчиков некоторые ограничения. Среды параллельной обработки позволяют применять многое из программного обеспечения, созданного для Unix-подобных систем, в то время как App Engine требует от разработчика использовать один из языков программирования: Python, Java, Go (с мая 2011) или PHP (в экспериментальном режиме), а для хранения информации применять хранилище — подмножество проприетарной базы данных BigTable (en), являющейся Ноу-хау компании Google.
Хотя многие из разработанных на языке Python приложений возможно запустить без изменений для App Engine (исключая те, которые требуют доступа к низкоуровневым функциям системы или доступа к сети), использование хранилища потребует значительных сил от разработчиков на адаптацию приложений. В отличие от популярных СУБД MySQL и PostgreSQL, хранилище не является реляционной базой данных, не требует схемы и нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привела бы к значительному замедлению работы. Нереляционный характер хранилища требует от разработчиков использования нетрадиционной архитектуры хранения и обработки данных. В то же самое время все эти ограничения могут привести к тому, что многим разработчикам придётся прилагать дополнительные усилия для адаптации к новой среде, и они предпочтут выбор альтернативных платформ.
Ограничения
Среда выполнения платформы Google App Engine позволяет разработчику контролировать лишь часть параметров операционной системы, что может представлять затруднение для разработки приложений. Нет доступа на запись в файловую систему сервера. Единственный способ сохранять данные — внутреннее хранилище, нереляционная высокомасштабируемая база данных. Хранилище отличается от реляционных СУБД MySQL и PostgreSQL, которые используются на большинстве сайтов. Системы управления сессиями, использующие файловую систему, не будут работать. Google предоставляет альтернативный вариант — Memcached API. Есть возможность организовать авторизацию пользователей через аккаунты Google.
Google широко использует в своих приложениях технологию MapReduce, и её поддержка, вероятно, будет добавлена к возможностям платформы.
App Engine имеет поддержку SQL с Google Cloud SQL.
Пример самого маленького приложения
Сайт helloworld.appspot.com — https://web.archive.org/web/20141218151659/http://helloworld.appspot.com/ из одной страницы «index.html» требует загрузки на серверы Google App Engine двух файлов: …/helloworld/app.Yaml — конфигурационный файл приложения helloworld в его корневом каталоге
application: helloworld version: 1 runtime: python api_version: 1
handlers: - url: / static_files: static/index.html upload: static/index.html
…/helloworld/static/index.Html
<html>
Hello World!
</html>
См. также
Google Cloud Platform Amazon Web Services Heroku Force.Com Windows Azure
Примечания
- Что такое Google App Engine? — http://code.google.com/intl/ru/appengine/docs/whatisgoogleappengine.html
- http://code.google.com/intl/ru/appengine/docs/whatisgoogleappengine.html
- https://www.webcitation.org/66ARnM0Em?url=http://code.google.com/intl/ru/appengine/docs/whatisgoogleappengine.html
- http://www.googleappengine.ru/terms.html
- https://web.archive.org/web/20080924113659/http://www.googleappengine.ru/terms.html
- Условия предоставления сервиса Google App Engine — http://www.googleappengine.ru/terms.html
- Условия и тарифы приобретения дополнительных ресурсов — http://code.google.com/appengine/docs/billing.html
- http://code.google.com/appengine/docs/billing.html
- https://web.archive.org/web/20090919200527/http://code.google.com/appengine/docs/billing.html
- http://www.googleappengine.ru/docs/python/
- https://web.archive.org/web/20080925203954/http://www.googleappengine.ru/docs/python/
- Среда выполнения языка Python — http://www.googleappengine.ru/docs/python/
- http://www.googleappengine.ru/docs/datastore/
- https://web.archive.org/web/20080921170110/http://www.googleappengine.ru/docs/datastore/
- Datastore API (работа с хранилищем) — http://www.googleappengine.ru/docs/datastore/
- http://www.googleappengine.ru/docs/users/
- https://web.archive.org/web/20080921170126/http://www.googleappengine.ru/docs/users/
- Users API (интерфейс авторизации пользователей) — http://www.googleappengine.ru/docs/users/
- http://www.googleappengine.ru/docs/urlfetch/
- https://web.archive.org/web/20080921170120/http://www.googleappengine.ru/docs/urlfetch/
- URL Fetch API (интерфейс загрузки URL) — http://www.googleappengine.ru/docs/urlfetch/
- http://www.googleappengine.ru/docs/mail/
- https://web.archive.org/web/20080921170115/http://www.googleappengine.ru/docs/mail/
- Mail API (отправка почты) — http://www.googleappengine.ru/docs/mail/
- http://code.google.com/intl/ru/appengine/docs/python/config/cron.html
- https://web.archive.org/web/20090412164629/http://code.google.com/intl/ru/appengine/docs/python/config/cron.html
- Задачи, запланированные с помощью Cron для Python — http://code.google.com/intl/ru/appengine/docs/python/config/cron.html
- http://code.google.com/intl/ru/appengine/docs/java/config/cron.html
- https://web.archive.org/web/20100103171127/http://code.google.com/intl/ru/appengine/docs/java/config/cron.html
- Задачи, запланированные с помощью Cron для Java — http://code.google.com/intl/ru/appengine/docs/java/config/cron.html
- https://arstechnica.com/uncategorized/2008/04/analysis-google-app-engine-alluring-will-be-hard-to-escape/
- Google App Engine alluring, will be hard to escape — https://arstechnica.com/uncategorized/2008/04/analysis-google-app-engine-alluring-will-be-hard-to-escape/
- https://gigaom.com/2013/05/15/googles-growing-cloud-just-got-a-nosql-database/
- Google’s growing cloud just got a NoSQL database — https://gigaom.com/2013/05/15/googles-growing-cloud-just-got-a-nosql-database/
- Проект MapReduce для AppEngine — http://code.google.com/p/httpmr/
- http://code.google.com/p/httpmr/
- https://web.archive.org/web/20100331184810/http://code.google.com/p/httpmr/
- Google Cloud SQL Пример приложения — http://code.google.com/p/cloudsql/
- http://code.google.com/p/cloudsql/
- https://web.archive.org/web/20120305071405/http://code.google.com/p/cloudsql/
- http://www.googleappengine.ru/docs/configuringanapp.html#Static_File_Handlers
- https://web.archive.org/web/20081005160535/http://www.googleappengine.ru/docs/configuringanapp.html
- Настройка приложения. Обработчики статических файлов — http://www.googleappengine.ru/docs/configuringanapp.html#Static_File_Handlers
- http://www.googleappengine.ru/docs/appcfgpy.html
- https://web.archive.org/web/20080924230149/http://googleappengine.ru/docs/appcfgpy.html
- Публикация приложения — http://www.googleappengine.ru/docs/appcfgpy.html
Литература
- http://shop.oreilly.com/product/0636920017547.do
- http://www.informit.com/store/product.aspx?isbn=0132484781
- https://www.packtpub.com/google-app-engine-java-and-gwt-application-development/book
- http://www.apress.com/9781430225539
- http://oreilly.com/catalog/9780596522735
- http://oreilly.com/catalog/9780596800697
- http://www.apress.com/9781430218319
Ссылки
- Google App Engine — https://appengine.google.com/
- Google App Engine Russian — http://groups.google.com/group/google-appengine-ru/
- Google App Engine for Java on Russian — http://groups.google.ru/group/google-appengine-java-russian
- Google App Engine — http://www.googleappengine.ru/
- IBM developerWorks — http://www.ibm.com/developerworks/ru/
- Google App Engine. — Официальный сайт.
- Google App Engine Russian. — Русскоязычная группа разработки.
- Google App Engine for Java on Russian. — Русскоязычная группа разработки.
- Google App Engine. — Сообщество разработчиков.
- IBM developerWorks. — Сообщество разработчиков IBM (имеется немало материалов по разработке для платформы GAE).