Deploying Django apps

June 2, 2010

One part of the application life cycle is deploying it. Since I knew virtualenv I think one of its major advantage is to keep isolated every project running in the same server. However Alberto Morales make me note this aproach has its major disadvantage too.

Isolating each project makes them fully independent. You can install different versions of Django, and any other lib you need using easy_install or pip making it really simple. You can even has several virtualenvs for the same project (this could be interesting to try new versions of libs). You can upgrade your libs in a simple manner.

Among disadvantages maybe the more clear is that, if you use almost the same libs in your projects you will be having several copies of the same things, and even worse, as they are in differents path you will have several copies of the same things in memory.

IMHO the servers are quite cheaps to try to optimize things to that level. Having a dedicated server in ISPs such as OVH or 1AND1 is cheap. Let’s said your choiced plan is about 750 euros/year, this means about 62.5 euros/month. Having this in mind (and assuming the projects I meaning are those that can be run several in a server) you should note that if deploying your projects for performance makes you work (let says) 4 hours more in a month than deploying them in a easy way, you would optimize your time contracting another server.

That’s way I’d rather to use an easy way to deploy projects even if the mem footprint is higher.