Google App Engine — знакомство, плюсы и минусы, полезные советы

Google App Engine это платформа предлагаемая компанией Google для веб-разработчиков. Не будет преувеличением, сказать, что проблема роста и разумной экономии на масштабируемости и производительности стоит перед разработчиками с самого начала работы над проектом. С одной стороны, огромное количество стартапов, разработчики которых даже приблизительно не могут представить себе характер и объем нагрузок на сайт, а желая иметь некоторый запас производительности оптимизация, зачастую, начинается с первых строк кода. С другой стороны, надо сказать что приложения, которые должны легко масштабироваться имеют весьма сложную архитектуру внутри, и написание такого кода, тоже весьма специфично. Отдельо нужно упомянуть то, что поддержание такой, горизонтально масштабарованной, инфраструктуры в рабочем состоянии, довольно хлопотное и дорогое мероприятие. В индустрии создания высоконагруженных приложений, безусловным флагманом, является Google. Свой опыт они предлагают разработчикам в виде Google App Engine.

Для тех, кто совсем ничего не слышал про GAE, рекомендую ознакомится со статьями про быстрый старт с GAE, модель и контроллер.

Поговорим немного о достоинствах платформы:

  • в первую очередь, это, конечно масштабируемость «из коробки», о которой абсолютно не надо заботится. Гарантированный uptime 99.9%, никаких бекапов, репликаций и прочих мук в высоконагруженых приложениях.
  • все разработчики, как один, восхищаются тем как хорошо документирован GAE, и тем как просто сделать свой первых hello world
  • прозрачная интеграция с аккаунтом Google и многочисленными сервисами
  • поддержка Java и Python «из коробки» и огромное количество скриптовых языком «из под Java»
  • удобный сервер для разработки и простая утилита деплоя
  • огромное количество open source проектов являются хорошим подспорьем в разработке на GAE

Как обычно в бочке меда, окажется ложка дегтя.

  • ограничеие на размер файла: 1 мегабайт
  • еще одно интересное ограничение, — на запрос, не более миллиона циклов CPU на запрос. У вас нет никакких инсрументов, позволяющих оценить, профилировать эти самые циклы, и на локальном сервере этого ограничения нет. Таким образом, приготовьтесь к тому что ваше сложное приложение начнет разваливаться после деплоя, вероятно, случайным образом.
  • очень медленное локальное хранилище даных, хотя на сервере, после деплоя работа с хранилищем тоже неоднозначна, плюс на работу с хранилищем также налагаются ограничения и квоты
  • загрузчик (bulk uploader) довольно медленный и часто генерирует 500ю ошибку.
  • надо ли говорить — но у вас нет рутовых прав
  • подробнее про ограничения можно почитать здесь

Исходя из сего вышеперечисленного, я думаю идеальное применение для GAE это маленькие стартапы, неспособные спланировать трафик на свои приложения и построить дорогую инфраструктуру, способную выдержать «наплыв», в случае успеха. Это могут быть всевозможные виджеты, приложения для социальных сетей, игры, с нересурсоемкой серверной логикой.

Некоторые выводы, о том как использовать GAE более эффективно:

  • переносите логику и функционал на клиент, — всякого рода логика на JS, Flash, Flex, Silverlight, etc
  • используйте memcache для кеширования запросов к хранилищу
  • используйте sharded counters для статистики
  • отсылка писем забирает много CPU, лучше использовать tasks или cron
  • используйте несколько GAE приложений, для разных нужд, вместо одного большого. Это имеет смысл для увеличения квот и разделения статистики.
  • используйте пакетное сохранение и извлечение данных из хранилища

Comments

comments


Bookmark and Share