Оригинал http://groups.google.com/group/google-appengine/msg/739169f799d8e69a
Обновленная версия
Определения
Экземпляр приложения (Instance) - небольшое виртуальное окружение для запуска вашего кода с зарезервированной памятью и долей процессора.
Внешний экземпляр (Frontend instance) - экземпляр приложения, выполняющий ваш код и динамически масштабирующийся в зависимости от поступающих запросов, но ограниченный по времени обработки запроса.
Фоновый экземпляр (Backend instance) - экземпляр приложения, выполняющий ваш код с ограниченной масштабируемостью, основанной на ваших настройках, теоретически запускается и останавливается по вашей команде.
Планировщик (Scheduler) - Часть инфраструктуры App Engine, которая определяет какой экземпляр должен обрабатывать запрос и когда нужно создать новый экземпляр.
Инфраструктура
Вопрос: Что такое экземпляр приложения (Instance)?
Ответ: Когда App Engine запускает ваш код - создается маленькая виртуальная среда для выполнения кода с зарезервированной долей процессора и памяти. Например если вы запускаете Java-приложение, то для него стартует новая JVM и в нее загружается ваш код.
Вопрос: Экземпляр приложения в App Engine это аналогия виртуальной машины?
Ответ: Да и нет - то и другое имеет выделенные обемы памяти и мощность процессора, но в приложении GAE нет накладных расходов на работу операционной системы или других приложений, т.е. для реального использования остается больший процент процессора и памяти. Они так же работают через высокоуровневые интерфейсы, а не через прослойку кода для виртуальных устройств - это позволяет делать сервисы более управляемыми.
Вопрос: Как GAE определяет что должен запуститься новый внешний экземпляр приложения (Frontend instance)?
Ответ: Для каждого запроса планировщик есть ли свободный экземпляр для обработки запроса, должен ли запрос подождать или нужно создать новый экземпляр приложения. Он принимает во внимание количество уже запущенных экземпляров, их пропускную способность и количество запросов в очереди ожидания. Планировщик расчитывает предполагаемое время ожидания для обработки запроса и если оно больше 1 секунды - запускает новый экземпляр приложения. Если планировщик понимает что какой-то из экземпляров больше не нужен - он выключается.
Вопрос: Я должен будут платить за все приложения, которые сейчас показываются в панели администрирования?
Ответ: Нет, мы работает над изменением планировщика для оптимизации использования созданных экземпляров приложения, их число должно сократиться. Если вы используете Java и ваше приложение потоко-безопасно - один экземпляр приложения может обслуживать несколько запросов одновременно. То, что вы видите сейчас можно рассматривать как верхнюю границу количества экземпляров.
Вопрос: Как я могу контролировать количество запущенных экземпляров?
Ответ: Вместе с новым планировщиком появятся настройки того сколько много экземпляров приложения будет запускаться для обработки запросов. Больше информации об этих параметрах и их влиянии на планировщик будет доступно в течение нескольких недель.
Вопрос: Как я могу понять - сколько запросов может обработать один экземпляр приложения?
Ответ: Самый значимый фактор - задержка приложения в обработке запросов. Если запросы обрабатываются быстро - один экземпляр может обслуживать много запросов, к тому же Java поддерживает параллельную обработку запросов, т.е. приложение сможет обрабатывать несколько запросов одновременно., это может значительно снизить количество необходимых экземпляров приложения.
Вопрос: Что делать с параллельной обработкой запросов для Python? Потребуются ли изменения кода?
Ответ: Параллельность Python будет решена вместе с выпуском Python 2.7 для GAE. Мы услышали отзывы пользователей Python, которые волнуются и думают переходить ли на Java, т.к. там поддерживается параллельная обработка запросов. Мы сделали поправку в ценах - пока Python 2.7 не готов мы будем предоставлять для Python вдвое меньшие экземпляры приложения (вдвое дешевле).
Вопрос: Как много запросов может обрабатывать один экземпляр приложения?
Ответ: Одно-поточный экземпляр (python или java) одновременно может обрабатывать 1 запрос. Дальше это количество запросов обратно-пропорционально задержке ответа. Например для задержки 10 мс = 100 запросов/секунду/экземпляр, для задержки 100 мс = 10 запросов/секунду/экземпляр и т.д. Много-поточные приложения могут обслуживать несколько запросов одновременно. Здесь скорость обработки связана с требованиями к процессору. Для экземпляра B4 (примерно 2.4ГГц): 10 Мегациклов/запрос = 240 запросов/секунду/экземпляр, 100 Мегациклов = 24 запроса/секунду/экземпляр. Конечно эти числа в идеальной ситуации, но это поможет понять как рассчитывать производительность приложения. Много-поточные приложения сейчас можно сделать только на Java, поддержку Python мы планируем в этом году, но позже.
Вопрос: Почему Google будет считать экземпляры, а не процессорное время, как в предыдущей модели?
Ответ: Процессорное время - лишь часть ресурсов, используемых App Engine. Когда запускается ваше приложение - создается экземпляр приложения, которому доступны максимум процессора и памяти, которые приложение может использовать. Даже когда процессор не работает, а ждет нового запроса - экземпляр продолжает “использоваться”, для Google это стоит денег. В текущей модели приложения с большим временем ожидания (другими словами те, которые долго простаивают ничего не делая) не в состоянии масштабироваться, т.к. это будет очень дорого для Google. Это изменение позволит разработчикам запускать разные типы приложения и при этом оплачивать все используемые ресурсы.
Вопрос: Что это означает для существующих клиентов?
Ответ: Многие клиенты оптимизировали приложения для минимизации использования процессора и сокращения расходов, но часто использовали много памяти (приложения с долгим временем ожидания). Новая модель будет способствовать меньшему времени ожидания, даже если при этом придется использовать больше процессорного времени.
Вопрос: Как будет работать режим “всегда включено” с новой моделью?
Ответ: Мы еще в процессе решения что с этим делать, ответ будет скоро (правда, мы почти закончили)
Вопрос: В чем разница между экземплярами по требованию (On-demand Instances) и зарезервированными экземплярами (Reserved Instances)?
Ответ: Для экземпляров по требованию - вы не обязуетесь их использовать, а платите по факту только за использованные часы. Для зарезервированных экземпляров вы обязуетесь оплатить определенное количество часов работы приложения в неделю и их нужно будет оплатить независимо от того использовали вы их или нет. Это не означает, что они должны быть запущены всё время.
Вопрос: Подождите, зарезервированные не будут запущены постоянно?
Ответ: Нет, это просто способ дешевле оплачивать процессорное время, с предварительным обязательством его оплатить.
Вопрос: С какой точностью будет считаться время работы приложения? Например если оно будет работать 5 минут я заплачу $0.08/60 * 5?
Ответ: Оплачивается время работы экземпляра приложения и еще 15 минут ожидания (пока планировщик не выключит его). Например если у вас экземпляр приложения по требованию работал 5 минут, то вы заплатите за 5 + 15 минут или $0.08/60 * 20 = 2.6 цента.
Вопрос: Раз вы пробуете считать память в новой модели - я смогу оплатить внешние экземпляры приложения с разным количеством памяти?
Ответ: Нет, мы планируем что у всех основных экземпляров будет одинаковый объем памяти.
Вопрос: Основные экземпляры (Frontend instances) смогут обрабатывать заданий Cron и очереди задач?
Ответ: Да.
Вопрос: Рабочее окружение Go поддерживаем параллельную обработку запросов?
Ответ: Пока нет.
Цены
Вопрос: $9/приложение/месяц это абонентская плата или минимальный платеж?
Ответ: Основываясь на отзывах мы изменили абонентскую плату $9 на минимальный платеж $9. Другими словами вы можете пользоваться платными ресурсами в объеме $9 и при этом вы не должны будете доплачивать что-то е ежемесячному платежу в $9. $500/аккаунт/месяц остается как абонентская плана на покрытие операционных расходов.
Вопрос: Большинство клиентов должны будут изменить тип приложений на платный?
Ответ: Нет, мы ожидает, что большая работающих сейчас приложений сможет остаться в рамках бесплатных квот.
Вопрос: Смогут ли существующие приложения продолжать использовать текущую модель расчетов?
Ответ: Нет, все приложения будут переведены на новую модель расчетов, когда App Engine станет официальным продуктом.
Вопрос: Увеличатся ли платежи у большинства клиентов? Если да, то почему Google увеличивает цены для App Egnine?
Ответ: Да, у большенства клиентов, которые платят счета увеличатся. Во время предварительной фазы работы App Engine мы смотрели сколько это стоит, исследовали основные модели использования. Мы должны изменить цены сейчас, потому что GAE становится официальным продуктом Google и должен иметь модель устойчивого дохода на долгие годы.
API
Вопрос: Как считались цена на API?
Ответ: Для большей части API стоимость останется примерно той же, что сейчас, просто вместо процессорного времени мы будем считать количество операций, для Channel API это будет стоить $0.01/100 каналов. Это примерно столько, сколько сейчас оплачивается как часть процессорного времени. API для работы с хранилищем подробно описано дальше.
Вопрос: На странице с ценами для некоторых API стоят галочки вместо цен, что это значит?
Ответ: Эти API бесплатны для использования с App Engine.
Вопрос: Как будет работать новая модель для XMPP? Сколько будут стоить статусные сообщения?
Ответ: Для XMPP будут тарифицироваться только исходящие сообщения. Входящие сообщения очень похожи на обычные запросы и будет считаться трафик и конечно процесс обработки запроса в экземпляре приложения. Для статусных сообщений будет оплачиваться только трафик. Это почти так же как сейчас, только вы видите процессорное время вместо количества сообщений.
Вопрос: Сколько будет стоить входящая почта?
Ответ: Входящая почта будет тарифицироваться как обычный запрос - входящий трафик и время работы экземпляра приложения, так же как это работает сейчас.
Вопрос: Будет ли внешний кеш (Front end cache) формализован и станет ли он частью предлагаемого сервиса?
Ответ: Сейчас мы рассматриваем различные варианты, но пока никаких планов нет.
Вопрос: Сколько будут стоить операции с хранилищем? Какая разница будет относительно текущей стоимости?
Ответ: Сегодня мы снимаем деньги за процессорное время для записи каждого объекта, записи индекса, чтения объекта, сканирования индекса и чтения результата запроса. В новой модели мы будет снимать деньги за количество операций, вместо процессорного времени и не будем больше снимать деньги за сканирование индекса. Это означает, что цена вашего запроса будет зависеть только от возвращаемого результата. Мы ожидаем, что стоимость операций будет примерно в 4 раза выше цены за процессорное время в сегодняшней модели, но для приложений, которые много используют индексы это компенсируется тем, что мы больше не будем снимать деньги за запрос. Панель администраторв сейчас показывает общее количество вызовов API хранилища, но это плохой показатель того сколько операций будет оплачиваться в новой модели. Цена будет сильно зависеть от типа запросов и содержимого при вызове API, а не от их количества, которое показывается сейчас. Например одиночный запрос get() может вернуть 1 объект или 100, а beginTransaction() не потребляет каких-то платных ресурсов.
Вопрос: Отправка email администраторам может быть дешевле или бесплатной?
Ответ: Мы рассмотрим эту возможность.
Варианты использования
Вопрос: Что означает стоимость премиум-аккаунта $500/аккаунт? За Google-Apps-аккаунт? За аккаунт разработчика? За аккаунт владельца приложения?
Ответ: Это платеж с организации (можно сказать что за Google Apps аккаунт, если вы уже клиент Google Apps). Например если вы работаете в gregco.com и у вас премиум-аккаунт, то пользователя gregco.com могут создавать приложения, которые будут оплачиваться с аккаунта gregco.com.
Вопрос: Будут специальные цены для некоммерческого использования?
Ответ: Возможно, сейчас этот вопрос исследуется
Вопрос: Будут ли специальные цены для использования в образовании?
Ответ: Возможно, сейчас этот вопрос исследуется
Вопрос: Будут ли специальные цены для проектов с открытым исходным кодом?
Ответ: Возможно, сейчас этот вопрос исследуется
Ограничения
Вопрос: Если я перенесу приложение в отказоустойчивое хранилище (HR Datastore) это будет означать, что у меня “новое” приложение и у меня будет новая, уменьшенная квота на отправку email? Могу я воспользоваться прежним лимитом в 2000 писем?
Ответ: Да, вы сможете воспользоваться прежним ограничением для приложений, которые переносятся из Master/Slave хранилища в отказоустойчивое.