The problem is that for a monolithic system to be divisible, your team has to have been applying a level of discipline that is not verifiable.  It&#x27;s all on the honor system, and (half jokingly) developers have no honor.<p>Seriously though, all of the problems breaking the system up will be blamed on people who already left the company, whether they deserve it or not, and the patterns that keep you in a monolith will continue on forever.<p>The only solution I&#x27;ve seen sort of work for this is to make a single binary, but create modules with extremely clear boundaries.  Even so far as compiling them separately if the language is statically typed.  But even that can go sideways the moment someone builds caching into the system.<p>I&#x27;ve come to appreciate why external caches are so popular, but for my money I prefer caching at the HTTP layer.  You have to solve all the same problems, but you get one level of cache for free, it&#x27;s easier for QA to understand, and it puts cache eviction in the hands of mature pieces of code that all implement the same spec (which might account for my previous point).