We All Got Conway's law wrong
Conway's law is not about structure of resulting (software?) system.
It's about communication and organizational boundaries.
Ok, wikipedia copy-paste will follow:
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
— Melvin E. Conway
So why would you care in a first place? The design will resemble structure of organization, nothing seems to be right or wrong here.
The problem is that Conway's law is not about resulting system, it's about organizational boundaries and how hard they're to traverse.
Meet Magestic* Finance Incorporated
Once upon a time wise management at Magestic Finance Inc. decided they need a brand new bank. A bank that consists of:
integration with other companies
apps are omitted for clarity
Indubitably wise management decided to split the work just like on pic related.
However even simplest tasks took weeks. Why is that?
Looks like it contradicts with cross-functional scrum teams, right? But no one says we're agile, never mind using scrum.
The communication is the key
The problem of this setup is not that is contradicts some peculiar principle. It's about communication overhead.
No interactions are equally cheap. Communication with your team mate is almost free. Communications with other departments might have some friction, and if you ask external company something they might just deprioritize you.
Systems resemble organizational structure because people are trying to reduce overhead.
Even people who don't know Conway's law will try to hold stuff they work often close to them, which leads to incorporation into appropriate module.
Let's count boundaries.
Simplest scenario: show field from database on ui.
make changes in storage service
make changes in middleware
make changes in ui
inter-org boundary between Magestic Finance and Tiger Services
inter-team boundary between backend and frontend team
Even reduction of one boundary leads to significant decrease in delivery time. And despite backend team has more work, it's amount is negligible comparing to overhead reduced. In simplest case of single value display it will be <1 day, comparing to ~2 weeks before.
Ponies and Unicorns
The reason why teams should be cross-functional is in reduction of communication overhead. It might be less important with Waterfall-like approaches, but this is super important in agile frameworks based on quick communication.
So in my majestic (not magestic) universe filled with magic and fairies, split should look something like this:
* The name is sarcastic ;)