Плюсы и минусы 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.
Я бы сказал, что это не предназначено для серьезных предприятий и дорогостоящих в долгосрочной перспективе.
Ответ 2
(Огромный новый) PRO: GAE теперь поддерживает MySQL:
https://developers.google.com/cloud-sql/
Ответ 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