Отзыв об использовании Google App Engine? [закрыто]


125

Хотите сделать очень маленький, быстрый и грязный побочный проект. Мне нравится тот факт, что Google App Engine работает на Python со встроенным Django - это дает мне повод попробовать эту платформу ... но мой вопрос таков:

Кто-нибудь использовал движок приложения для чего-нибудь, кроме игрушечной? Я вижу там несколько хороших примеров приложений, поэтому я полагаю, что этого достаточно для реальной сделки, но хотел получить некоторые отзывы.

Любые другие заметки об успехе / неудаче были бы хороши


8
должно быть вики сообщества
SilentGhost

Ответы:


63

Я пробовал движок приложения для моего небольшого приложения для наблюдения за землетрясениями http://quakewatch.appspot.com/

Моей целью было увидеть возможности движка приложения, поэтому вот основные моменты:

  1. он не поставляется по умолчанию с Django, у него есть собственная веб-структура, которая является pythonic, имеет диспетчер URL-адресов, такой как Django, и использует шаблоны Django. Итак, если у вас есть Django exp. вы найдете это простым в использовании
  2. Вы не можете выполнять какой-либо длительный процесс на сервере, то, что вы делаете, - это ответ на запрос, который должен быть быстрым, иначе appengine убьет его.Так что, если вашему приложению требуется много внутренней обработки, appengine - не лучший способ, иначе вам придется выполнять обработку на собственном сервере
  3. В моем приложении quakewatch есть функция подписки, это означает, что я должен был отправлять по электронной почте последние землетрясения, когда они случались, но я не могу запустить фоновый процесс в движке приложения для мониторинга новых землетрясений. Решение здесь - использовать стороннюю службу, такую ​​как pingablity.com, которая может подключитесь к одной из своих страниц, и на ней будет запущена рассылка подписки, но и здесь вам нужно будет позаботиться о том, чтобы вы не проводили здесь много времени или не разбивали задачу на несколько частей
  4. Он предоставляет возможности моделирования, подобные Django, но бэкэнд совершенно другой, но для нового проекта это не имеет значения.

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

Изменить: теперь очереди задач можно использовать для выполнения пакетной обработки или запланированных задач.

Изменить: после работы / создания реального приложения в GAE в течение года, теперь я считаю, что если вы не создаете приложение, которое необходимо масштабировать до миллиона и миллионов пользователей, не используйте GAE. Поддержание и выполнение тривиальных задач в GAE является головной болью из-за распределенного характера, чтобы избежать ошибок превышения крайнего срока, подсчета объектов или выполнения сложных запросов требуется сложный код, поэтому небольшое сложное приложение должно придерживаться LAMP.

Изменить: модели должны быть специально разработаны с учетом всех транзакций, которые вы хотите иметь в будущем, потому что объекты только в одной группе объектов могут использоваться в транзакции, и это делает процесс обновления двух разных групп кошмаром, например, перевод денег от пользователя1 к пользователю2 в транзакции невозможно, если они не находятся в одной группе объектов, но создание их одной группы объектов может быть не лучшим вариантом для целей частого обновления .... прочтите это http://blog.notdot.net/2009/9/Distributed-Transactions- на-App-Engine


6
Теперь пакетный процесс можно запускать на GAE
Anurag Uniyal

2
Ознакомьтесь с новым API очереди задач Python также в документации App-Engine.
Джейсон Рикард,

11
Большая часть этой информации устарела - Django 0,96 теперь встроена в GAE по состоянию на 17 июля 2009 года
ине

3
Djanjo 1.0.x теперь также включен в GAE. Вы можете выбрать нужную вам версию Django.
Лоран,

5
Еще одно обновление, Django 1.1 теперь доступно с GAE, а также с предыдущими версиями.
SingleNegationElimination

36

Я использую GAE для размещения нескольких приложений с высоким трафиком. Вроде порядка 50-100 запросов / сек. Это здорово, я не могу этого рекомендовать.

Мой предыдущий опыт веб-разработки был с Ruby (Rails / Merb). Изучить Python было легко. Я не возился с Django, Pylons или любым другим фреймворком, просто начал с примеров GAE и построил то, что мне нужно, из базовых библиотек webapp, которые предоставляются.

Если вы привыкли к гибкости SQL, к хранилищу данных может потребоваться некоторое время. Ничего особенного! Самая большая корректировка - это отход от JOIN. Вы должны отказаться от идеи, что нормализация имеет решающее значение.

Бен


23

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

По большей части мой опыт работы с этим кодом связан с созданием простого приложения для отслеживания времени / задач. Механизм шаблонов был прост и в то же время делал многостраничное приложение очень доступным. Api входа в систему / осведомленности пользователя также полезен. Мне удалось создать парадигму публичной / частной страницы без особых проблем. (пользователь должен войти в систему, чтобы увидеть частные страницы. Анонимному пользователю была показана только общедоступная страница.)

Я как раз входил в часть проекта, посвященную хранилищу данных, когда меня отстранили для «настоящей работы».

Мне удалось добиться многого (это еще не сделано) за очень короткое время. Поскольку я никогда раньше не использовал Python, это было особенно приятно (как потому, что это был новый для меня язык, так и потому, что разработка шла быстро, несмотря на новый язык). Я столкнулся с очень немногим, что наводило меня на мысль, что я не смогу выполнить свою задачу. Вместо этого у меня довольно положительное впечатление о функциональности и возможностях.

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


Практически идентично моей ситуации - не считая «настоящей работы», но все же кое-что, что мне нужно сделать и в конце концов иметь функциональные возможности.
agartzke

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

12

Идея «App Engine, работающего с Django» немного вводит в заблуждение. App Engine заменяет весь слой модели Django, поэтому будьте готовы потратить некоторое время на освоение хранилища данных App Engine, которое требует другого способа моделирования и осмысления данных.


Хороший момент - кажется, что он по умолчанию берет на себя шаблоны Django, но не обязательно все остальное.
agartzke

7

Я использовал GAE для создания http://www.muspy.com

Это немного больше, чем игрушечный проект, но и не слишком сложный. Я все еще полагаюсь на то, что Google решит несколько вопросов, но в целом разработка веб-сайта была приятным занятием.

Если вы не хотите заниматься проблемами хостинга, администрирования серверов и т. Д., Я определенно могу порекомендовать это. Особенно, если вы уже знаете Python и Django.


7

Я думаю, что на данный момент App Engine довольно хорош для небольших проектов. Можно многое сказать, чтобы не беспокоиться о хостинге. API также подталкивает вас к созданию масштабируемых приложений, что является хорошей практикой.

  • app-engine-patch - это хороший слой между Django и App Engine, позволяющий использовать приложение аутентификации и многое другое.
  • Google пообещал SLA и модель ценообразования к концу 2008 года.
  • Запросы должны выполняться за 10 секунд, подзапросы к веб-службам - за 5 секунд. Это вынуждает вас разрабатывать быстрое и легкое приложение, переложив серьезную обработку на другие платформы (например, размещенную службу или экземпляр EC2).
  • Скоро появятся и другие языки! Google не скажет, что именно :-). Теперь мои деньги на Java.

с февраля 2009 года многие из вышеперечисленных ограничений были сняты.
Husayt

3
Если кто-то может отредактировать этот ответ, было бы неплохо отметить, что Java действительно является следующим доступным языком.
Джейсон Смит,

1
@jhs Ваш комментарий прекрасно это делает!
днем

И язык Go теперь тоже поддерживается!
davewasthere

6

На этот вопрос дан полный ответ. И это хорошо. Но, пожалуй, стоит упомянуть одну вещь. В движке приложений google есть плагин для eclipse ide, с которым приятно работать.

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

Для развертывания на веб-сайте движка приложений Google все, что мне нужно сделать, это нажать одну маленькую кнопку - с логотипом самолета - супер.


4

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


sql переехала с Google App Engine на частный сервер.
systempuntoout

4

Я использовал GAE для создания простого приложения, которое принимает некоторые параметры, форматы и отправляет электронную почту. Это было очень просто и быстро. Я также провел несколько тестов производительности хранилища данных GAE и служб кеширования памяти ( http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). Это не так быстро. Я считаю, что GAE - это серьезная платформа, которая применяет определенную методологию. Я думаю, что она превратится в действительно масштабируемую платформу, где плохие методы просто недопустимы.


4

Я использовал GAE для своего сайта с флеш-играми Bearded Games . GAE - отличная платформа. Я использовал шаблоны Django, которые намного проще, чем старые времена PHP. Он поставляется с отличной админ-панелью и дает вам действительно хорошие журналы. Хранилище данных отличается от базы данных, такой как MySQL, но с ним намного проще работать. Создать сайт было легко и просто, и у них есть много полезных советов по сайту.


3

Я использовал GAE и Django для создания приложения Facebook. В качестве отправной точки я использовал http://code.google.com/p/app-engine-patch, поскольку он поддерживает Django 1.1. Я не пробовал использовать какие-либо команды manage.py, потому что предполагал, что они не будут работать, но я даже не изучал их. В приложении было три модели, а также использовался pyfacebook, но это была степень сложности. Я в процессе создания гораздо более сложного приложения, о котором я начинаю писать в блоге на http://brianyamabe.com .


Я начал использовать manage.py для запуска сервера, а также для запуска некоторых модульных тестов. Запуск сервера работает нормально, но поскольку мое приложение работает как приложение Facebook, это не так уж и полезно (мне нужен размещенный сервер, на который ссылается Facebook). Модульное тестирование также работало, и оно работало даже с приборами. Однако мне не удалось заставить работать приборы, ссылающиеся на другие модели. Я до сих пор не понял, проблема ли это в моем приспособлении или проблема с патчем app-engine.
byamabe
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.