Multi-region gets proposed for three quite different reasons - disaster recovery, latency for distant users, and data residency compliance - and they demand different architectures. Conflating them produces systems that are expensive, complicated, and worse at all three than a focused design would have been at any one. Choosing between them is cloud and infrastructure work.
01Decide which problem you are solving
If the driver is disaster recovery, you need the ability to run elsewhere when a region fails, and you can tolerate a controlled failover taking minutes. If it is latency, you need read capacity near users while writes can stay centralised. If it is data residency, you need specific data physically confined to specific jurisdictions, which is a partitioning problem rather than a replication one.
These lead to genuinely different designs. Residency in particular is often better served by fully separate regional deployments with no cross-region data flow at all - simpler to reason about and far easier to prove to an auditor than a single system with residency rules layered on.
02Active-passive versus active-active
Active-passive keeps a standby region receiving replicated data but serving no traffic until failover. Active-active serves live traffic from multiple regions simultaneously. The gap in operational difficulty between them is much wider than the architecture diagrams suggest.
| Dimension | Active-passive | Active-active |
|---|---|---|
| Write conflicts | None - single write region | Must be designed for explicitly |
| Failover | Deliberate, minutes, testable | Automatic, but consistency is harder |
| Cost | Standby capacity mostly idle | All capacity utilised |
| Latency benefit | None until failover | Real for reads near users |
| Operational burden | Moderate | High - ongoing, not one-time |
| Realistic RTO | Minutes | Seconds |
03The database decides
Application servers are stateless and trivial to run anywhere. The database is the whole problem, and everything else in a multi-region design follows from what your data layer can actually do.
Synchronous replication across regions means every write pays the inter-region round trip - typically tens to over a hundred milliseconds - on every transaction. Asynchronous replication keeps writes fast but means a region failure loses whatever had not replicated, which is your real recovery point objective regardless of what the plan document claims. There is no configuration that avoids this trade; it is physics.
04Active-active means designing for conflicts
If two regions accept writes to the same logical record, they will eventually conflict. Last-write-wins is the default in many systems and silently discards data - acceptable for a cache, unacceptable for an order or a balance.
The designs that work usually avoid conflicts structurally rather than resolving them afterwards. Partition writes so each record has a home region that owns it. Use conflict-free data types where the merge semantics are genuinely well-defined. Or keep a single write region and serve only reads locally, which captures most of the latency benefit for a fraction of the difficulty.
- Partition ownership so each record is written in exactly one region.
- Prefer append-only models over in-place mutation where feasible.
- Use last-write-wins only where losing a write is genuinely acceptable.
- Consider read-local, write-central as the pragmatic middle ground.
05Untested failover is not failover
The most common failure of multi-region programmes is not a design flaw but disuse. A standby region that has never served production traffic is a hypothesis. Configuration drifts, capacity is never validated under real load, a dependency was only ever configured in the primary, and the runbook references a system that was replaced last year.
Regular, scheduled, deliberate failover to the secondary is the only way to know it works. Teams that do this quarterly find problems while calm. Teams that do not find them during an actual regional outage, at the worst possible time, with an audience.
06Cheaper things to try first
Multi-region is often reached for when the actual availability constraint is elsewhere. Multiple availability zones within one region handles the overwhelming majority of infrastructure failures at a fraction of the complexity, and most cloud outages that make the news are single-zone or control-plane events rather than whole-region losses.
Meanwhile the most common causes of downtime are bad deploys, migrations, expired certificates and dependency failures - none of which a second region fixes, and some of which it makes worse by replicating the problem faster. Fix deployment safety and dependency isolation before adding geography.
Topics
Marcus Hale
Lead Architect · SyncTrix
Writes about the engineering decisions behind production systems - architecture, delivery and the trade-offs that only show up at scale.
Building something like this?
SyncTrix engineers AI, SaaS, platform and cloud systems for enterprises and high-growth teams. Tell us what you're shipping and we'll scope it with you.