When a shared database is the real service boundary

Why inventory, pricing, and warehouse teams keep blocking each other — and how to sequence ownership before you extract code.

Teams often describe three microservices and one table. The services have separate repositories, separate deploy pipelines, even separate Slack channels — yet every schema change still needs a Thursday negotiation.

That table is the boundary. Until one team owns writes, “extraction” is theatre.

Start with writers, not folders

List every process that inserts or updates the contested rows. Ignore read replicas and reporting jobs on the first pass. The writer list is usually shorter than people fear, and it names the political problem clearly.

Sequence cutovers

Move read paths first when you can. Callers that only need eventually consistent views can shift to a new owner without freezing commerce. Write-path moves need a change window, dual-write discipline, or an outbox — pick one and write it down before the first pull request.

What we refuse to recommend

A big-bang weekend cutover of write traffic without a rollback rehearsal. If rollback is “restore the old service from backup,” you do not have a plan yet.

If your estate has two or more domains fighting over one store, a microservices refactoring engagement is usually the right shape of help — not another slide deck about culture.