Monday, April 29, 2013

Deployment best practices - reasons?


I'm currently looking at tidying up deployment for a Django app we use internally.

There's a couple of things that I know are best-practices, or it's just how I normally deploy Django apps, but I need to come up with strong cases for all of them. As in any organisation, if it ain't broke, don't fix it - so there needs to be a compelling argument from me to put them in place.

For example:

Why use Gunicorn? (versus just Apache)
Gunicorn is lightweight, uses less memory, and is easier to configure. Anything else?

Why use Apache/Nginx in front of Gunicorn? (versus just hitting Gunicorn on it's own)
Gunicorn isn't designed to be front-facing - so for example, it doesn't handle slow clients well. Ideally you'd want something like Nginx or Apache to buffer requests. Anything else?

Why use Supervisord (versus just init.d scripts with say ./ run_gunicorn in there)?
Supervisord will restart crashed processes. Anything else?

Why use Sentry?
Allows easier viewing of errors. Anything else?


You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To post to this group, send email to
Visit this group at
For more options, visit

No comments:

Post a Comment