Вы правы: вы не так уж контролируете традиционный хостинг. Тем не менее, мы надеемся, что выигрыш перевесит негативы. App Engine чрезвычайно масштабируемый - он работает на том же оборудовании, что и сам Google. Как часто вы посещали http://google.com, и эта страница или результат поиска не сработали?
Несмотря на то, что вы разрешаете Google запускать ваш код, код все равно остается за вами, как вам угодно. Благодаря новым проектам, таким как django-nonrel , вы можете создавать и запускать собственные приложения Django непосредственно поверх App Engine, и если они не удовлетворяют вашим потребностям В конце концов, довольно легко доставить это приложение интернет-провайдеру, на котором размещены приложения Django (и их много). Подробнее об этом проекте ниже.
Вам не нужно беспокоиться об оборудовании, операционных системах, создании образа машины, баз данных, веб-серверов, балансировщиков внешней нагрузки, CDN / пограничного кэширования, обновлений программного обеспечения / пакетов, лицензионных сборов и т. Д. Все эти вещи касаются Интернета или другого приложения, которое вы создадите или создадите для решения конкретной проблемы. Вся эта дополнительная инфраструктура требуется , нравится вам это или нет; но с App Engine вам нужно думать только о своем приложении / решении, а не об этих дополнительных вещах.
Очевидно, что другая вещь, которую вы теряете, это часть вашей среды исполнения. Чтобы убедиться, что вы хорошо играете со своими соседями по облаку (перегрузка ресурсов, проблемы с безопасностью и т. Д.), Вы должны выполнить в песочнице, то есть приложение не может создавать локальные файлы, открывать сетевые сокеты и т. Д. богатый набор API и функций продукта, так что вы по крайней мере можете создавать значимые приложения:
- масштабируемое хранилище данных распределенных объектов (см. Ниже)
- Memcache
- UrlFetch
- сервис изображений (изменение размера, обрезка и т. Д.)
- очереди задач обслуживания / аутентификации пользователей для фоновой обработки
- Веб-шаблон Django
- Blobstore для больших файлов
- черный список об отказе в обслуживании
- международные задачи
- курсоры хранилища данных
- отправка (и / или получение) электронной почты
- отправка (и / или получение) чата / мгновенных сообщений / мгновенных сообщений через XMPP
У вас также есть полная консоль администрирования с панелью мониторинга, которая позволит вам контролировать использование вашего приложения, настройки и историю выставления счетов, полный дамп использования квот и даже журналы приложений, которые вы можете просматривать или загружать.
Чтобы обратиться к "основным больным точкам" из @Anurag:
1a. бесплатные квоты довольно щедры ... достаточно для веб-сайта, который получает 5 мм просмотров / месяц. Кроме того, если вы доверяете Google выдать им вашу кредитную карту, они увеличат уровни бесплатных квот даже на выше . посмотрите на их страницу квот и обратитесь к числам в столбцах «Свободная квота по умолчанию» и «Квота по умолчанию для выставления счета» ... вот некоторые из них примеры: а) количество запросов: 1,3 мм по умолчанию, 43 мм с включенным биллингом (wBE), б) вызовы API хранилища данных: 10 мм по умолчанию, 140 мм wBE, в) выборки URL-адреса: 657 тыс. по умолчанию, 46 мм wBE
1b. Максимум 30 секунд для запросов: это больше безопасности для вас, потому что ваше приложение теперь находится на игровой площадке с другими. Google должен убедиться, что все соседи по облаку хорошо играют друг с другом и не нагружают процессор. Тем не менее, команда App Engine работает над тем, чтобы обеспечить более длительное выполнение фоновых задач ... расписание пока отсутствует, но оно находится в общедоступной дорожной карте .
1c. написать сервер чата на App Engine не только возможно, но и довольно просто. Вот один из них, созданный с использованием API XMPP App Engine - он довольно тупой и просто передает отправителю то, что они передали нам (знайте, что вы должны иметь Пользователь уже пригласил в чат):
from google.appengine.api import xmpp
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class XMPPHandler(webapp.RequestHandler):
def post(self):
msg = xmpp.Message(self.request.POST)
msg.reply("I got your msg: '%s'" % msg.body)
application = webapp.WSGIApplication([
('/_ah/xmpp/message/chat/', XMPPHandler),
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
1d. еще один элемент в общедоступной дорожной карте - это будущее "[поддержка] для связи Browser Push (Comet)", так что это тоже произойдет.
2a. «не SQL» - одна из самых сильных сторон Google App Engine! реляционные базы данных не масштабируются и должны быть защищены в некоторый момент, чтобы предотвратить падение СУБД. однако, верно, что портировать его немного сложнее, потому что он не традиционный! Основываясь на Google Bigtable , вы можете думать о хранилище данных App Engine как о масштабируемой базе данных распределенных объектов. App Engine позволяет запрашивать хранилище данных с использованием модели Query , или, если вы настаиваете, они также предоставляют SQL -подобный интерфейс GqlQuery .
2b. с новыми авангардными проектами, такими как django-nonrel , если вы создаете приложение Django и используете его ORM, вы можете взять чистое приложение Django и запустить его непосредственно на верхняя часть App Engine. аналогично, вы можете отключить его от App Engine и перенести непосредственно на более традиционного поставщика ISP, на котором размещены приложения Django. запросы остаются такими же, и вам не нужно заботиться о том, работает ли он в SQL или нет.
3a. долгосрочные процессы уже рассмотрены в 1b выше. Google знает об этой необходимости и работает над этим.
3b. API TaskQueue поддерживает вызовы по 100 тыс., но это значение составляет 1 ММ wBE ... и это ежедневно.
3c. Google настоятельно рекомендует разбивать задачи на несколько подзадач. Считается, что приложения с низкой задержкой не «перегружают систему», и к ним обращаются лучше, чем к тем, которые работают медленно и потребляют больше ресурсов от своих соседей по облаку.