Как стать автором
Обновить
0

Google App Engine *

Платформа для размещения приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Работа с большими объёмами данных и хабраэффект

Время на прочтение5 мин
Количество просмотров1.9K
Одной из целей создания bullshitbingo.ru было посмотреть как ведёт себя google application engine (GAE) в более-менее реальных условиях. Особенно меня интересовала возможность получения собственной статистики, потому что то, что дают GAE и google analitics меня не устраивает по причинам, которые я приведу ниже. На сам пост особой реакции не было, но на главную он вышел и за день сайт получил примерно 15 тысяч загрузок, чего было вполне достаточно. Пик нагрузки составил 3-4 запроса в секунду, в итоге отведённый GAE лимит бесплатных ресурсов превышен не был.

Дальше описание особенностей работы со статистикой в GAE и во второй части графики про полученную нагрузку: собственные и те, которые формирует google. Постарался написать так, чтобы было понятно и тем, кто с GAE вообще не сталкивался.
Читать дальше →
Всего голосов 57: ↑51 и ↓6+45
Комментарии49

Вышли Java/Python SDKs 1.3.0

Время на прочтение1 мин
Количество просмотров682


Поддержка загрузки больших файлов (>1 мегабайта) — на данный момент это экспериментальная фича, и включено ограничение до 50МБ на файл. Загрузка происходит только через веб-форму (file upload), и никак иначе. Однако я думаю, что в ближайшем будущем будет и поддержка прямой закачки (как в Youtube API, где совсем недавно сделали прямые закачки).
Подробнее: java, python.

Еще изменения
Всего голосов 33: ↑32 и ↓1+31
Комментарии9

App Engine SDK 1.2.8 плюс новая консоль администратора

Время на прочтение1 мин
Количество просмотров521
image
И так случилось то что давно ждали… И странно что ещё никто не написал, релиз то был 3 декабря.

Расширенная консоль администратора — новые инструменты для управления задачами и очередей созданные с Task Queue API, и более понятный index processing(а то блин ждёшь часами(днями)).

Улучшена совместимость Java — добавлена поддержка для новых операторов фильтров и наследования JPA и JDO, а также поддержка JAXB.

Новая поддержка приложений pre-compilation для сокращения продолжительности загрузки.(To enable pre-compilation on your application, add this flag to your appengine-web.xml:
<precompilation-enabled>true</precompilation-enabled>)

Low-level Memcache API now supports incrementAll()

HTTPResponse object now has getFinalUrl() method for 302 redirects.

Java Dev Appserver now automatically executes tasks. If you prefer the old behavior where tasks do not automatically execute you can use the --jvm_flag=-Dtask_queue.disable_auto_task_execution flag when starting the server.

Additional file extensions permitted when sending mail.

И куча фиксов…

ReleaseNotes

Downloads
Всего голосов 7: ↑6 и ↓1+5
Комментарии5

Google App Engine

Время на прочтение1 мин
Количество просмотров2.2K
Вчера я написал небольшое приложение на Django для Google App Engine, но выложить не смог, т.к. на мой номер не приходили SMS с auth. code. Я конечно огорчился, написал в поддержку Google, а сам стал думать что может это и к лучшему, ведь на нормальном хостинге и возможностей больше.

Но на следующий день мне пришло такое письмо:

Hello,

You're receiving this email because you indicated you'd had some problems verifying your Google App Engine account using SMS. We just wanted to let you know we've enabled your account--you should be able to create applications now!

To start creating applications with Google App Engine, simply follow this link:

appengine.google.com

Thanks!
The Google App Engine Team


По моему это образец правильного саппорта. Да, есть странное требование авторизации по SMS, но если у клиента с этим проблема, проблема будет решена.

За сутки, прошедшие со времени моего обращение в поддержку, я свыкся с мыслью о том, что мне надо искать нормального хостера и перенес весь код на нормальное Django. Но это другая история и мое отношение к Google как к компании стало только лучше.
Всего голосов 41: ↑25 и ↓16+9
Комментарии10

Истории

Вышли Java/Python SDKs 1.2.8 prerelease

Время на прочтение3 мин
Количество просмотров558
Поскольку это пререлиз, нововведений мало (Cursors, JAXB), больше исправлений, к тому же списки изменений лежат только в архивах, поэтому приведу их полностью:

далее changelogs и пару выводов
Всего голосов 15: ↑8 и ↓7+1
Комментарии3

Google App Engine и naked domains

Время на прочтение1 мин
Количество просмотров2.2K
Оказывается, приложение для Google App Engine нельзя подключить к корню домена, можно только к поддомену вроде www. Раньше было можно, но потом зачем-то это прикрыли. Это многим не нравится, но имеющимися средствами ничего не сделать. В поддержке предлагают заказывать веб-форвардинг у регистратора, но это обычно стоит денег, а бесплатный форвардинг на домашнем ADSL канале лишает использование GAE с его high availability всякого смысла.

Есть решение не хуже, которое я давно использовал для каких-то других целей: регистрируем блог в Tumblr, прикрепляем его к нужному домену (у них никаких ограничений нет), идём в настройку внешнего вида, в редактирование шаблона, удаляем всё лишнее1 и делаем перенаправление средствами HTML. Бесплатно и достаточно надёжно (уж лучше, чем домашняя ADSL линия). Чтобы тумблеряне не обиделись на такое, можно им комментарий с извинениями в коде оставить.

Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии17

App Engine SDK 1.2.7 — Bugfix Release для Python

Время на прочтение1 мин
Количество просмотров613
В свете двух проблем в релизе Python SDK 1.2.6, представлена версия 1.2.7. Это всего лишь bugfix-релиз с минимальными изменениями (без добавления нового функционала), всем пользователям Google App для Python рекомендуется обновить SDK.

Этими двумя проблемами были:
-В релизе 1.2.6 был добавлен ключевой аргумент в конструктор класса модели, нарушавший работу подклассов, которые запрашивали частные переменные конструктора с позиционными (не именованными) величинами. Исправление было внесено для восстановления изначального способа упорядочивания и установления нового ключевого аргумента только в качестве именованного.
-В релизе 1.2.6 было нарушено взаимодействие между remote_api и локальным сервером разработчика.

Собственно, обе проблемы исправлены в релизе 1.2.7.

Версия Google App для Java никаких изменений не претерпела.

Источник — Google Developer Blog
Всего голосов 6: ↑6 и ↓0+6
Комментарии10

Вышли Java/Python SDKs 1.2.6

Время на прочтение2 мин
Количество просмотров616


Поддержка входящей почты — на данный момент поддерживаются лишь почтовые адреса вида: whatever@yourappid.appspotmail.com. Возможно через 1-2 релиза появится поддержка собственных доменов, как и в случае с XMPP; так, по крайней мере, было обещано разработчиками в чате с ними.
Подробнее: java, python.

Возможность временного отключения/удаления приложения — первое полезно, например, в случае шибко сильного ДДОСа, при этом все данные сохраняются, как и оно само, отключаются лишь входящие/исходящие запросы. Если приложение было удалено, повторно использовать AppID будет невозможно. При удалении оно ставится в очередь и удаляется через пару суток, судя из моей попытки. Т.е можно отменить удаление, если что.

Статистика по хранилищу — супер функция, вернее целое API, которое позволяет посмотеть общее количество обьектов, размер хранилища, количество обьектов модели и т.д. и т.п. Причем возможно посмотреть стату в админке с картинками, а можно получить в приложении через запрос к хранилищу.
Подробнее: java, python.

Далее мой анализ неанонсированных фич в коде PythonSDK
Всего голосов 36: ↑33 и ↓3+30
Комментарии23

Интернет магазин на Google App Engine (UPD: 20.01.2010)

Время на прочтение2 мин
Количество просмотров3.9K
Магазин работает уже почти пол года — добро пожаловать :)
http://www.digital-mode.ru

Как это все работает.

Фронт-офис — генерирует страницы с группами и товарами, а также позволяет добавить товар в корзину и оформить заказ.
Хранилище картинок — отдает фотографии товаров в нужном размере. Все остальные картинки статические, загружаются с сервера GAE.
Бэк-офис — административная часть, позволяет редактировать товары и группы, просматривать заказы, загружать фотографии для товаров, а также загружать обновления цен, наличия и новые позиции.

Для генерации почти всех страниц используется Django templates.

В целом ничего сложного :)

Проблемы с которыми пришлось столкнутся при разработке.

На текущий момент есть проблемы с загрузкой/выгрузкой большого количества данных. На данный момент использую CSV для загрузки обновлений (цены, товары, наличие). При большом объеме данных превышается тайм-аут 30 сек на выполнение. Кроме этого в GAE ограничение на 30 запросов на запись (put). Соответственно обновлять больше 30 товаров за один проход не получается. Этот момент можно оптимизировать и обновлять данные не поштучно, а сразу пачками т.к. в GAE запись в хранилище может производится целыми массивами.

Выгрузка данных для Яндекс.Маркета занимает почти 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 хостов).

Это микрохаброэффект:
image
Читать дальше →
Всего голосов 48: ↑39 и ↓9+30
Комментарии62

Вышли Java/Python SDKs 1.2.5

Время на прочтение1 мин
Количество просмотров712
Java SDK перепрыгнула с 1.2.2 до 1.2.5 для «синхонизации» с Python SDK.

Из нововведений:
— Поддержка XMPP для Java/Python
— Task Queue API для Java (в labs, как и в Python SDK)
— Увеличены лимиты для Task Queue API (100.000 в сутки, было 10.000)
— Хранилище теперь поддерживает объекты с key_name, начинающиеся с цифры
— Можно изменять Referer заголовок для URL Fetch запросов
— Хранилище поддерживает многократную запись/удаление одного обьекта в одной транзкции.

Python SDK:
— Появился AppEngineLauncher для Windows
— Bulkloader поддерживает ключи --dump и --restore для Kind (в labs)
— Bulkloader поддерживает ключ --dry_run для тестрования данных перед загрузкой на production сервер
— Новый google.ext.ereporter модуль для собирания и отправки по email отчетов по исключениям приложения
— Новый google.ext.deferred модуль для исполнения ad-hoc задач в Task Queue

Java SDK:
— Поддержка новых типов хранилища (нативных), таких как GeoPt, Email, etc.
— Можно установить connectTimeout для URL Fetch
— JDO и JPA теперь поддерживют удаление обьектов, используя запросы
— В JDO makePersistentAll() и deletePersistentAll() исполняются как batch-операции.

В этот релиз должна была быть включена поддержка Inbound Mail, и даже для локальной админки эта страничка готова (вместе с изменениями в коде SDK), но почему-то видимо в последний момент что-то не срослось, и эта фича думаю будет в следующем релизе (1.2.6), вместе с обещанной Jason_Google поддержкой курсоров в хранилище для преодоления лимита запросов в 1000 записей

Полные списки изменений:
Release Notes: Python
Release Notes: Java
Revision History
Всего голосов 35: ↑33 и ↓2+31
Комментарии16

Вышел Java SDK 1.2.2, GWT 1.7

Время на прочтение1 мин
Количество просмотров910
Полный список изменений доступен здесь.

— Наконец-то появился local dataviewer, на порядок будет удобнее написание приложений.
— Количество статических файлов увеличено до 3000.
— Поддержка unindexed полей в ORM
— Исправлена автогенерация индексов и улучшена поддержка транзакций.
— Множественные мелкие исправления в SDK и ORM.

GWT 1.7 зарелизили почему-то только в google-плагине к эклипсу, на официальном сайте пока что старая версия. Основные изменения касаются поддержки Internet Explorer 8, Firefox 3.5 и Safari 4. Плюс поправленны некоторые high-priority баги. В реале отличия от 1.6.4 небольшие.

UPD: Версию 1.7 выложили на офф.сайте, изменения

По поводу обновления плагина для eclipse (совместимого с 3.5) сказано, что он появится в течении 2-х недель.
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Что ожидается в App Engine

Время на прочтение2 мин
Количество просмотров635
  1. Сервис для работы с большими файлами.
  2. Поддержка работы с входящей почтой
  3. XMPP API.
  4. Поддержка функций отображения (mapping) наборов данных (datasets).
  5. Курсоры для запросов к базе — преодоление лимита в 1000 записей.
  6. Система предупреждений (alerts) об исключительных ситуациях (exceptions) в пользовательских приложения.
  7. Дамп и восстановление системы хранения.
Источник: App Engine Product Roadmap

мои комментарии...
Всего голосов 37: ↑32 и ↓5+27
Комментарии34

10 вещей, которые вы (возможно) не знали про App Engine

Время на прочтение6 мин
Количество просмотров1.7K
Что может быть лучше, чем описание девяти классных фишек App Engine? Разумеется, описание десяти. Участвуя в обсуждениях в группах, мы заметили, что некоторые возможности App Engine часто остаются незамеченными, так что мы выбрали чуть меньше, чем одиннадцать интересных фактов, которые, возможно, просто позволят вам писать программы по другому. Но довольно слов, смотрим первую фишку:
Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии11

Ближайшие события

12 ...
7
Изменить настройки темы

Вклад авторов