No way (or no need) to be such generic. You should have a choice (at least it's my choice). Because your app is separated by functionalities, not technical aspects.
Unless I'm misunderstanding, separation by functionality is only useful for engineering teams. Once it's in production, the only thing that matters are the technical aspects. By technical aspects, I'm interpreting to mean mem/cpu usage, throughput, security requirements, etc.