sydepsystem design atlas

Multi-Region Active-Active

Serve traffic from two regions simultaneously with data replicated both ways.

AdvancedPlatform
Global Load BalancerNetworkingRegion A ServiceComputeRegion B ServiceComputeRegion A DBStorageRegion B DBStorage

Users are routed to the nearest region by a global load balancer; both regions accept writes and replicate to each other, so either region can fail entirely without a hard outage, at the cost of resolving conflicting writes.

When to use it

  • Global user base needs low latency and the business cannot tolerate a full-region outage
  • The data model can support conflict resolution (or writes can be partitioned by region)

Trade-offs

  • Bidirectional replication conflicts need an explicit resolution strategy
  • Doubling the number of live regions roughly doubles operational and infrastructure cost

Components used

DNSManaged App ServiceRelational Database

How it works

  • Two or more regions serve live traffic simultaneously, with users routed to the nearest healthy one by latency-based DNS or anycast.
  • Data is replicated bidirectionally, which means writes can originate in either region and conflicts are possible by construction.
  • Losing a region is a routing change rather than a failover procedure, since the surviving region is already serving.

Used in the wild

  • Globally distributed users needing low latency everywhere.
  • Systems with recovery time objectives measured in seconds.
  • Regulatory requirements to serve and store data within specific geographies.

Good to know

  • Conflict resolution is the whole problem. Last-write-wins is simple and silently loses data; CRDTs avoid that but constrain what your data model can express.
  • Cross-region replication lag means the same account can be modified in two regions within the replication window. Systems handling money usually pin each account to a home region rather than accept that.