Scaling Django to 500 apps

Oct 23 11:38 AM CDT :calendar:
Audience level: All

About This Talk

Have you ever…

  • Felt like a Django codebase is a bit of a mess?
  • Struggled to find where something happens in a codebase?
  • Felt like Microservices is the only way to manage your complexity?

This talk is a tour of the techniques, conventions, and tools, that Thread uses to scale our Django codebase. These have helped us over the years to add more developers, more code, more functionality, and more frequent releases, while still being productive in one large Django codebase.

We have nearly 500 apps, around 450 models, around 400k lines of Python, and around 1000 URL patterns. We’ve also had many more over the past 8 years and 120k commits. Despite this, we release around 10-20 times a day with a small engineering team.

Some of the things we’ll cover include:

  • What goes into an app
  • Structuring apps for readability
  • Tools and techniques
  • Issues to be aware of
  • Things we got wrong when we started!
  • Our wishlist for improvements to Django to better support apps

This talk is targeted at those familiar with Django concepts, but those working day to day with other engineers on a Django codebase are likely to get the most out of it.


    Photo of Dan Palmer

    Dan Palmer

    Dan is a software engineer at Thread in London. As a full stack engineer he works with Swift, Javascript, Kubernetes and cloud infrastructure, as well as plenty of Python and Django. At Thread he has built many core product features, APIs, and infrastructure components, as well as helping to build the team and engineering culture.