Two ways to span regions
To serve users worldwide and survive a region outage, you deploy in multiple regions. There are two postures.
- Active passive: one region serves traffic, another stands by to take over. Simple, but the standby is wasted and failover is slow.
- Active active: every region serves live traffic simultaneously. Lower latency everywhere and instant resilience, but much harder.
The hard part is writes
Reads are easy to replicate. The challenge is concurrent writes in different regions to the same data. With the speed of light limiting cross region latency, you cannot synchronously coordinate every write without crippling performance.
Resolving conflicts
Active active systems usually accept writes locally and replicate asynchronously, then resolve conflicts using strategies like last writer wins, conflict free replicated data types, or partitioning data so each key has a home region.
You trade strong consistency for availability and latency. Choosing the conflict strategy is the central design decision.
Key idea
Active active runs every region live for latency and resilience, at the cost of resolving concurrent cross region write conflicts.