• Официальный сайт SDK
  • Сайт с примерами кода

Что такое Google App Engine?

Платформа Google App Engine позволяет запускать Ваши приложения, используя инфраструктуру компании Google (серверы, коммуникации, технологии). Приложения, которые используют для своей работы App Engine, очень просто создавать, поддерживать и масштабировать при резком увеличении на них нагрузки. Для работы с App Engine нет необходимости знать о том, как нужно управлять своим сервером, достаточно просто загрузить код своего приложения, и оно сразу станет доступным Вашим пользователям.

Для размещения приложения можно воспользоваться бесплатным доменом третьего уровня в зоне appspot.com, либо с помощью Служб Google задействовать собственный домен. По желанию можно сделать доступным свое приложение любому посетителю Вашего сайта, либо ограничить доступ только сотрудникам своей компании.

Для того, чтобы развернуть свое первое приложение, не требуется никаких затрат. Просто создайте бесплатный аккаунт Google и сможете опубликовать свое творение для всего мира. Бесплатный аккаунт включает в себя 500 мегабайт свободного места под данные и ресурсы сервера, достаточные для обслуживания 5 миллионов просмотров страниц в месяц.

Обратите внимание, что пока платформа Google App Engine находится в режиме тестирования, доступны только бесплатные аккаунты. Однако, в ближайшем будущем появится возможность приобрести дополнительные вычислительные ресурсы, которые могут понадобиться Вашему проекту при значительном росте посещений.

Среда приложения

Платформа Google App Engine позволяет быстро развернуть приложение, которое будет надежно себя чувствовать при высокой посещаемости проекта и оперировать очень большими объемами данных. Система предоставляет уникальные возможности:

  • динамическая генерация web страниц с полной поддержкой современных технологий
  • хранилище для размещения постоянных данных с возможностью делать выборки, сортировку данных и проведение транзакций
  • автоматическое масштабирование и балансировка нагрузки между серверами при резком увеличении посещаемости проекта
  • функции API для авторизации пользователей и отправки электронной почты с помощью аккаунтов Google
  • полноценная среда разработки, которая эмулирует работу системы Google App Engine на вашем локальном компьютере.

Приложения, разворачиваемые на базе App Engine, должны быть написаны на языке программирования Python. Предлагаемая среда исполнения включает в себя полную реализацию возможностей самого языка Python и большинство функций из стандартной библиотеки языка.

Несмотря на то, что единственным языком, с которым в настоящее время работает Google App Engine, является Python, ведутся работы по реализации поддержки на этой платформе других языков.

"Песочница"

Приложения запускаются в безопасной среде, которая предоставляет ограниченный доступ к функциям операционной системы. Эти ограничения позволяют платформе App Engine распределять входящие запросы между множеством серверов Google, а также использовать только необходимые в текущий момент ресурсы. Песочница изолирует каждое приложение в своей собственной среде, которая не зависит ни от используемого оборудования, операционной системы или размещения приложения на сервере.

Примеры ограничений этой безопасной среды:

  • Приложение может получить доступ к другим компьютерам/серверам в сети Интернет только через API запроса URL и работы с электронной почтой. Другие компьютеры/серверы могут взаимодействовать с нашим приложением путем выполнения HTTP (или HTTPS) запросов по стандартным портам.
  • Приложение не имеет прав на запись файлов на сервере. Приложение имеет доступ к только файлам, загруженным на сервер непосредственно вместе с его кодом. Для хранения постоянных данных необходимо использовать сервис постоянного хранилища (datastore) платформы App Engine.
  • Приложение не может содержать фрагменты кода, которые будут выполняться больше нескольких секунд. Приложение не может создавать подпроцессы, а также исполнять какие-либо действия после отправки ответа пользователю.

Среда выполнения языка Python

Платформа App Engine предоставляет среду выполнения, которая использует для своей работы язык Python. Компания Google рассматривает возможность поддержки других языков программирования в следующих релизах.

Среда исполнения использует Python версии 2.5.2.

Среда включает в себя стандартную библиотеку языка Python. Обратите внимание, что вызов методов, на которые наложены ограничения среды, такие как открытие сокета или запись в файл, будут невозможны. Для удобства разработчика, использование функций стандартной библиотеки, которые не поддерживаются платформой, приведут к выдаче исключения.

Код приложения должен быть целиком написан на языке Python. Расширения, созданные с использованием языка C, не поддерживаются.

Для реализации множества функций среда выполнения предлагает богатый набор API для сервисов постоянного хранилища (datastore), аккаунтов Google, загрузки данных по URL и электронной почты. Платформа App Engine также предоставляет возможность использовать простой web-фреймворк webapp для удобной разработки приложений.

Для реализации продвинутых возможностей в App Engine также включена среда web разработки Django, версии 0.96.1. Обратите внимание, что хранилище платформы App Engine не является реляционной базой данных, которая необходима для работы некоторых компонент Django. Поэтому ряд функций, таких как движок шаблонов Django, работают корректно, другие же придется адаптировать под требования среды. В разделе Статьи находятся дополнительные материалы по работе Django с платформой App Engine.

Со своим приложением Вы можете использовать и загружать сторонние библиотеки, однако они должны быть реализованы на чистом Python и не требовать для своей работы неподдерживаемых платформой функций.

Для дополнительной информации о среде выполнения смотрите раздел Среда выполнения языка Python.

Постоянное хранилище

Платформа App Engine предлагает интерфейс к отказоустойчивому распределенному хранилищу данных, которое поддерживает транзакции и язык запросов. Приятно, что с ростом посещаемости вашего проекта не будет необходимости заботиться о дополнительных ресурсах для хранения новых данных.

Хранилище платформы App Engine хотя и похоже, но не является традиционной реляционной базой данных. Объекты данных и их наборы (entities), находящиеся в хранилище, имеют собственные свойства. Для получения необходимого набора данных, разработчик может оперировать запросами с применением фильтров и сортировок. Свойства у объектов могут быть любыми из числа поддерживаемых типов.

Интерфейс API для доступа к хранилищу позволяет задействовать различные структуры для хранения данных. Использование моделей для объектов позволяет определить их атрибуты, выполнять проверки на корректность и присваивать значения по умолчанию. Приложение может использовать именно ту структуру данных, которая необходима ему для работы.

Для обеспечения целостности данных хранилище использует механизм оптимистичных блокировок . В том случае, если другой процесс производит изменение этого же объекта, платформа будет пытаться выполнить его обновление несколько раз. Для гарантии сохранности данных приложение может воспользоваться механизмом транзакций и проводить одновременно операции с несколькими наборами данных, которые либо все будут успешно выполнены, либо в случае, если какая-либо операция не удастся, данные восстановятся по состоянию на момент начала транзакции.

Транзакции реализованы через модель распределенных вычислений, которая оперирует понятием "группы наборов объектов". Транзакция может быть произведена только, если объекты объединены в отдельную группу. Для эффективной работы механизма транзакций группы одних и тех же наборов объектов сохраняются платформой в одном месте. Приложение может привязывать наборы объектов к группам сразу при их создании.

Для изучения дополнительных возможностей хранилища обратитесь к руководству по Datastore API .

Аккаунты Google (Users API)

Платформа App Engine включает в себя API для прозрачной интеграции с аккаунтами Google. Ваше приложение может потребовать от пользователя войти под своим аккаунтом Google, и после успешной авторизации получить имя пользователя и его адрес электронной почты, ассоциированные с аккаунтом. Использование службы аккаунтов Google позволяет пользователю быстро начать работу с приложением, так как нет необходимости тратить время и проводить отдельную регистрацию учетных данных на вашем сайте. Это также позволяет не заботиться разработчику о реализации функционала еще одной системы регистрации пользователей специально для своего приложения.

Если ваше приложение использует Службы Google, оно может задействовать этот же интерфейс для предоставления доступа сотрудникам вашей организации под аккаунтами Служб Google.

Через интерфейс Users API также можно определить, является ли текущий пользователь администратором приложения. Таким образом, становится очень просто реализовать административный раздел на вашем сайте.

Для дополнительной информации об интеграции с аккаунтами Google смотрите руководство по Users API.

Сервисы платформы App Engine

Платформа App Engine предоставляет различные сервисы, которые позволяют реализовать большинство типовых функций приложения. В настоящий момент доступны следующие интерфейсы к сервисам:

Загрузка URL (URL Fetch)

Приложения могут получить доступ к другим ресурсами сети Интернет, таким как web сервисы, используя сервис загрузки URL. Этот сервис выполняет запрос к web ресурсу, используя высокоскоростную инфраструктуру Google, которая зарекомендовала себя в других продуктах компании. Для дополнительной информации об этом сервисе обратитесь к описанию URL Fetch API.

Электронная почта

Приложения могут отправлять электронную почту через специальный сервис платформы App Engine. Этот сервис также использует инфраструктуру Google. Для дополнительной информации обратитесь к описанию Mail API.

Memcache

Сервис Memcache предоставляет приложениям высокопроизводительный кэш в оперативной памяти типа ключ-значение, который будет доступен всем экземплярам вашего приложения. Memcache очень полезен для данных, которые не требуется постоянно хранить, либо проводить над ними транзакции. Это могут быть временные или специально загруженные данные из хранилища для обеспечения к ним очень быстрого доступа. Для дополнительной информации обратитесь к описанию Memcache API.

Обработка изображений

Этот сервис позволяет приложениям производить различные действия над изображениями. Используя его, можно растягивать, обрезать и поворачивать изображения в форматах JPEG и PNG. Для дополнительной информации о сервисе обработки изображений обратитесь к описанию Images API.

Среда разработки

Среда разработки App Engine software development kit (SDK) включает в себя web сервер, который эмулирует работу платформы App Engine на локальном компьютере разработчика. В состав SDK включены все интерфейсы API и библиотеки, доступные в App Engine. Web сервер также производит запуск приложения в безопасной среде и полностью эмулирует ограничения платформы, включая проверки заблокированных функций или попытки управлять системными ресурсами.

Среду разработки можно запустить на любом компьютере с установленным языком Python версии 2.5, который доступен на платформах Windows, Mac OS X и Linux. Вы можете скачать установочный пакет языка Python для вашей операционной системы с сайта Python. SDK доступен в виде ZIP архива и полноценных инсталляторов для операционных систем Windows и Mac OS X.

Вы можете скачать SDK здесь.

В состав среды разработки включена утилита, позволяющая загружать приложение на сервер платформы App Engine. После того, как были созданы файлы с кодом приложения, конфигурационные и прочие данные, вы можете запустить команду для их публикации. Утилита запросит параметры вашего аккаунта Google: адрес электронной почты и пароль.

После добавления новых функций в приложение, которое уже было опубликовано на платформе App Engine, вы можете осуществить загрузку новой версии. Старая копия приложения продолжит работу с пользователями до тех пор, пока вы не дадите команду для переключения на новую версию. Также имеется возможность протестировать новый вариант приложения, развернутого на сервере, пока основные пользователи будут работать со старой проверенной версией.

Административная консоль - это web интерфейс, через который можно управлять работой приложений App Engine. Ее можно использовать для создания новых приложений, настройки доменных имен, переключения между версиями, просмотра ошибок и содержимого хранилища данных.

Квоты и ограничения

Приложения для App Engine не только просто создавать, но и также за их размещение не нужно платить! Вы можете создать аккаунт и опубликовать приложение для того, чтобы люди по всему миру могли его свободно использовать. Бесплатный аккаунт включает в себя 500 мегабайт свободного места под данные и ресурсы сервера, достаточные для обслуживания 5 миллионов просмотров страниц в месяц.

Обратите внимание, что пока платформа Google App Engine находится в режиме тестирования, доступны только бесплатные аккаунты. Однако, в ближайшем будущем появится возможность приобрести дополнительные вычислительные ресурсы по доступной стоимости, которые могут понадобиться Вашему проекту при значительном росте посещений. Бесплатные аккаунты продолжат действовать после завершения тестового периода.

В течении тестового периода вы можете зарегистрировать на сервере до 10 своих приложений.

Ограничения ресурсов приложения или "квоты" подсчитываются постоянно. Как только ваше приложение превысит временную квоту, такую как пропускная способность, оно будет ограниченно в ресурсах до тех пор, пока не вернется к прежним значениям. Ограничение по фиксированной квоте (например, доступное пространство для данных) вступает в действие при достижении лимита и снимается при удалении данных.

Некоторые другие ограничения были введены для того, чтобы повысить надежность системы. Например, приложение не может готовить ответ на запрос пользователя больше нескольких секунд. Если обработчик запроса выполняется слишком долго, приложение будет принудительно завершено и пользователю выдастся ошибка. Порог этого ограничения является динамическим и может варьироваться в зависимости от существующей нагрузки на сервер.

Другой пример ограничения сервиса - количество объектов, выдаваемых в ответ на запрос к хранилищу. В результате запроса приложение может получить максимум 1000 объектов. Запросы, которые могут привести к выдаче результатов свыше этого ограничения, получат только часть данных. Это ограничение призвано уменьшить нагрузку на инфраструктуру хранилища данных.

Попытки разработчиков различными ухищрениями превысить доступный лимит, такие как создание приложений на разных аккаунтах, работающих взаимосвязанно, приведут к нарушению условий использования сервиса, что в свою очередь может повлечь за собой приостановку действия или закрытия аккаунтов.

Дополнительная информация

Для изучения возможностей Google App Engine:

Добро пожаловать в мир Google App Engine!