Problem
A single region is a failure domain and is far from some users. Active-passive failover wastes standby capacity and often fails when first exercised.
Also known as: active-active, multi-master-regions
Serve traffic and accept writes in several regions simultaneously for low latency and regional fault tolerance.
A single region is a failure domain and is far from some users. Active-passive failover wastes standby capacity and often fails when first exercised.
In active-active, every region serves production traffic and can accept writes. Capacity is shared, and losing a region means redirecting its users rather than activating a cold site.
Data is the hard part. Options include a globally distributed database with tunable consistency, per-entity home regions with routed writes, and conflict-free replicated data types for counters and sets. Each shifts the trade-off between latency, consistency, and operational complexity.
Global routing sends users to the nearest healthy region; data replicates asynchronously between regions.
Global DNS / anycast (latency + health)
/ \
Region A (EU) <==async==> Region B (US)
app + DB writes app + DB writes
Rule: each entity has a home region, or merge via CRDT / LWW
Plan capacity for the failure case. With three regions, each should carry at most about sixty-six percent of its capacity in steady state to absorb a lost neighbor. Test failover with game days that shift traffic and verify that autoscaling, quotas, and caches keep up.
High - duplicated stacks and replication traffic
High
High
Replication lag causes stale reads or conflicting writes
Surviving regions lack capacity to absorb a failed region
Failover logic itself untested and fails when needed