С выпуском Google Apps — набором разнообразных сетевых служб, к которым можно получать доступ под своим доменным именем — компания Google дала возможность создавать и поддерживать с минимальными затратами IT инфраструктуру небольшой организации. Google Apps Engine — дальнейшее развитие этой концепции. Это новая платформа, позволяющая выполнять свои веб-приложения в инфраструктуре Google.
Приложение Google Apps Engine может выполняться в одной из двух сред выполнения:
- Java или
- Python.
Причем возможности этих сред существенно ограничены по сравнению с возможностями не GAE разработки.
В частности приложение GAE не может
- осуществлять запись в файловую систему,
- создавать подпроцесс или поток,
- открывать поток для доступа к веб-узлу на прямую (возможно только получения контента c помощью URL App Engine),
- осуществлять системные вызовы.
С другой стороны Google Apps Engine предоставляет доступ к следующим службам:
- хранилище данных
- аккаунты Google
- URL App Engine
- отправление электронной почты
- Memcached
- работа с изображением
- Cron
В целом предоставляемого набора хватит для реализации подавляющего числа бизнес приложений.
Развиваются проекты по интеграции с GAE других популярных платформ. Например в Java среде можно с определенными ограничениями запускать Grails приложения.
Одним из наиболее значимых ограничений GAE является отсутствие поддержки реляционных баз данных. Единственное с чем могут работать приложения — это хранилище Google. Для большинства задач его хватит, но ни о какой поддержке SQL речь не идет. К счастью хранилище поддерживает свой собственный язык запросов GQL, а также некоторые более высокоуровневые технологии (JDO и JPA).
Приложения, работающие в удаленной инфраструктуре, естественно имеют ограничения в плане потребления ресурсов. Квоты на потребляемые ресурсы, т.е. кол-во запросов в секунду, потребляемый трафик, используемое процессорное время и тд., предоставляемые Google, позволяют средне-нагруженном приложению работать вообще без оплаты, а в случае подключения оплачиваемых ресурсов справляться со значительной нагрузкой. Вот интересный пример попытки заставить GAE приложение работать под высокой нагрузкой.
Надо отметить что помимо общих квот на ресурсы приложения многие сервисы GAE имеют собственные ограничения, которые нельзя увеличить даже за плату. Например, размер запроса к приложению не может превышать 10Мб (следовательно нельзя загрузить файл больше чем 10Мб), одновременно может обрабатываться не более 30 запросов, время обработки одного запроса не может превышать 30 секунд, запрос к большинству сервисов, таких как хранилище, Memcached, обработка изображений не может превышать 1Мб. Из это следует что Google Apps Engine слабо подходит для сервисов, которые совершают тяжелыми вычислениями или хранят значительные объемы данных. Разумеется можно интегрироваться со внешними хранилищами, но это — отдельная тема.
Google Apps Engine не предоставляет достаточных средств для мониторинга и отладки приложений. В основном разработка идет в тестовой среде устанавливаемой на компьютере разработчика.
GAE приложения не имеют значительных преимуществ по интеграции с другими Google Apps сервисами за исключением возможной интеграции в интерфейс Google Apps и сквозной идентификации пользователей.
Например интеграция с Google Docs в полной мере доступна и не GAE приложениям. C помощью данного API любое приложение может осуществлять импорт/экспорт между документами MS Office (и не только) и Google Docs.
Кроме среды для выполнения приложений, Google так же предоставляет платформу для рапространения приложений Google Apps Marketplace. Размещенные в нем приложения могут устанавливать себе пользователи Google Apps. В этом сервисе присутствуют как платные, так и бесплатные приложения. На данный момент взимание оплаты с пользователей осуществляется приложениями самостоятельно. Но в будущем, после того как Google разработает свой Marketplace Billing API, все оплачиваемые приложения будут обязаны в 3-х месячный срок внедрить это API, после чего Google будет брать 20%-ную комиссию со всех оплат.
Для того чтобы приложение могло быть размещено на Google Apps Marketplace оно должно удовлетворять определенным требованиям. Обязательное требование — это поддержка Single Sign-On. При выкладывании приложения на Google Apps Marketplace с разработчика снимается 100$. Приложение становится доступным для пользователей не сразу, а после проверки сотрудниками Google.
В конце хотелось бы ответить на вопрос: когда имеет смысл использовать для создания приложения GAE, а когда нет?
Несмотря на значительные ограничения этой платформы, она довольно удобна для быстрого старта новых, не особенно сложных и больших проектов, особенно в условиях отсутствия собственной инфраструктуры или при недостатке финансирования.
В случае же реализации большой системы, функционально сложной и/или рассчитанной на большие нагрузки, удобнее будет воспользоваться стандартными средствами разработки. При этом приложение не будет ограниченным в доступе к Google Apps или Google Apps Marketplace по сравнению с Google Apps Engine приложениями, а написание небольшого интеграционного GAE приложения позволит так же встроить доступ к своему сервису через Google Apps.
Кстати, на данный момент в Google Apps Marketplace частично представлены даже такие казалось бы конкуренты Google Apps, как ZOHO и Salesforce.