• Home
  • RSS
  • Contacts


IT консалтинг

обращайтесь для создания или развития проекта - станем консультантом и независимым аналитиком, предоставим возможность професионально проанализировать риски, спроектировать и сопровождать решение

more

Разработка

воплощаем смелые мысли - разработка изысканных web-решений и комплексных баз данных. Не стереотипный подход к реализации, создание уникальных систем на базе языков Java/Python, баз данных PostgreSQL/MySQL платформ Linux/Unix.

more

hide

Продукты

GWT-PF product

фреймворк для создания веб-фронтэндов баз данных

Pleso netNews product

решение для построения интернет-изданий

Проекты

Google App Engine: достоинства и недостатки

Опубликовано Андрей Скалюк - 17.04.2008, 00:08
Тэги:      google python

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

 

Профессиональный разработчик подбирает инструмент под задачу и решает её средствами, которые есть в наличии.

Это касается как выбора языка Python, так и платформы в целом. Я лично являюсь Python и Django разработчиком уже больше года и могу судить об их преимуществах и недостатках. Python и Django показали себя в качестве отличных средств для создания web-приложений. Использовать их или нет - дело каждого. По моему мнению, Google подобрал и предоставил достаточно средств для полноценной web-разработки. Почему выбран именно Python, я думаю, понятно всем - корпорация имеет широкий опыт работы с данным языком. А также не следует забывать, что Guido van Rossum - член команды разработчиков.

 

Встретилась публикация, в которой решение от Google сравнивают с хостингом на "ваш любимый язык + MySQL". Сомневаюсь, что Google вдруг решил переквалифицироваться в хостинговую компанию среднего пошиба. Google App Engine - это не free-хостинг для вашего любимого блога, это масштабируемая среда для высоко-нагруженных приложений, которые работают с большими наборами данных. Именно в такой ситуации она будет вам полезна, хотя вы и можете её использовать, как угодно. Нужно понимать, как позиционируется продукт и как правильно необходимо его использовать. Приведу в пример вопрос о произвольных запросах. Для каждого вашего запроса среда требует создания индекса. Делает она это абсолютно верно (и часто автоматически). Хотя это и ограничивает возможности "поиграть" с данными, но реальное приложение всегда работает с лимитированным перечнем запросов к базе. Оно всегда производит одни и те же запросы, только с разными параметрами. Оптимизация под именно ваши запросы - это правильное решение и это очень хорошо, что сама среда подталкивает вас к этому. Таким образом, данная технология требует понимания своего предназначения.

 

Перечень действительных ограничений:

  • объем статичных файлов лимитирован 1 MB. App Engine не поддерживает частичные запросы контента.
  • невозможно использовать comet-технологии (server push).
  • приложение не идентифицируется уникально по ip-адресу. Затруднительно для взаимодействия с внешними сервисами. Приложение может страдать от плохих соседей на этом же сервисе.
  • нет поддержки SSL. Отсутствие уникального IP-адреса затрудняет авторизацию, но порт 443 открыт для запросов. Вы можете полагаться на сервисы Google для доверяемых логинов.

Перечень решаемых ограничений:

  • нет возможности использовать cron jobs. Решается выносом на вне и вызовом специальных URL-ов вашего приложения.
  • нет обработки изображений. Не работает Python Imaging Library, поскольку часть библиотеки написано на C. Пишите собственный процессинг изображений на чистом python.
  • завязка на Google Accounts. Каждый раз при логине в ваше приложение, пользователи будут знать о вашем выборе Google App Engine. Не вижу в этом особых проблем. Позитивный момент - лучшее рекламное позиционирование в AdSence.
  • медленное сканирование таблиц. BigTable - это не MySQL. Читаем документацию - меняем мышление. Если ваши запросы выполняются медленно, значит, скорее всего, вы используете инструмент не верно. Посмотрите примеры, продумайте архитектуру еще раз.
  • нужно постоянное взаимодействие с хостом. Есть только один способ запустить код со всеми особенностями среды - это загрузить его на сервер. Это создаёт неудобства, поскольку вы не можете "поднять" проект локально.

 

Интернет-источники:

http://community.livejournal.com/evan_tech/248465.html
http://www.niallkennedy.com/blog/2008/04/google-app-engine.html
http://www.tomstechblog.com/post/2008/04/Google-App-Engine-Free-and-still-barely-worth-it.aspx

 

комментарии:0

Добавить комментарий »