Managing multiple Django services in a single repo
06-03, 15:30–16:20 (Europe/Paris), Secondary Room

Django projects are standalone by nature, but with the right tooling and practices you can effectively maintain many interrelated Django services in a single streamlined repo, with minimal boilerplate and copypasta.


Modern software systems often involve developing and deploying multiple related services. The microservice architecture is a prominent example of this. These services often share underlying data structures, models, utilities, protocols and other core code.

Django is an excellent choice for building individual services, and some functionality can be shared between them by reusing apps. But Django projects themselves are standalone by nature, and there is no standard infrastructure for streamlining the management many related services. As a result we're often forced to treat each project as an island, with its own settings and deployment configuration, possibly in its own repo.

In this workshop we will demonstrate:
- The challenges of maintaining many interrelated Django projects.
- The advantages of having multiple Django projects coexist in a single shared repo.
- The tooling you need to work effectively in a Django monorepo, with a focus on the Pants build system.
- Specific examples of good practices that allow you to maintain a growing yet streamlined stable of interrelated Django-based microservices with minimal boilerplate and copypasta.

Code along with us, and ask questions along the way!

Benjy Weinberger is a software engineer with over 20 years' experience in building scalable distributed systems, and is one of the maintainers of the Pants open-source build system, and a long-time Django user. He indulges his longstanding interest in cutting-edge build systems as a co-founder of Toolchain Labs.

You can find Benjy online at:

https://github.com/benjyw
https://www.linkedin.com/in/benjy-weinberger
https://twitter.com/benjy