Google Application Engine
Посмотрел на Google App Engine (GAE).
При своей цене (= бесплатно) это очень хороший сервис.
GAE - это инфраструктура для запуска веб-приложений на серверах Google. То, что сейчас модно называть cloud computing.
На презентации платформы в 2008 году Google объявил только о поддержке Python. Год спустя, в апреле 2009 года Google заявил о поддержке Java, правда с ограничениями.
Собственно, поддержка Java и была тем самым толчком, что я решил поближе посмотреть на платформу.
Возможности
Google App Engine предоставляет
следующие возможности как платформа:
- масштабируемость
- кластеризация
- он-лайн мониторинг
- балансировку нагрузки
- безопасность
- горизонтальное масштабирование базы данных
- отказоустойчивость
Ограничения
Как и любое бесплатное решение у платформы есть ограничения. На данный момент эти ограничения следующие:
- Ограниченный набор Java API
- Нереляционное хранилище данных
- Ограничение доступа к другим компьютерам
- Из доступных языков: Python, Java и JVM-based
- Ограничения на используемые ресурсы
Технологии
База данных
Это
небезызвестный BigTable. Для работы с ним используется
GQL. Для Java-реализации используется
JDO с ограниченной поддержкой JPA.
Применение
Уже сейчас существует много приложений, которые размещены на серверах Google. Многие из них доступны в
галерее приложений App Engine
На мой взгляд, использование нереляционной модели данных накладывает свои ограничения на тип проектируемых приложений, так как не всегда возможна полная денормализация данных.
Впечатления от использования SDK
Обзор не был бы полным, если бы я не попробовал написать простенькое приложение для платформы. Для этого необходимо зарегистрироваться на App Engine и запросить поддержку Java. Google объявил, что попробовать платформу можно только первым 10000 разработчикам. Судя по всему, ещё можно успеть, так как я получил доступ в течении 15 минут (приходит ключ по SMS). Подтверждение на поддержку Java пришло в течении суток.
Google предоставляе SDK для работы с платформой. В SDK входят скрипты для создания приложения, загрузки их на сервера Google и API для доступа к вышеперечисленным сервисам платформы. Кроме того, при разработке используются заглушки для сервисов (например, для User Service API), которые позволяют локально писать и отлаживать приложение.
Компания SpringSource объявила о поддержке Grails на платформе Google App Engine. Это не может не радовать, но первые впечатления были смазаны, так как плагин appengine для Grails ещё нужно дорабатывать. Например, кодогенератор заточен для gorm, который сделан поверх hibernate, но так как appengine не поддерживает hibernate, для генерации CRUD приходится делать следующие пассы: включать hibernate плагин, генерировать CRUD, отключать hibernate плагин. Надеюсь, в следующей версии appengine плагина эта проблема будет решена. Остальные проблемы можно почитать как в комментариях к анонсу, так и в джире проекта.
Альтернативные платформы
Самым известным, наверно, является
Amazon EC2, а замыкает тройку Microsoft с их
Windows Azure.
Amazon не предоставляет бесплатной дозы, в отличии от Microsoft и Google. При этом Amazon предоставляет shell-доступ к серверам. Сравнивать в целом платформы не имеет смысла, поэтому не буду.