There’s plenty of material (documentation, blogs, books) out there that’ll help you write a site using Django… but then what? You’ve still got to test, deploy, monitor, and tune the site; failure at deployment time means all your beautiful code is for naught.
This tutorial examines how best to cope when the Real World intrudes on your carefully designed website. I’ll cover:
- How to structure your code, dependancies, and development environment with an eye towards ease of deployment.
- The different ways you should be testing and verifying your code.
- How best to design staging and production environments.
- Tools to automate deployment to production clusters (Capistrano, Fabric), and ways to produce isolated repeatable deployments (virtualenv, pip, zc.buildout).
- Designing and configuring application servers (mod_python/mod_wsgi) and load distribution (nginx, perlbal).
- Database load balancing options (sharding vs. replication) and tools.
- Monitoring and logging sites in production.
- Performance tuning, including caching, profiling, and getting the best performance out of application and database servers.
- Along the way, I’ll discuss what’s behind some of sites I’ve got in production right now, especially the problems I ran into and how we solved them. I’ll also critique any production environments tutorial attendees would like to share with us.
This talk is designed for developers and system administrators who deploy Python-based web applications. I expect attendees to have a familiarity with Python, but much of the material will not be language specific, so those without Python experience should be able to following along.
In a similar vein, this talk will focus on Django, but the material could be useful to anyone looking to deploy web applications based on dynamic languages.