Миграция приложения Django в Google App Engine? - PullRequest
9 голосов
/ 13 июля 2009

Я занимаюсь разработкой веб-приложения и рассматриваю Django, Google App Engine и ряд других вариантов. Мне было интересно, какой «штраф» я наложу, если разработаю полное приложение Django, предполагая, что оно работает на выделенном сервере, а затем захочу перенести его на Google App Engine.

У меня есть общее представление о хранилище данных Google, поэтому, пожалуйста, предположим, что я выберу базу данных на основе столбцов для своего «автономного» приложения Django, а не реляционную базу данных, чтобы схема могла оставаться в основном такой же и не быть основным фактором.

Также, пожалуйста, предположите, что мое приложение не поддерживает большой объем данных, поэтому перенос десятков гигабайт не требуется. В основном меня интересует влияние на код и архитектуру программного обеспечения.

Спасибо

Ответы [ 4 ]

8 голосов
/ 13 июля 2009

Большинство (все?) Django доступно в GAE, поэтому ваша главная задача - не основывать свои дизайны на чем-то зависимом от Django или стандартных библиотек Python, которых нет в GAE.

Вы определили явную разницу, которая является базой данных, поэтому я предполагаю, что вы на вершине этого. Еще одно отличие заключается в привязке к учетным записям Google, и, следовательно, при желании вы можете изрядно контролировать доступ через файл app.yaml, а не через код. Однако вам не нужно ничего этого использовать, поэтому, если вы не планируете переходить на учетные записи Google при переходе на GAE, нет проблем.

Я думаю, что различия в стандартных библиотеках в основном могут быть выведены из того факта, что GAE не имеет библиотек ввода-вывода и C-ускоренных, если это не указано явно, и мой опыт пока таков, что я ожидал, что они будут там были там. Я не знаю Django и не использовал его в GAE (кроме шаблонов), поэтому я не могу это комментировать.

Лично я, вероятно, не нацелился бы на LAMP (где P = Django) с намерением перейти на GAE позже. Я бы разработал для обоих вместе, и постараюсь по возможности убедиться, что различия сохраняются на самом верху (конфигурация) и на самом низу (модель данных). Версия GAE не обязательно должна быть идеальной, если вы знаете, как сделать ее идеальной в случае необходимости.

Не гарантируется, что это быстрее, чем запись и портирование, но я думаю, что это будет нормально. Самый простой способ обнаружить какие-либо различия - это запустить код, а не полагаться на то, что в документах GAE ничего не пропущено, поэтому вы, скорее всего, сохраните некоторые ошибки, которые необходимо убрать. Python SDK является довольно хорошим приближением к реальному App Engine, поэтому все или большинство ваших тестов могут выполняться локально большую часть времени.

Конечно, если вы в конечном итоге решите не портировать, значит, вы проделали ненужную работу, поэтому вам нужно подумать о вероятности этого и о том, считаете ли вы разработку GAE пустой тратой времени, если она не нужен.

2 голосов
/ 14 июля 2009

Похоже, вы знаете об основных ограничениях при создании / переносе вашего приложения - что AppEngine не поддерживает ORM в Django.

Имейте в виду, что это не только влияет на код, который вы пишете самостоятельно, но и ограничивает вашу способность использовать большое количество существующего кода Django. Это включает в себя другие приложения (такие как встроенные приложения администратора и аутентификации) и функции на основе ORM, такие как универсальные представления .

2 голосов
/ 13 июля 2009

По сути, вы измените базовый класс модели данных и некоторые API, если будете их использовать (PIL, urllib2 и т. Д.).

Если ваша цель - обработчик приложений, я бы использовал помощник обработчика приложений http://code.google.com/appengine/articles/appengine_helper_for_django.html. Он может запустить его на вашем сервере с файловой базой данных и затем передать его в обработчик приложений без изменений.

1 голос
/ 13 июля 2009

Есть несколько вещей, которые вы не можете сделать в App Engine, которые вы можете сделать на своем собственном сервере, такие как загрузка файлов. В App Engine вы должны загрузить его и сохранить хранилище данных, что может вызвать несколько проблем.

Кроме того, все должно быть хорошо с части презентации. Есть ряд других мелочей, которые лучше на вашем собственном выделенном сервере, но я думаю, что в конечном итоге многие из них будут в App Engine

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...