1. Global routing decides which region serves the user.
- GeoDNS - returns a region specific IP based on resolver location. Simple, but DNS caching makes failover slow.
- Anycast - the same IP is announced from many locations and BGP routes to the nearest. Failover is fast and it is what most CDNs use.
- Global load balancer - health aware routing at the edge, able to shift traffic in seconds.
2. Regional routing - the regional load balancer distributes across availability zones, then to a healthy instance.
3. The hard part is data.
- Active-passive - one region takes all writes, others serve reads. Simple, but writes from distant users are slow.
- Active-active with sharding by user home region - each user's data has one owning region. Most common, and satisfies data residency rules too.
- Active-active with full replication - needs conflict resolution such as CRDTs or last-write-wins, and must accept eventual consistency.
Say explicitly how you handle a user who travels: route them to their home region for writes, serve cached reads locally.