Tips for Building High-Quality Django Apps at Scale – DoorDash Engineering Blog
doordash.engineering
doordash.engineering
Also, re "Avoid Fat Models":
> This pattern can be kind of awkward if you have some logic that doesn’t really need to operate on a full model instance fetched from the database, but rather just needs the primary key or a simplified representation stored in the cache. Additionally, if you ever wish to move off the Django ORM, coupling your logic to models is going to complicate that effort.
Beyond that, there are some landmines around caching beyond the model scope. In a multitenant application, be very, very careful using the cache decorator at the view layer. You can get some nasty cross-contamination. The test framework also doesn't manage separation of caches when doing parallel tests, so you can get some serious oddities that are painful to figure out the cause of in parallel tests with caching.
I'd also love to hear how they manage keeping the test framework fast, clean, and reliable... assuming they use django's test runner. There's a lot of 'best practices' you pick up along the way w.r.t. keeping tests performant and valuable.
They absolutely do have a point when it comes to the positives of using one "app". But the well meant advice of being careful, doing this or that to avoid the problems named above; unfortunately don't scale (at least from my experience). If I am ever tasked to take over a Django codebase that is a single app, instead of lets say 5-10. My first priority will be to break this up in smaller apps before actually doing any actual work.