Multi-Region Application
Running in more than one region: what problem it actually solves, the data consistency choice you cannot avoid, and why most teams should exhaust single-region options first.
Reviewed 2026-09-21 · next review 2027-03-21
ARCHITECTURE
Application tiers deployed in two or more regions behind latency- or failover-based global routing, with health checks that reflect application health rather than instance liveness. The data tier is the design: either a primary region with read replicas and asynchronous failover, or a globally distributed database with its own consistency semantics. Object storage replicated across regions. Configuration and secrets available in every region, because a region that cannot start the application is not a standby.
Start by naming the problem. Multi-region for latency is a different design from multi-region for disaster recovery, and conflating them produces a system that is good at neither.
ASSUMPTIONS
An availability or latency requirement that a well-run single region genuinely cannot meet, plus the operational maturity to run and test failover. It assumes you have already done the single-region work — multi-zone deployment, tested backups, rehearsed restores — because multi-region multiplies whatever discipline you already have, including the absence of it.
Most teams asking for this need a tested restore and a status page more than they need a second region.
SECURITY
Data residency becomes an architectural constraint rather than a policy statement: replicating personal data to a region can breach an obligation, so the replication topology is a privacy decision (see /privacyops). Key management must work per region without a single-region dependency, or your encryption keys become the thing that fails over last. Audit logs from every region need a common destination, or an incident spanning regions cannot be reconstructed.
OBSERVABILITY
Measure per region and in aggregate — an aggregate that hides one region failing is worse than no dashboard. Monitor replication lag continuously, because it is your real recovery point and it varies with load. Synthetic checks must run from multiple regions: a check that only runs where the application is healthy will report health forever.
AVAILABILITY
Decide and write down the recovery point and recovery time objectives, then verify them by exercise rather than by design intent. Asynchronous replication means a failover loses the replication lag — that is data loss, and it must be an accepted decision rather than a discovery. Rehearse failover on a schedule, including failback, which is the half teams skip and the half that is harder. Split-brain must be prevented by design, not by hoping the failover is clean.
COST CONSIDERATIONS
Expect a substantially more than doubled bill: duplicated compute, cross-region replication traffic, and a second set of everything operational. Cross-region data transfer is the line that surprises people. Active-passive is cheaper but its standby is untested unless you exercise it; active-active costs more and is continuously proven. Choose deliberately and price both (see /finops).
IAC GUIDANCE
One parameterised module applied per region, never copies diverging over time. Region must be a variable, not a fork. Keep the routing and failover configuration in code — manual DNS during an incident is how a recovery becomes an outage.
PRODUCTION READINESS
Before relying on it: RPO and RTO written down and verified by a real failover exercise, failback rehearsed, replication lag alerted, data residency reviewed, per-region synthetic monitoring, keys available regionally, and a documented decision on what a failover loses. See /resilience-engineering for the practice and /chaos-engineering for the exercises that keep it honest.