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

Leave a reply:

Site Footer

Sliding Sidebar

About Me

About Me

Для кого этот блог?

Для тех кого интересуют современные интернет технологи, IT бизнес, стартапы, менеджмент, контроль качества, личная эффективность, мотивация. Здесь я буду писать о том, что в первую очередь будет интересно мне, о проблемах и решениях. О том что пригодилось мне, и возможно будет интересно Вам.

Что заставило меня создать его?

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

Немного о себе.

Мой первый серьезный опыт в IT это работа над desktop приложениями в компании «Эксперт-Софт». У истоков её стояли несколько амбициозных и талантливых молодых людей, с огнем в глазах и желанием работать «как майкрософт». То чем мы там занимались вполне могли бы сегодня назвать «стартапом». Рук было откровенно мало, поэтому приходилось заниматься всем: кодированием на Delphi, написанием скриптов на VBA, дизайном, вёрсткой и поддержкой вебсайта, работой над рекламной полиграфией, проектированием интерфейсов и БД. Работы было много, но запал был велик, команда очень разношерстная, гармонично дополняя друг-друга в решении нетривиальных задач. Благодаря тому что пришлось попробовать многое, постепенно вырисовалось понимание того чем хочется заниматься, и как. Софтверным программированием я был сыт по горло. Массы проблем десктопного софта в вебе просто не было, по определению. Зато был четкий фокус на дизайне, юзабилити, скорости. Поэтому когда пришла пора уходить из «Эксперт-Софт», я без всякого сожаления стал искать работу как разработчик для web. Поскольку городишко у нас не очень большой, выбор был практически предопределен. Так я стал работать в «Оникс-Системз», где и продолжаю работать поныне. За время работы в компании я как разработчик принимал участие в работе над несколькими десятками проектов. Несколько десятков проектов было сделано мною как фрилансером. Самым большим проектом в котором я сыграл роль менеджера, считаю свою семью. Также довольно большой проект мы сейчас поднимаем с командой разработчиков (на данный момент команда состоит из четырех php разработчиков, одного flex кодера и тестировщика). Отсюда, большой интерес к современным практикам и методологиям, разным подходам в управлении командой, повышению эффективности и качества работы. По мере сил, вдохновения и свободного времени, я буду писать об этом.

Если у Вас возникли какие-то вопросы ко мне лично, буду рад если Вы свяжетесь со мной:

e-mail:
skype: denis.sheremetov
Старый сайт, с музычкой и флешом

Прочая онлайновая деятельность: