Недавно я решил "подсесть" на
Google App Engine и перевести основные свои сайты на эту платформу. Давно присматривался к appengine, пробовал ее во время первого релиза, и даже некоторые вещи там работают у меня довольно давно.
Как у django разработчика сразу стало понятно что надо использовать джанго, благо там можно запускать Django приложения. Т.к. напрямую это делать нельзя, то первый вопрос который встал заключался в выборе патча который использовать для этого. На данный момент существует 2 основных проекта —
Google App Engine Helper и
App Engine Path. У них есть отодно существенное различие — первый минималистичен и использует App Engine Datastore API в то время как второй старается сделать mapping (не подобрал русского слова) между App Engine Datastore API и Django Queryset API что позволяет использовать существующие приложения без особых изменений. Существует еще один проект
django-nonrel который позволяет использовать нереляционные СУБД (в основном это для appengine) на Django.
Но со временем вопрос встал по другому — "А нужно ли мне вообще использовать Django?". Забегая вперед скажу что не нужно. Чтобы найти ответ на этот вопрос я решил выписать преимущества Django и вычеркнуть то что не имеет значения либо не может быть использовано
Database Abstraction, QuerySet API
Forms framework
Admin framework
Auth framework
Большое количество готовых переиспользуемых приложений (возможно только при значительной модификации)
- Template engine — присутствует в appengine без Django
- Internationalization API (i18n)
В результате преимущества Django сузились до минимума. Модуль интернационализации можно заменить используя gettext (но как правило не используется вообще в Django проектах). Думаю ответ стал очевиден. Вот еще некоторые заметки которые влияли на принятие решение:
- Все эти расширения и хаки требуют дополнительных операций на сервера, а они считаются и при превышении лимита становятся платными.
- У appengine datastore есть свои преимущества, которые могут быть скрыты и непонятно как реализованы в патчах.
- Некоторые готовые Django приложения придется переписать на webapp фреймворке. Но имея под рукой готовый код переделать его не составляет особого труда.
- Необходимо создавать приложения для работы с аккаунтами. В моем конкретном случае этого не требуется (достаточно встроенной поддержки Google Accounts)
Вот такая история. Пока что делаю на webapp сайтик. Надеюсь в скором времени начну переделывать еще один свой проект на GAE + GWT. Это будет еще более интересно. Темболее впервые в реальном проекте буду использовать Java, но об этом потом.