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:

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Site Footer

Sliding Sidebar

About Me

About Me

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

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

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

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

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

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

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

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

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