Google App Engine
Google App Engine | |
---|---|
Тип |
среда разработки веб-фреймворк |
Разработчик | |
Написана на | Python |
Операционная система | GNU/Linux |
Последняя версия | 1.9.6 (3 июня 2014) |
Лицензия | GPLv2 |
Сайт | appengine.google.com |
Медиафайлы на Викискладе |
Google App Engine — служба хостинга сайтов и web-приложений на серверах Google с бесплатным именем <имя_сайта>.appspot.com либо с собственным именем, задействованным с помощью служб Google.
App Engine представлена в апреле 2008, доступны как бесплатные учётные записи[1]: «…до 1 Гб дискового пространства, 10 Гб входящего трафика в день, 10 Гб исходящего трафика в день, 200 миллионов гигациклов CPU в день и 2000 операций отправления электронной почты в день»[2], так и возможность приобретения дополнительных ресурсов[3].
Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python, Java, Node.JS, .NET, Ruby, Go либо PHP (последние два до сих пор имеют статус «экспериментальных» инструментов, хотя Google и заявлял о намерениях расширить список поддерживаемых языков программирования и сред, а саму службу сделать не зависящей от какого-либо языка программирования).
Среда исполнения Python[4] включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка Python, ограниченную версию Django, и т. д.
Предлагается набор API для служб хранилища, datastore API (BigTable)[5] аккаунтов Google,[6], загрузки данных по URL[7], электронной почты[8] и т. д.
Предоставлена возможность использовать планировщик задач cron как для приложений, реализованных на Python, так и на Java; разрешено планирование не более 20 заданий[9][10].
Использование службы учётных записей 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, хранилище не является реляционной базой данных, не требует схемы и нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привела бы к значительному замедлению работы[11][12]. Нереляционный характер хранилища требует от разработчиков использования нетрадиционной архитектуры хранения и обработки данных.
В то же самое время все эти ограничения могут[источник не указан 3322 дня] привести к тому, что многим разработчикам придётся прилагать дополнительные усилия для адаптации к новой среде, и они предпочтут выбор альтернативных платформ.
Ограничения
[править | править код]Среда выполнения платформы Google App Engine позволяет разработчику контролировать лишь часть параметров операционной системы, что может представлять затруднение для разработки приложений.
Нет доступа на запись в файловую систему сервера. Единственный способ сохранять данные — внутреннее хранилище, нереляционная высокомасштабируемая база данных. Хранилище отличается от реляционных СУБД MySQL и PostgreSQL, которые используются на большинстве сайтов.
Системы управления сессиями, использующие файловую систему, не будут работать. Google предоставляет альтернативный вариант — Memcached API. Есть возможность организовать авторизацию пользователей через аккаунты Google.
Google широко использует в своих приложениях технологию MapReduce, и её поддержка, вероятно, будет добавлена к возможностям платформы.[13]
App Engine имеет поддержку SQL с Google Cloud SQL[14].
Пример самого маленького приложения
[править | править код]Сайт helloworld.appspot.com из одной страницы «index.html» требует[15] загрузки[16] на серверы 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? Архивировано из оригинала 14 марта 2012 года.
- ↑ Условия предоставления сервиса Google App Engine Архивная копия от 24 сентября 2008 на Wayback Machine Архивировано 24 сентября 2008 года.
- ↑ Условия и тарифы приобретения дополнительных ресурсов . Дата обращения: 3 октября 2009. Архивировано 19 сентября 2009 года.
- ↑ Среда выполнения языка Python Архивная копия от 25 сентября 2008 на Wayback Machine Архивировано 25 сентября 2008 года.
- ↑ Datastore API (работа с хранилищем) Архивная копия от 21 сентября 2008 на Wayback Machine Архивировано 21 сентября 2008 года.
- ↑ Users API (интерфейс авторизации пользователей) Архивная копия от 21 сентября 2008 на Wayback Machine Архивировано 21 сентября 2008 года.
- ↑ URL Fetch API (интерфейс загрузки URL) Архивная копия от 21 сентября 2008 на Wayback Machine Архивировано 21 сентября 2008 года.
- ↑ Mail API (отправка почты) Архивная копия от 21 сентября 2008 на Wayback Machine Архивировано 21 сентября 2008 года.
- ↑ Задачи, запланированные с помощью Cron для Python Архивировано 12 апреля 2009 года.
- ↑ Задачи, запланированные с помощью Cron для Java Архивировано 3 января 2010 года.
- ↑ Google App Engine alluring, will be hard to escape Архивная копия от 16 августа 2018 на Wayback Machine
- ↑ Google’s growing cloud just got a NoSQL database Архивная копия от 16 августа 2018 на Wayback Machine
- ↑ Проект MapReduce для AppEngine . Дата обращения: 3 октября 2009. Архивировано 31 марта 2010 года.
- ↑ Google Cloud SQL Пример приложения . Дата обращения: 5 марта 2012. Архивировано 5 марта 2012 года.
- ↑ Настройка приложения. Обработчики статических файлов Архивная копия от 5 октября 2008 на Wayback Machine Архивировано 5 октября 2008 года.
- ↑ Публикация приложения Архивная копия от 24 сентября 2008 на Wayback Machine Архивировано 24 сентября 2008 года.
Литература
[править | править код]- Sanderson, Dan (2012-10-26), Programming Google App Engine (2nd ed.), O'Reilly Media, p. 536, ISBN 978-1449398262
- de Jonge, Adriaan (2011-10-31), Essential App Engine: Building High-Performance Java Apps with Google App Engine (1st ed.), Addison-Wesley Professional, p. 304, ISBN 0-321-74263-X
- Guermeur, Daniel; Unruh, Amy (2010-11-24), Google App Engine Java and GWT Application Development (1st ed.), Packt Publishing, p. 480, ISBN 1-84969-044-8
- Roche, Kyle; Douglas, Jeff (2009-12-31), Beginning Java Google App Engine (1st ed.), Apress, p. 375, ISBN 1-4302-2553-X
- Sanderson, Dan (2009-11-23), Programming Google App Engine (1st ed.), O'Reilly Media, p. 400, ISBN 0-596-52272-X
- Severance, Charles (2009-05-22), Using Google App Engine (1st ed.), O'Reilly Media, p. 262, ISBN 0-596-80069-X
- Ciurana, Eugene (2009-02-02), Developing with Google App Engine (1st ed.), Apress, p. 164, ISBN 1-4302-1831-2
Ссылки
[править | править код]- Google App Engine (англ.). — Официальный сайт.
- Google App Engine Russian. — Русскоязычная группа разработки.
- Google App Engine for Java on Russian. — Русскоязычная группа разработки.
- Google App Engine. — Сообщество разработчиков.
- IBM developerWorks. — Сообщество разработчиков IBM (имеется немало материалов по разработке для платформы GAE).