views:

1846

answers:

6

I am a beginner in developing websites by Django. I run small discussion websites similar to SO.

I have an account at Bluehost which has been a nightmare in developing by Django. I have found that Webfaction and Google App Engine seems to be the best choices for Django.

However, I am not sure which one is the best for me.

Is Google App Engine better than Webfaction in running small websites?

+2  A: 

I can't speak for Google App Engine, but as a rather recent Django user myself I recently moved my development site over to a WebFaction server and I must say I was extremely impressed. They are extremely friendly to Django setups (among others) and the support staff answered any small problems I had promptly. I would definitely recommend them.

For other Django-friendly hosts, check out Djangofriendly.com.

Paolo Bergantino
+2  A: 

I'm a Google app engine developer, so I can't say much about webfaction, but as far as I have used it setting up a web app with app-engine is pretty straight forward¹. The support staff however is not quite good.

1- http://code.google.com/appengine/articles/django.html

Diones
@Diones: Can you see your Django files in terminal in Google App Engine? I would like to see which files are in my project in Google App Engine in terminal.
Masi
As far as I know, no. But I have never tried.
Diones
There are source viewer libraries people have written. But App Engine is not source control - if you need to do this, UR Doin It Wrong.
Nick Johnson
+1  A: 

The thing to remember about GAE is that it works differently than a standard python install and apps you have may not work well (or at all) in that environment. The biggest difference is the database. While there are advantages to the non-relational database available with GAE, you need to treat it differently and there are many things that your code may be expecting your database to be able to do that it cannot.

If you are starting from scratch on an app, either platform would work fine. If you have an existing python app, getting it to work on GAE will take considerable work.

Nathan Voxland
+2  A: 

If you have already written your django application, it may be really difficult to install it on Google App Engine, since you will have to adapt your data model. GAE uses big table, a (key,data) store, instead of a traditional relational model. It is great for performance but makes your programming more difficult (no built in many-to-many relationship handlers, for example).

Furthermore, most apps available for django will not work on GAE since these apps use the relational data model. The most obvious problem is that the great admin app of django will not work. Furthermore, GAE tends to make you use google accounts for identification. This can be circumvented but again, not using readily available django apps. This could be great for you, but it can be a hassle (for example, lots of user names are already taken at google).

So, my final advice is that, if you are a beginner, you should avoid GAE.

If you are based in Europe, djangohosting.ch is also a good choice, instead of webfaction.

madewulf
Is it better to use a hosting service which is located at Europe if my target audience is Europe? What are the benefits of having a host near my customers?
Masi
You will have better response times, for you, but also for your users. Try to access sites in Australia (university sites for example), you will feel the pain.
madewulf
@madewulf: Do you know how the hosting differs between Webfaction and djangohosting.ch?
Masi
For me, it is almost the same thing, except that WebFaction is a lot bigger company. I am a customer of djangohosting.ch and can just say that their support is good. The only thing that ever concerned me was the 60 megs of ram limit for your app, but I never encountered problems until now.
madewulf
It depends a lot on your application. Mine is heavily accessing the db and can consume up to 20MB . I have never tried to make stress tests with more than 5 concurrent requests. Maybe I should....
madewulf
@madewulf: How did you manage to move your existing websites to djangohosting.ch? Was it hard?
Masi
It was not hard at all. They generate the settings.py file for you and init scripts for the web server (they use lighttpd). Editing those is straightforward) My only question was on how to setup email sending, but they responded overnight. (Already configured, nothing to do).
madewulf
@madewulf: Thank you for your answers!
Masi
For what it is worth, I've had good experiences with WebFaction.
docgnome
+2  A: 

A bit late with my answer, but nevertheless... I am Django beginner and have my first Django App up and running at GAE. It was App Engine Patch that made it happen. Using it you have django admin and several other apps available out of the box. If you'd like to try it, go for the trunk version. This project is reasonably well documented and have responsive community.

Alexander Vasiljev
@Alexander: Excellent answers are never too late :) Thank you for your answer!
Masi
@Alexander: Did you use an existing Django code? It seems that Madewulf's statement "most apps available for django will not work on GAE since these apps use the relational data model" is not true anymore.
Masi
I coded my app myself. Madewulf is right: porting existing Django app to AE requires effort, even with a help of AEP. Just look into project's discussion group. Some frameworks are already ported and some are written from scratch like http://gae-full-text-search.appspot.com/ from AEP authors.Authors are going to build a native port of Django to AEP, seehttp://code.djangoproject.com/wiki/AppEngineUnfortunately, this is not a near-term task.
Alexander Vasiljev
+5  A: 

Webfaction:

Plus:

  1. Great shell access. Ability to install python modules, or anything else you might need. You will love checking out source code from shell to update your production (no need for FTPing anything anymore!)
  2. Very good performance and reliability
  3. Great support + wealth of info on help knowledge base and in the forums. (FORGET bluehost or anything else you ever tried). I was surprised by amount of answers I found to what I thought would be difficult questions.
  4. You can use regular database and you can do joins (see app engine minus #2)

Minus:

  1. Setting up initial deployment can be a bit tricky the first few times around (as is to be expected from shell).
  2. Growing-scaling can be expensive and you probably will not survive beign "slashdotted"

App Engine

Plus:

  1. Free to start with
  2. Initial database is easier to setup.
  3. Deployment is a breeze
  4. Enforcement of "good" design principles from the start which help you with #5. (Such as hard limits, db denormalizing etc)
  5. Scalability (but this does not come free - you need to think ahead).
  6. No maintanence: auto backups, security comes for free, logging + centralized dashboard, software updates are automatic.

Minus:

  1. Setting up Django on App Engine is not so straightforward, as well as getting used to this setup. The webapp framework from google is weak.
  2. Database model takes a little bit of time to wrap your head around. THis is not your moma's SQL server. For example you have to denormalize your DB from the start, and you cannot do Joins (unless they are self joins)
  3. The usual things you are used to are not always there. Some things such as testing and data-importing are not that easy anymore.
  4. You are tied down to App Engine and migrating your data to another DB or server, while not impossible, is not easy. (Not that you do data migration that often! Probably never)
  5. Hard limits in requests, responses and file sizes (last time I heard about 1MB).
  6. App Engine currently supports Python 2.5 only.

Can't think of anything else so far. I am currently with Webfaction and am testing App Engine as well. I have no difficulty going from Django-Webfaction to App-Engine way of thinking. However, I am not sure if the AppEngine -> Standalone servers route would be just as easy.

References

Talks:

drozzy