Магазин работает уже почти пол года — добро пожаловать :)
http://www.digital-mode.ru
Фронт-офис — генерирует страницы с группами и товарами, а также позволяет добавить товар в корзину и оформить заказ.
Хранилище картинок — отдает фотографии товаров в нужном размере. Все остальные картинки статические, загружаются с сервера GAE.
Бэк-офис — административная часть, позволяет редактировать товары и группы, просматривать заказы, загружать фотографии для товаров, а также загружать обновления цен, наличия и новые позиции.
Для генерации почти всех страниц используется Django templates.
В целом ничего сложного :)
На текущий момент есть проблемы с загрузкой/выгрузкой большого количества данных. На данный момент использую CSV для загрузки обновлений (цены, товары, наличие). При большом объеме данных превышается тайм-аут 30 сек на выполнение. Кроме этого в GAE ограничение на 30 запросов на запись (put). Соответственно обновлять больше 30 товаров за один проход не получается. Этот момент можно оптимизировать и обновлять данные не поштучно, а сразу пачками т.к. в GAE запись в хранилище может производится целыми массивами.
Выгрузка данных для Яндекс.Маркета занимает почти 10 секунд (200 товаров), 90% времени это генерация HTML.
Также не решена еще проблема с фильтрами и сортировками товаров по характеристикам. Т.к. БД не реляционная, привязать характеристики к товарам тяжело. Как вариант делать для каждого типа товара вручную в коде свой фиксированный набор характеристик, это возможно пока типов товаров не больше десятка.
Отсутствие необходимости покупки/настройки/поддержки собственного сервера.
Автоматическое масштабирование.
Одинаковое время доступа к приложению при разных нагрузках.
Удобство разработки.
Скорость работы магазина не зависит от количества посетителей.
На данный момент при 500-600 хитов в сутки используется 0,3-0,4 часа процессорного времени из 6,5 бесплатного.
После публикации в комментариях к топику: "Стоит ли вам использовать Google AppEngine?" ссылки на магазин было использовано ресурсов:
— 0,44 часов CPU из 6,5
— 28000 запросов из 1,3 млн
— 210 Мб из 1 Гб исходящего траффика
— 5,59 Гб из 116 Гб получено из API
— 0,22 часа из 62,11 использовано хранилищем
Всего за 12 часов — 700 хитов (180 хостов).
Это микрохаброэффект:
UPDATE 12.30:
Картинки нажимательные :)
Потребление ресурсов указано с 11.00 (ежедневное обнуление статистики).
За последние 9 часов было 4 ошибки с открытием главной страницы:
Timeout — 2шт.
An error occurred for the API request datastore_v3.RunQuery() — 2 шт.
А также около 20 ошибок с загрузкой картинок. Все были прерваны по таймауту из-за ожидания ответа от хранилища.
На всякий случай с утра включил биллинг, но я подозреваю что лимит бесплатных квот за сегодня скорее всего превышен не будет.
Все скриншоты в этом топике отдаются с другого моего GAE приложения. Биллинг на нем выключен.
Первый скриншот в топике по прежнему на главной странице хабра. Ошибок пока замечено не было.
10 тыс. показов в час. — кеширование не используется, картинка отдается напрямую из хранилища.
UPD: 20.01.2010
Можете посмотреть видео с GDD 2009 на котором я рассказываю о нашем интернет магазине на App Engine.
GDD Moscow 2009. Интернет магазин на платформе Google App Engine
http://www.digital-mode.ru
Как это все работает.
Фронт-офис — генерирует страницы с группами и товарами, а также позволяет добавить товар в корзину и оформить заказ.
Хранилище картинок — отдает фотографии товаров в нужном размере. Все остальные картинки статические, загружаются с сервера GAE.
Бэк-офис — административная часть, позволяет редактировать товары и группы, просматривать заказы, загружать фотографии для товаров, а также загружать обновления цен, наличия и новые позиции.
Для генерации почти всех страниц используется Django templates.
В целом ничего сложного :)
Проблемы с которыми пришлось столкнутся при разработке.
На текущий момент есть проблемы с загрузкой/выгрузкой большого количества данных. На данный момент использую CSV для загрузки обновлений (цены, товары, наличие). При большом объеме данных превышается тайм-аут 30 сек на выполнение.
Выгрузка данных для Яндекс.Маркета занимает почти 10 секунд (200 товаров), 90% времени это генерация HTML.
Также не решена еще проблема с фильтрами и сортировками товаров по характеристикам. Т.к. БД не реляционная, привязать характеристики к товарам тяжело. Как вариант делать для каждого типа товара вручную в коде свой фиксированный набор характеристик, это возможно пока типов товаров не больше десятка.
Преимущества GAE
Отсутствие необходимости покупки/настройки/поддержки собственного сервера.
Автоматическое масштабирование.
Одинаковое время доступа к приложению при разных нагрузках.
Удобство разработки.
Итого
Скорость работы магазина не зависит от количества посетителей.
На данный момент при 500-600 хитов в сутки используется 0,3-0,4 часа процессорного времени из 6,5 бесплатного.
После публикации в комментариях к топику: "Стоит ли вам использовать Google AppEngine?" ссылки на магазин было использовано ресурсов:
— 0,44 часов CPU из 6,5
— 28000 запросов из 1,3 млн
— 210 Мб из 1 Гб исходящего траффика
— 5,59 Гб из 116 Гб получено из API
— 0,22 часа из 62,11 использовано хранилищем
Всего за 12 часов — 700 хитов (180 хостов).
Это микрохаброэффект:
UPDATE 12.30:
Картинки нажимательные :)
Статистика за сегодняшнее утро
Потребление ресурсов указано с 11.00 (ежедневное обнуление статистики).
За последние 9 часов было 4 ошибки с открытием главной страницы:
Timeout — 2шт.
An error occurred for the API request datastore_v3.RunQuery() — 2 шт.
А также около 20 ошибок с загрузкой картинок. Все были прерваны по таймауту из-за ожидания ответа от хранилища.
На всякий случай с утра включил биллинг, но я подозреваю что лимит бесплатных квот за сегодня скорее всего превышен не будет.
Секретный эксперимент №2
Все скриншоты в этом топике отдаются с другого моего GAE приложения. Биллинг на нем выключен.
Первый скриншот в топике по прежнему на главной странице хабра. Ошибок пока замечено не было.
10 тыс. показов в час. — кеширование не используется, картинка отдается напрямую из хранилища.
UPD: 20.01.2010
Презентация магазина на GDD2009
Можете посмотреть видео с GDD 2009 на котором я рассказываю о нашем интернет магазине на App Engine.
GDD Moscow 2009. Интернет магазин на платформе Google App Engine