Multi-Region Fundamentals
The 'where' and 'why' before the 'how'
Why (and whether) to go multi-region: latency to users, compliance residency, and DR resilience, balanced against data-consistency complexity and hard operational cost. The decision starts at 'where are my users and what does my data tolerate'.
What you will learn
- Decide whether multi-region is earned by latency/residency/DR needs
- Understand consistency vs availability tradeoffs at global scale
- Cost the blast radius and operational burden honestly
Multi-region earns itself when: users are far from your region (latency), the law demands data residency (compliance), or you need whole-region DR with near-zero cutover. The price: data must reconcile across regions (consistency), and every release/ops action now spans regions.
What is this?
Drivers: latency (round trips across continents hurt; edge/CDN help reads, but writes need a near region), residency/data sovereignty (GDPR, local laws — data must sit in-region), DR (region-loss tolerance), and 'the CEO wants downtime proof'. Models: 1) single-region + CDN for reads (the cheapest 'global'), 2) independent regional deployments (each region its own data, partitions users by geography), 3) global synchronized data (spanner-family; writes replicated everywhere) — each has different consistency semantics. Concepts: RPO/RTO across regions, write conflicts, active-active vs active-passive, read replica per region for low-latency reads + a home-primary for writes. Cost: higher than double — DR infra, bandwidth/egress, testing+dashboard engineering, and the human team that runs two of everything.
Why do you need it?
- Latency is a product feature: two round trips vs two-digit ms is a different app for distant users.
- Residency isn't an option — non-compliance is a legal, not technical, price.
- Multi-region is the only true DR: a region's death can't be answered by a second region that doesn't exist.
- The discipline of global thinking (consistency, blast radius) makes every architecture better.
Mental model
One restaurant far from paying customers vs. the same chain with kitchens where diners live
Multi-region = kitchens near diners
You wouldn't open a five-star kitchen in a city with no patrons; multi-region is the same decision — put your compute where the need (and the law) is, or keep one kitchen and ship the food frozen (CDN reads).
How it works
- Choose the model: independent-by-geography vs globally-shared data.
- Place writes near their users; replicate reads for local latency.
- Encode residency: data classes route to approved regions (compute also pinned).
- Add regional failover + DR paths for the worst case.
- Invest in the ops: multi-region rollouts, dashboards per region, drill calendars.
Multi-region decision tree.
Examples
Region math for reads
# Scenario: EU + US users, DB in us-east-1.# Reads (replicated to eu-west-1 replica): EU p95 = ~10ms vs ~180ms to US.# Writes (home-primary in us-east-1): EU writers pay cross-Atlantic latency# (~100ms+) unless the workload is write-localized.# → choose read-localization first; promote per-region writes only when latency or# residency demands it.Most 'multi-region' apps really need read-placement; symmetric write-splitting is a data-consistency tax only some systems earn.
In production
- Read replicas in each continent + CDN for static; home-primary writes.
- Residency maps: PII/regulated data pinned to legal regions by routing rules.
- Active-passive failover path for region-loss DR (the DR module's recipe).
Best practices
- Justify each new region with a measurable driver (latency SLA, law, or RTO).
- Start reads-only; graduate to regional writes only when the data model survives it.
- Automate per-region testing/env parity — drift across regions is the silent killer.
- Design rollout lanes per region (one region first, then others).
- Keep a regional heatmap: dashboards, budgets, and runbooks split per region.
Common mistakes
- Multi-region 'because it sounds HA' — paying consistency + ops tax without a driver.
- Assuming data replication solves residency (replicating PII out of its legal region is the violation).
- Write latency discovered at launch: global users writing to a far primary suffer.
- Forgetting ops duplication: releases, dashboards, budgets, and drills now run per region.
Debugging tips
- EU users slow despite replica → ensure foreign-key reads actually hit the replica, not the primary path.
- Residency leak in logs/reports → audit routing + data-class rules; not everything respects them.
- Region-B write failing at 2am → conflict resolution or replication lag on that path; check both dashboards.
- Release to region-A broke, B fine → you shipped same code but faster failover exists; compare rollout configs.
Interview checkpoint
Quick quiz
The strongest justification for a second region is:
A cheap 'global' start that many genuinely need: