Плюсы и минусы Google App Engine

[Обновленный список 21 августа 09]

Помогите мне составить список всех преимуществ и недостатков построения приложения в Google App Engine

Плюсы:

  • Не нужно покупать серверы или серверное пространство (без обслуживания).
  • Помогает решить проблему масштабирования.
  • Свободно до определенного уровня потребляемых ресурсов.

Минусы:

  • Заблокировано в Google App Engine?
  • Разработчики имеют доступ только для чтения к файловой системе в App Engine.
  • App Engine может выполнять только код, вызываемый из HTTP-запроса (за исключением запланированных фоновых задач).
  • Пользователи могут загружать произвольные модули Python, но только если они являются чистыми Python; C и Pyrex не поддерживаются.
  • App Engine ограничивает максимальное количество строк, возвращаемых от объекта, до 1000 строк на вызов Datastore. (Обновление) - App Engine теперь поддерживает курсоры для доступа к более крупным запросам)
  • Приложения Java могут использовать только подмножество (белый класс класса JRE) классов из стандартной версии JRE.
  • Java-приложения не могут создавать новые потоки.

Известные проблемы!: http://code.google.com/p/googleappengine/issues/list

Жесткие ограничения

Приложения для разработчика - 10
Время в заказе - 30 секунд Файлы за приложение - 3000
Размер ответа HTTP - 10 МБ
Размер хранилища данных - 1 МБ
Размер прикладного кода - 150 МБ
Обновление Хранилище Blob теперь позволяет хранить файлы до 50 МБ

Pro или Con?
Инфраструктура App Engine устраняет многие проблемы системного администрирования и разработки приложений для масштабирования до миллионов обращений. Google обрабатывает развертывание кода в кластере, мониторинг, восстановление после сбоя и запуск экземпляров приложения по мере необходимости.

В то время как другие службы позволяют пользователям устанавливать и настраивать почти любое совместимое с * NIX программное обеспечение, App Engine требует от разработчиков использовать Python или Java в качестве языка программирования и ограниченного набора API. Текущие API-интерфейсы позволяют хранить и извлекать данные из не-реляционной базы данных BigTable; выполнение HTTP-запросов; отправка электронной почты; манипулирование изображениями; и кеширование. Большинство существующих веб-приложений не могут работать в App Engine без изменений, поскольку для них требуется реляционная база данных.

Ответ 1

Плюсы:

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

Минусы:

  • Не подходит для интенсивных вычислений ЦП. Они медленнее и дороже.
  • Масштабируемость не имеет большого значения, потому что если приложение работает в масштабе Google, то, вероятно, он зарабатывает достаточно денег для запуска на своих серверах.
  • У них есть множество ограничений, брошенных здесь и там, в результате глубокий анализ данных затруднен. Как вы не можете создать социальный граф, используя GAE.

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

Ответ 3

Плюсы:

  • встроенный ui для унифицированных журналов

  • встроенный веб-интерфейс для очередей задач

  • встроенные индексы в списке первичных объектов.

Минусы:

  • быстрые журналы очень быстрые

  • ОЧЕНЬ дорогой

  • ОЧЕНЬ дорогой

  • ОЧЕНЬ дорогой

  • Un-взломать. Масштабы, потому что вы обязаны кодировать таким образом, который масштабируется.

  • Более длительные циклы разработки. Иногда вы просто хотите что-то взломать и выбросить через 5 часов. С appengine вы должны правильно закодировать его и написать много материала, чтобы убедиться, что он масштабируется. Вы не можете просто сделать "find. | Grep.avi | xargs ffmpeg -compress....":)

  • Вы потеряете часы, пытаясь выполнить самые простые задачи, такие как отправку push-уведомлений в APNS (iPhone). Хотя это прекрасно, если вы только хотите поддержать андроид в будущем.

  • Ужасно делать очистки в базе данных. Это БОЛЬШАЯ боль в заднице, чтобы исправить строки в базе данных, главным образом потому, что ужасно медленно, но также требует много кода для правильной петли в пределах этого ограничения времени.

  • Было больно переносить Lucene для работы над ней "файловой системой".

  • Медленно за то, что вы платите.

  • Даже БОЛЬШЕ дороже, если ваше приложение имеет всплески трафика. Мое приложение имеет эти всплески, если пользователь, у которого есть много последователей, делает действие, и мы должны подталкивать уведомления его последователям. Из-за этого я должен постоянно держать 10 неактивных серверов ($$$$$) для обработки всплесков.

Appengine не так уж плохо из-за того, что у меня есть возможность записать $$$$ вместо того, чтобы беспокоиться о масштабируемости и устранении узких мест, чтобы уменьшить использование сервера. Иногда это того стоит.

Мой совет людям, начинающим новые продукты, - пойти с hetzner.de, где я размещаю свои другие серверы продуктов. Это дешево и чрезвычайно взломано. У меня есть один сервер в hetzner, который обрабатывает в 3 раза больше трафика, чем тот продукт, который у меня есть на appengine. Разница в цене составляет $100 в месяц версии $2700 в месяц!

У меня есть системный администратор, поэтому основная причина в том, что я бы никогда не выбрал appengine из-за своего собственного ROOT-сервера. Не будьте скучающим инженером-программистом, желающим экспериментировать с новыми вещами, а не создавать отличные продукты!

Ответ 4

Pro: Неограниченное масштабируемость для вашего приложения и масштабируется со спросом.

Ответ 5

Con: недоступен в некоторых странах (Аргентина).

Изменить

Доступно во всем мире, но только через Google Groups для App Engine.

Ответ 6

Я считаю, что GAE еще не достигло зрелости с точки зрения предоставления основных функций для серьезного бизнеса, такого как Datastore со сложным первичным ключом, поддержка java.awt. *, это всего лишь несколько, которые я назвал.

Помимо свободного места и создания некоторых сайтов "Хобби", я сильно чувствую, что GAE НЕ является местом, в которое должны смотреть java-парни.

У меня есть приложения, созданные на JSP/Servlets и MySQL, думая о переносе в GAE, но я считаю, что я буду тратить больше "времени на стоимость" на миграцию, чем просто покупать пространство у какого-то java-хостинга, например EATJ и т.д. (Извините, но не маркетинг, просто опыт).

Еще одна важная проблема, связанная с переносом моих существующих данных mySQL в GAE, bulkupload действительно жалкая и не поддерживает клиентов.

Нет поддержки загрузки локальной базы данных Db на сервер.

Как только GAE будет готов с упоминанием выше всех "минусов", я подумаю, что мы можем посмотреть на эту миграцию.

Ответ 7

Оценивая плюсы и минусы, я думаю, что важно прояснить рынок, на который он представляет. Разработчики, которые ищут экономически эффективное решение, помогающее им с крутой частью своей запланированной кривой роста хоккейной клюшки, будут сильно зависеть от уже упомянутых минусов. Однако для владельца малого бизнеса GAE - это послание Бога. Эти люди чаще всего ищут "облако" как средство более эффективного ведения своего бизнеса (т.е. Продают физический продукт и услуги). Для SMB, GAE, профи, которые уже перечислены, могут быть намного более ценными по сравнению с поисковой системой хоккейной клюшки, в то время как весы против уменьшаются на долю показателей разработчиков. Я не вижу, чтобы команда GAE делала что-то, связанное с позиционированием SMB, поэтому я думаю, что такие ответы, как я, просто натягивают мыс Супермена и плюют на ветер. На самом деле GAE должно сейчас полностью управлять пространством SMB. Если нет (у меня нет информации о re: базе пользователей), то это очень печальный сбой.

Ответ 8

Con: Вся ваша база принадлежит нам

... В серьезной заметке:

Con: Вы не контролируете среду, в которой работает ваше приложение. То же самое, что и при аутсорсинге любого компонента. Развлечения для игрушек, а не для бизнеса (пока) IMHO.

Различные вещи, такие как API для Google запатентованных бэкэнд, таких как их система баз данных и другие "блокировки" и фреймворки, которые означают, что ваш код привязан, в некотором свободном смысле, к их системе могут позже возникнуть проблемы с издержками, если вы хотите перейти с GAE. Конечно, вы могли бы отвлечь их.

Мне нравятся GAE, AppJet и другие. Они крутые. Но все имеет свое место. Если вам нужна свобода и способность контролировать свои языковые модули, API, версии синтаксиса /stdlib и многое другое... не отказывайтесь от управления поставщиком услуг.

Отсутствие стандартов для сред и спецификаций для того, что может ожидать ваше приложение, беспокоит меня в облачной арене.

здравый смысл. На самом деле.

Ответ 9

Вы являетесь сильным владельцем линии сотового телефона, и ваша страна + перевозчик должна иметь возможность получать международные SMS-сообщения.

(Я ненавижу сотовые телефоны, а моя мама или коллеги не получат SMS-сообщения)

Ответ 10

Con: Нет. Другие СУБД или базы данных NoSQL невозможны.

Ответ 11

Con: Ограничено Java и Python