A key feature of the systems that exhibit the spaghetti problem is that they are heterogeneous. The different systems are separate, because they serve distinct purposes and thus have entirely separate implementations. Their code is likely kept in separate repos and may even be written in different languages.
Don’t orchestrate when you can compose.
Jeff Smith
162

For a good look into what a system composed of primarily heterogeneous third-party components looks like, I recommend this post on a system built using Luigi for a genomics workload.