Google App Engine
| Тип | |
|---|---|
| Разработчик | |
| Операционная система | |
| Последняя версия | |
| Лицензия | |
| Сайт | |
Google App Engine — сервис хостинга сайтов и web-приложений на серверах Google с бесплатным именем <имя_сайта>.appspot.com, либо с собственным именем, задействованным[1] с помощью служб Google.
App Engine представлена в апреле 2008, находится в режиме тестирования, доступны как бесплатные аккаунты:[2] «…до 1 Гб дискового пространства, 10 Гб входящего трафика в день, 10 Гб исходящего трафика в день, 200 миллионов гигациклов CPU в день и 2000 операций отправления электронной почты в день»,[3] так и возможность приобретения дополнительных ресурсов[4].
Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python, PHP, Java либо Go. Среда исполнения Python[5] включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка, ограниченную версию Django, и т. д.
Предлагается набор API для сервисов хранилища, datastore API (BigTable),[6] аккаунтов Google,[7] загрузки данных по URL,[8] электронной почты[9] и т. д.
Предоставлена возможность использовать планировщик задач cron как для приложений реализованных на Python, так и на Java. Разрешено планирование не более 20-ти заданий.[10][11]
Использование службы аккаунтов Google позволяет быстро начать работу с приложением, нет необходимости проводить отдельную регистрацию учётных данных на каждом сайте. Это также позволяет разработчику не заботиться о реализации ещё одной системы регистрации пользователей специально для своего приложения.
Платформа Google конкурирует с аналогичными сервисами от Amazon, которые предоставляют возможности размещать файлы и веб-приложения, используя свою инфраструктуру.
Содержание |
Отличия от традиционной модели хостинга приложений[править]
В отличие от многих обычных размещений приложений на виртуальных машинах, таких как Amazon EC2, платформа App Engine тесно интегрирована с приложениями и накладывает на разработчиков некоторые ограничения. Конкурирующие среды позволяют оперировать множеством программного обеспечения, созданного под *NIX системами, в то время как App Engine требует от разработчика обязательного использования языков программирования Python, Java или Go (последний — с мая 2011) и сохранения информации в собственном хранилище (Datastore) — подмножестве проприетарной базы данных BigTable (en), являющейся ноу-хау компании Google.
Хотя большинство из разработанных на языке Python приложений возможно запустить без изменений под App Engine (исключая те, которые требуют доступа к низкоуровневым функциям системы или доступа к сети), использование хранилища потребует значительных сил от разработчиков на адаптацию приложений. В отличие от популярных СУБД MySQL и PostgreSQL, хранилище не является реляционной базой данных, в частности не поддерживает схему и не требует нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привела бы к значительному замедлению работы. Нереляционный характер хранилища требует от разработчиков использования нетрадиционной архитектуры хранения и обработки данных. Например, вместо нормализованного хранения данных в двух или нескольких таблицах с последующим объединением в запросе (join), логически связанные данные рекомендуется хранить в одной таблице.
В то же самое время все эти ограничения могут привести к тому, что многим разработчикам придётся прилагать дополнительные усилия для адаптации к новой среде, и они предпочтут выбор альтернативных платформ.
Ограничения[править]
Среда выполнения платформы Google App Engine позволяет разработчику контролировать лишь часть параметров операционной системы, что может представлять проблему для разработки приложений.
Нет доступа на запись в файловую систему сервера. Единственный способ сохранять данные — внутреннее хранилище, нереляционная, высокомасштабируемая база данных. Хранилище отличается от реляционных СУБД MySQL и PostgreSQL, которые используются на большинстве сайтов.
Системы управления сессиями, использующие файловую систему, не будут работать. Google предоставляет альтернативный вариант — Memcache API. Есть возможность организовать авторизацию пользователей через аккаунты Google.
Google широко использует в своих приложениях технологию MapReduce, парадигма параллельных вычислений, проводимых на множестве узлов кластера, её поддержка, вероятно, будет добавлена к возможностям платформы.[12]
Теперь App Engine имеет поддержку SQL с Google Cloud SQL [13]
Пример самого маленького приложения[править]
Сайт helloworld.appspot.com из одной страницы «index.html» требует[14] загрузки[15] на серверы 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><h1>Hello World !</h1></html>
См. также[править]
Примечания[править]
- ↑ Использование Google App Engine вместе со своим доменом
- ↑ Что такое Google App Engine?. Архивировано из первоисточника 15 марта 2012.
- ↑ Условия предоставления сервиса Google App Engine
- ↑ Условия и тарифы приобретения дополнительных ресурсов
- ↑ Среда выполнения языка Python
- ↑ Datastore API (работа с хранилищем)
- ↑ Users API (интерфейс авторизации пользователей)
- ↑ URL Fetch API (интерфейс загрузки URL)
- ↑ Mail API (отправка почты)
- ↑ Задачи, запланированные с помощью Cron для Python
- ↑ Задачи, запланированные с помощью Cron для Java
- ↑ Проект MapReduce для AppEngine
- ↑ Google Cloud SQL Пример приложения
- ↑ Настройка приложения. Обработчики статических файлов
- ↑ Публикация приложения
Литература[править]
- Sanderson, Dan (October 26, 2012), «Programming Google App Engine» (2nd ed.), O'Reilly Media, с. 536, ISBN 978-1449398262, <http://shop.oreilly.com/product/0636920017547.do>
- de Jonge, Adriaan (October 31, 2011), «Essential App Engine: Building High-Performance Java Apps with Google App Engine» (1st ed.), Addison-Wesley Professional, с. 304, ISBN 0-321-74263-X, <http://www.informit.com/store/product.aspx?isbn=0132484781>
- Guermeur, Daniel & Unruh, Amy (November 24, 2010), «Google App Engine Java and GWT Application Development» (1st ed.), Packt Publishing, с. 480, ISBN 1-84969-044-8, <https://www.packtpub.com/google-app-engine-java-and-gwt-application-development/book>
- Roche, Kyle & Douglas, Jeff (December 31, 2009), «Beginning Java Google App Engine» (1st ed.), Apress, с. 375, ISBN 1-4302-2553-X, <http://www.apress.com/9781430225539>
- Sanderson, Dan (November 23, 2009), «Programming Google App Engine» (1st ed.), O'Reilly Media, с. 400, ISBN 0-596-52272-X, <http://oreilly.com/catalog/9780596522735>
- Severance, Charles (May 22, 2009), «Using Google App Engine» (1st ed.), O'Reilly Media, с. 262, ISBN 0-596-80069-X, <http://oreilly.com/catalog/9780596800697>
- Ciurana, Eugene (February 2, 2009), «Developing with Google App Engine» (1st ed.), Apress, с. 164, ISBN 1-4302-1831-2, <http://www.apress.com/9781430218319>
Ссылки[править]
- Google App Engine (англ.). — Официальный сайт.
- Google App Engine Russian. — Русскоязычная группа разработки.
- Google App Engine for Java on Russian. — Русскоязычная группа разработки.
- Google App Engine. — Сообщество разработчиков.
- IBM developerWorks. — Сообщество разработчиков IBM (имеется немало материалов по разработке для платформы GAE).
| Облачные вычисления | ||
|---|---|---|
| Клиенты | Браузер (Настольный компьютер · Ноутбук · Смартфон) · Нетбук · Неттоп | |
| Приложения | Google Apps · Microsoft Online (англ.) · NetSuite · Salesforce.com | |
| Платформы | App Engine · Azure · Engine Yard (англ.) · Force.com · Heroku · MTurk (англ.) · RightScale (англ.) · S3 · SimpleDB · SQS | |
| Инфраструктура | EC2 · Eucalyptus (англ.) · FlexiScale (англ.) · GoGrid (англ.) · Nimbus (англ.) · Rackspace Cloud (англ.) · VPC (англ.) | |
| Серверы | 3tera (англ.) · Cisco UCS · SGI CloudRack | |
| Технологии |
Дата-центры · Распределенные файловые системы · Структурированные хранилища (англ.) · Виртуализация · Веб-служба |
|
| Стандарты | AJAX · Atom · HTML5 · REST · XMPP · BitTorrent | |