Совсем недавно, в начале апреля этого года, корпорация Google запустила в тестовом режиме проект под названием Google App Engine (GAE). Данный проект является платформой нового типа для создания, размещения и обслуживания веб-приложений. В этой статье рассмотрим вопрос, в чём заключается новизна этого нового проекта Google, по сравнению с аналогичными сервисами. А примеры вроде "hello, world" - это уже есть на обучающем сайте сервиса, в том числе и на русском языке (googleappengine.ru).
Операционная система GAE
На самый первый взгляд Google App Engine покажется многим веб-разработчиком эдаким массовым и народным хостингом веб-приложений "для домохозяек". Действительно, с точки зрения традиционного хостинга, предложение от Google выглядит довольно таки скромным: один-единственный Python плюс урезанная система управления базой данных собственного сочинения GQL. Даже средней руки хостер сегодня предложит большее разнообразие в выборе разных языков и баз данных, а для полного счастья ещё может и выделить целый виртуальный сервер с линуксом и апачем.
Но в том то и дело, что на GAE не стоит смотреть с точки зрения традиционного хостинга. Google App Engine предлагает не привычный джентльменский набор веб-сервер + база данных + прочие прибамбасы, а написанный на Питоне API, который как раз и закрывает от веб-программиста, как в чёрный ящик, все эти апачи, майскулы и остальную "низкоуровневую" кухню. Вот как Windows API скрывает от прикладного программиста всё низкоуровневое хозяйство компьютера, так и GAE предлагает веб-разработчику сконцентрироваться исключительно на прикладной логике веб-приложения, а не заниматься тонкой настройкой .htaccess и борьбой со sql-injection. Кстати, в дальнейшем это API Google предполагает реализовать и на других языках, не только на Питоне. Я, например, склоняюсь к тому, что следующим будет Java. Но чёрный ящик GAE останется чёрным ящиком.
На практике это означает, что для создания веб-приложения даже типа "hello, world" программисту в обязательном порядке нужно скачать специальный SDK, который и реализует этот самый API. Потому что разработчики не имеют возможности получить доступ к файловой системе Google App Engine и, соответственно, отсутствует отладка скриптов через привычный shell на сервере. При помощи этого SDK приложения создаются локально, а потом закачиваются на серверы Google при помощи специальной утилиты-инсталлятора.
И, как и в любой операционной системе, веб-приложение в GAE будет находиться под полным системным контролем Google. То есть, если приложение, например, медленно работает и ест много ресурсов, то GAE может его аварийно завершить, выдав пользователю сообщение об ошибке типа "ваше веб-приложение выполнило недопустимую операцию и будет закрыто навечно". Единственная возможность управления приложением на сервере - это административная панель разработчика, которая позволяет зарегистрировать на сервере приложение, управлять версиями этого приложения и почитать логи об ошибках.
Главная фишка GAE в том и состоит, что происходит более чёткое отделение прикладного веб-программирования от системного.
Больше, чем операционная система
На самом деле сравнивать GAE с операционной системой будет не совсем правильно. App Engine настолько тесно интегрирован с вычислительной инфраструктурой и сервисами Google, что этот проект следует рассматривать, скорее, как Базовую Систему Ввода-Вывода (BIOS) для всей материнской инфраструктуры Google. Поэтому, например, разрабатывать приложения с помощью SDK можно, а вот прикрутить на собственный сервер не получится.
Просто перечислю эту основную базовую функциональность, которую предлагает Google App Engine.
В первую очередь, это интерфейс к отказоустойчивому распределенному хранилищу данных BigTable. Эта база данных специально спроектирована для хранения и управления огромным массивом структурированных данных с учётом внутреннего использования в Google. Сама система содержит в себе сотни терабайт информации с тысячи серверов Google. BigTable использует язык запросов GQL, позволяющий делать выборки данных с указанием фильтров, условий, порядка сортировки и ограничений по числу выдаваемых запросов. Хранилище платформы Google App Engine использует нереляционную объектную модель, поэтому не вся функциональность традиционных баз данных, к которой веб-кодеры привыкли, доступна разработчику.
Компания Google славится своими сервисами. Естественно, App Engine содержит необходимую функциональность для работы с этими сервисами. GAE включает в себя API для прозрачной интеграции с экаунтами Google. То есть ваше приложение может организовать вход пользователя под своим гугловским экаунтом и получить необходимые реквизиты посетителя. Также ваши приложения могут отправлять электронную почту через специальный сервис платформы. Приложения могут получить доступ к другим веб-сервисам, используя специальный сервис загрузки URL Fetch.
В системном плане GAE имеет функцию Memcache, которая предназначена для данных, не требующих постоянного хранения на сервере. Это могут быть временные или специально загруженные данные из хранилища для обеспечения к ним очень быстрого доступа.
App Engine содержит, так скажем, некоторое подобие DirectХ для работы с мультимедиа. Эта функциональность позволяет приложениям производить различные действия над изображениями на основе сервиса Google Picasa. Используя его, можно растягивать, обрезать и поворачивать изображения в форматах JPEG и PNG.
Из функциональности, не связанной с Google, можно отметить наличие встроенного в App Engine фреймворка Django - среды с открытым исходным кодом для автоматизации разработки web-приложений. Этот вариант фрейморка имеет некоторые ограничения.
В общем, как видите, смотреть на функциональность GAE вне использования гугловской инфраструктуры практически не имеет смысла.
Шаровара наоборот
Как сейчас функционирует этот проект? На данный момент Google App Engine находится в режиме тестирования, доступны только бесплатные экаунты. Бесплатный экаунт включает в себя 500 мегабайт свободного места под данные и ресурсы сервера, достаточные для обслуживания 5 миллионов просмотров страниц в месяц. Однако в ближайшем будущем появится возможность приобрести дополнительные вычислительные ресурсы по доступной стоимости, которые могут понадобиться.
То есть GAE будет использовать для программистов принцип shareware. Вот как раньше под систему Windows программист писал программу, в которой дополнительная функциональность появлялась за дополнительную мзду от пользователя, так теперь под систему от Google сам программист будет доплачивать ради дополнительной функциональности своего приложения. Такой вот парадокс получился.
Я ожидаю, что Google App Engine даст дополнительный стимул для проектов научной и культурной проблематики. Так как такие проекты являются малобюджетными, с одной стороны, но, с другой, им необходим хороший уровень автоматизации, а также таким ресурсам не помешает интеграция с уже готовыми публичными сервисами.
Что же касается бизнес-проектов, где предполагается много конфиденциальной частной информации, то тут мы имеем большие опасения. Ведь все данные веб-приложения становятся доступны Google и останутся в информационных закромах этой корпорации навеки. Поэтому вопросы, поставленные недавно Ричардом Столлменом о приватности в Интернете, с началом функционирования Google App Engine становятся ещё более актуальными.
Михаил АСТАПЧИК
Горячие темы