Лента фигни постоянно пополняется разными штуками связанными с #GAE и родственным технологиями.
На мой призыв рассказать о своем проекте откликнулись несколько человек. Один из них согласился ответить на мои вопросы.

(ссылка с картинки ведет на сайт игры)
Gum Wars — Это казуальная стратегия с возможностью играть онлайн с другими игроками. В приложении реализован comet способом polling, т.е. браузер постоянно посылает к серверу запросы на новые события. В качестве сервера используется Google App Engine.
Автор проекта Григорий Темченко, персональный блог Soid.
Какие технологии используются на серверной стороне?
Я использовал Python, и выбор обусловлен, конечно, удобством для меня. Во-первых, у меня уже был некоторый опыт работы с ним. Во-вторых, пользуясь случаем, хочу поругать Java’вские IDE. Очень уж они медленные, а это для меня достаточно важно (недаром я все еще продолжаю использовать vim как редактор кода). А без IDE Java громоздка и страшна. В остальном я использую webapp фреймворк и разные части django, вроде шаблонов, форм, сериализации.
Какие сервисы предоставляемые Google задействованы?
Для отрисовки игры на клиенте я использовал Google Maps API 2-ой версии. Из App Engine сервисов используется memcache, datastore, queues, cron. Кажется, все.
Что можно кратко рассказать о технической реализации?
Профили пользователей и подобные постоянные записи хранятся в Datastore. Самое интересное - это обработка polling, организация потока сообщений в условиях, когда каждый пользователь присылает запрос раз в секунду. Для этого частично использован memcache, частично Datastore (для важных данных). Есть в планах кешировать в памяти App Cache, но от memcache это пока не избавит.
Сколько времени заняла реализация проекта?
В течение трех месяцев я старался выкрадывать время на выходных, праздниках и иногда по вечерам, чтобы довести проект до приемлемого состояния. Хотя основная часть была сделана в Великие русские новогодние праздники, в остальное время оказалось довольно проблематично заставить себя заняться делом, работая в режиме 5/2 и тратя 2 часа в день по дороге на работу.
Были ли какие-то сложности специфические для GAE?
Конечно, любая новая технология вызывает определенные сложности. То, к чему привыкли разработчики на SQL, оказывается неправильным в идеологии GAE, во многих привычных вещах приходиться до смешного бороться за производительность. С одной стороны это сложности, но кому-то это может оказаться “по кайфу”.
Если вы ходите задать мне или автору вопросы, то оставляйте их в комментариях к заметке.
Еще раз ссылка на сайт http://www.gumwars.com
Если у вас есть интересный проект работающий на Google App Engine, то я бы с удовольствием рассказал о нем в своем блоге
# Коментарии 2010/4/23 @ 1:10 pm
Один из самых часто задаваемых вопросов в рассылках это “Как мне настроить хостинг моего сайта на GAE без www (или голом домене/naked domain)”.
Постараюсь полностью ответить на этот вопрос для того чтобы было понимание почему это невозможно.
Для начала придется немного разобраться как работает система доменных имен в интернете.
Когда мы набираем адрес страницы в браузере у нас происходит несколько событий. На первом этапе адрес разбивается на составляющие из которого выделяется доменное имя. И с помощью системной утилиты “ресолвится” в IP адрес, к которому уже потом идет запрос.
DNS это по сути децентрализованная база данных расположенная на множестве серверов. Для сайта с именем seoautomator.mediavirus.ru происходит процедура взаимодействия с DNS серверами. Прежде чем обратиться к самому серверу. Адрес разбивается на составные части, для удобства запишем их в обратном порядке . ru mediavirus seoautomator,
. — точка, это нулевой уровень, DNS клиент обращается к корневому домену который состоит из . (точка), и запрашивает у него список DNS серверов которые отвечают за зону первого уровня. ru — это домен первого уровня за него отвечает регистратор этого домена, когда клиент обращается к нему, то производится поиск в базе данных и выдается список NS серверов. Это те сервера которые мы указывали при регистрации.mediavirus уже наши и на запрос о том где seoautomator отвечают… пока для простоты скажем что отдает IP адрес.Для полноты понимания мира можно прочитать статью о рекурсивном DNS запросе.
Что нам известно о Google с точки зрения их физического расположения? Несколько вещей:
Теперь перейдем к тому как устроен GAE-хостинг. Никто не рассказывает как он работает внутри, но кое-что известно. Во-первых мы знаем, о том, что это облачный сервис, во-вторых о том, что на самом деле физически сайт находится более чем на одной машине, и что многие сервисы обслуживаются через свои собственные каналы. Поэтому часто следующий запрос приходит не на ту же самую машину, правда в тот же датацентр.
Домашнее задание: попробуйте попинговать google.com и www.google.com и сравните разницу времени ответа. Задание со звездочкой посмотреть марштут traceroute.
Когда мы добавляем свой домен, то не можем добавить прямой IP адрес к конкретному серверу, как это происходит у многих других хостингов. Для случаев когда часть ветки DNS базы надо делегировать какому-то другому DNS серверу существует специальный тип записи CNAME. Поэтому мы добавляем следующую запись:
seoautomator.mediavirus.ru. CNAME ghs.google.com.
И вот тут начинается то ради чего был весь этот пост. Почему мы не можем добавить запись CNAME для голого домена?
А теперь то чего вы меньше всего ожидали — глупого ответа без объяснения причин. По стандарту (RFC 1912, пункт 2.4, или более простым языком) запись CNAME для указанного хоста должена (MUST) быть единственной.
Впрочем объяснение есть и очень простое, это просто правило безопасности, можно сравнить CNAME с символической ссылкой в файловой системе. Было бы странно если бы ссылка имела свое собственное представление о владельце файла или его размере, точно так же и тут. Перенаправляем клиента к другому серверу полностью.
Хотя одна из самых популярных заявок #777 посвящена как раз именно этой проблеме думаю не стоит ждать решения, а придумать его самостоятельно.
Наиболее быстрый, но далеко не самый чистый способ это использовать редиректы Tumblr‘а предложенные Urban Monkey.
Для коммерческих проектов конечно же лучше всего купить хостинг за несколько долларов в год и не зависеть от проблем проекта который любезно согласился приютить вас.
# Коментарии 2009/11/23 @ 9:14 pm