Недавно google анонсировал Cloud SQL для своего облака. Но вначале подержки django не было, и вот в начале февраля выходит App Engine 1.6.2 с поддержкой запуска приложений на django. Теперь можно забыть про скакания вокруг app-engine-patch и django-nonre, и пытаться эмулировать реляционную базу данных поверх bigtable.
Нам дают django 1.2 и модуль работы с Cloud SQL из коробки, и мы можем забыть про костыли с упаковкой пакетов в zip архивы. Вот какие шаги нам необходимо сделать для получения простого приложения в облаке:
- Для начала необходимо запросить тестовый доступ к Cloud SQL через Google APIs Console. Мне выдали доступ в течений 3-х дней, после этого в консоли мы получим доступ к управлению сервисом.
- После получения доступа нам по сути выдают обычный доступ к выполнению консольных команд mysql, где мы можем создать базу данных.
- Теперь создаем обычное GAE приложение внутри которого будет веб приложение на django + app.yaml файл в который необходимо прописать:
application: appname version: 1 runtime: python27 api_version: 1 threadsafe: true libraries: - name: django version: "1.2" builtins: - django_wsgi: on
- Для того что бы django-приложение сумело обращаться к Cloud SQL необходимо лишь в конфиге для DATABASES прописать:
DATABASES = { 'default': { 'ENGINE': 'google.appengine.ext.django.backends.rdbms', 'INSTANCE': 'my_project:instance1', 'NAME': 'my_database', } }
Это основное что необходимо сделать для подготовки приложения. При первой попытки сделать syncdb нас попросят авторизоваться, для этого нужно получить токен через Google APIs Console на вкладке «API Access», и как говорит инструкция расположить его в ~/.googlesql_oauth2.dat
(для windows %USERPROFILE%.googlesql_oauth2.dat
). Во время syncdb в Cloud SQL создаться необходимая схема базы для приложения и загрузятся fixtures если они есть. Пока разработка идет на локальной машине, приложение работает с sqlite3 базой. После этого можно смело пушить приложение в облако.
ИМХО
Я считаю что гугл сделал правильный шаг, давая SQL базу. У них не получилось выстрелить со своим облаком. Да в то время это смотрелось интересно, но все быстро поняли что оно слишком ограничено, и завязнуф на сервисах google будет очень тяжело перенести приложение куда либо. Да есть инструменты для миграций на амазоноские сервисы, но они не дают гарантий, и в любом случае потребуется N-ое количество человеко часов для переноса. Я не вспомню не одного крупного сайта работающего поверх GAE, был интересный проект интернет магазина, но и тот скорее мертв чем жив. Большие проекты скорее избегают GAE или даже о нем не думают, когда рядом есть амазон, на котором можно построить свою архитектуру, легко смигрироваф при необходимости.
Для тех кому нужно что то поменьше, запустить бложик, сайт визитку и т.п это слишком сложно, да и зачем разбираться в особенностях разработки под GAE, когда можно без особых усилий запустить подобное на специализированных сервисах.
А вот с запуском Cloud SQL ситуация хоть немного может измениться. Теперь можно спокойно запускать django сайты средней сложности на GAE, прикрутить к нему домен, и забыть про администрирование сервера. Только не стоит забывать про то что GAE поддерживает библиотеки написанные только на чистом python, про все сишные модули стоит забыть, а также ограничения на http запросы из приложения. И нам все еще надо будет использовать API GAE для загрузки файлов в хранилище, отсылку email и кэширование в memcache, но даже с этими ограничениями это покроет большую часть нужд для разворачивания «простых» сайтов.
Ссылки:
Автор: yurtaev