Reflections on the Django Deployment and Ecosystem Workshops

Dump Truck Sketch

Earlier this week, I attended the two day Revolution Systems Django workshop in Santa Monica, CA. Day one was the “Django Deployment Workshop”, and day two was the “Django Ecosystem” workshop, both of which were led by Jacob Kaplan-Moss, one of the creators of the Django web framework.

I’m a huge fan of python and Django. I use them for fun and for work, and couldn’t be happier. One of the reasons I wanted to attend the RevSys workshops was to meet Jacob, and also to see how he handles very large scalability issues (which I’m currently solving at my work).

If you’re interested in attending one of these workshops, please keep reading.

Django Deployment Workshop

This workshop covered all areas of deployment for Django apps. Some of the topics covered included:

  • Cloud providers. In the class Jacob discussed some of the dominant cloud server providers that are out there (namely Rackspace and Amazon), and compared the benefits and drawbacks of each.
  • Bootstrapping servers with Chef (or Puppet). If you need to manage lots of servers, you will be hard pressed to find a better tool for the job than Chef or Puppet. Both allow you to build simple configuration files which keep all of your servers synced. For example, you can specify which packages should be installed on all web servers, which files must be present, how to install custom code and software, etc. With a single configuration update, you can make changes to hundreds (or more) servers, removing the need for manual systems administration in most cases.
  • Using pip to build and distribute your Django sites. pip manages project dependencies in a simple way, and can even fetch and build code straight from version control systems (git, svn, etc.), which makes it a great tool for large companies who may not have the freedom to store code on the PyPI mirrors.
  • Sandboxing your python and Django code using virtualenv. virtualenv lets you build local python environments that your applications can run in, ensuring that regardless of OS updates and other worrisome issues, your code will still run as it should.
  • Using fabric┬áto build simple deployment scripts, which allow you to push the latest version of your code into production, staging, or development with a single command.
  • Storing media content across multiple web servers using Django’s file store backends.
  • Monitoring your networks with munin.
  • Monitoring your server processes with upstart.
  • Monitoring your logs with sentry.
  • Using celery to distribute asynchronous, resource intensive tasks to improve site performance.
  • Load balancing web requests to a variable amount of web servers.
  • Using PostgreSQL to efficiently handle lots of database queries.
  • And a lot of other cool stuff.

Overall I was really impressed with this workshop. The class size was small, which was awesome. We got to spend a ton of time with Jacob, and really cover interesting areas of scaling and deployment which every company should be using.

Jacob was very thorough, and it was enlightening listen to him talk about the various technologies and methods that he uses to help scale extremely large systems.

Regardless of whether you’re developing Django apps for fun or work, if you have a chance to attend the Django Deployment Workshop, do so. You won’t regret it.

Django Ecosystem Workshop

The Django Ecosystem Workshop discussed various open source Django apps, why you should know about them, and how to use them. I won’t go into the details here (because there were far too many apps covered to remember), but the workshop provided solutions to pretty much all common site problems in a simple reusable manner.

This workshop was particularly neat because I hadn’t played around with a lot of the apps discussed, and now have a massive TODO list which includes implementing a good portion of these apps into my production systems at work.

As with the Django Deployment Workshop, Jacob was very thorough, and helped with any (and all) questions that everyone had.

My Thoughts

Both workshops were excellent, and well worth the money. Jacob did an amazing job covering some very complex topics, and was careful to answer everyone’s questions and make sure that everyone was on the same page.

Luckily, the class size was small both days, which gave everyone a chance to get to know each other, and I met some really cool people. Jacob in particular is a really awesome guy, and it was a great experience to hang out with him and get to pick his brain on various topics.

I highly recommend you sign up for the classes when they’re available next. As long as you’re a competent Django developer, you should have no problem following along with the topics discussed, and you will surely learn a lot as you go.

A lot of the scalability issues discussed in the workshops are ones I’m currently solving at my workplace, and so I plan to do some very detailed write ups on my methods and tools over the coming weeks.