Multi-Region AWS Deployment Architecture for Production Workloads
An advanced guide to multi-region AWS deployment architecture — active-active vs active-passive, Route 53 routing policies, data replication, and failure mode analysis.
Single-region AWS deployments fail. Not often, and not for long — but when a region experiences an outage, every service in it becomes unavailable simultaneously. For most applications, a regional outage is an acceptable, bounded risk. For systems with revenue-critical uptime requirements, a multi-region architecture is the correct engineering response. Getting it right requires understanding the tradeoffs clearly before committing to the complexity.
Active-Active vs Active-Passive: Choosing the Right Model
These are the two primary multi-region deployment patterns, and they have fundamentally different cost, complexity, and recovery profiles.
Active-Passive
One region handles all traffic. A second region sits warm — infrastructure deployed, but receiving no traffic. When the primary region fails, DNS or a load balancer routes traffic to the secondary region.
Recovery time objective (RTO): Minutes to tens of minutes. Depends on how quickly DNS propagation completes and how current your secondary region's data is.
Cost: Roughly 1.5-1.8x single-region cost. The passive region runs compute at reduced capacity or uses on-demand scaling triggered by failover.
Complexity: Moderate. You need data replication to keep the secondary current, failover automation, and runbook-tested procedures for promoting the secondary.
When to choose active-passive: Your application cannot tolerate a regional outage, but you can accept 5-15 minutes of degraded availability during failover. This covers the majority of production systems with SLA requirements.
Active-Active
Both regions handle live traffic simultaneously. Traffic is distributed between regions by Route 53 routing policies (latency-based or geolocation-based). If one region degrades, Route 53 health checks remove it and the surviving region absorbs the traffic.
Recovery time objective (RTO): Seconds to under a minute. Traffic shifts happen at the DNS level based on health check failures.
Cost: 2x single-region cost at minimum, often higher due to cross-region data replication and inter-region data transfer.
Complexity: High. Stateful systems require writes to be consistent across regions, which introduces distributed systems problems that are genuinely difficult to solve correctly.
When to choose active-active: Your application genuinely cannot tolerate multi-minute downtime, or your global user base requires co-located compute for latency reasons. This is the right choice for financial systems, communications platforms, and large-scale consumer applications.
Route 53 Routing Policies for Multi-Region
Route 53 is the layer that makes traffic distribution work across regions. The relevant routing policies for multi-region:
Latency-based routing: Routes each request to the region with the lowest latency for that client. Users in Europe land in eu-west-1; users in Asia land in ap-southeast-1. Good for latency optimization in active-active setups.
Geolocation routing: Routes based on the geographic origin of the request. Useful when data residency requirements mandate that certain users' traffic stay within a geographic boundary.
Failover routing: Designates one record as primary and one as secondary. Route 53 monitors the primary with a health check; if it fails, traffic shifts to the secondary. This is the core mechanism for active-passive failover.
Weighted routing: Splits traffic between records at configured percentages. Useful for gradual traffic shifting during a regional migration or blue-green deployment across regions.
For most multi-region architectures, you will combine latency-based routing with Route 53 health checks. Each regional endpoint has an associated health check; Route 53 automatically excludes unhealthy endpoints from DNS responses.
Data Replication: The Hard Part
Compute is easy to replicate across regions. Data is the constraint.
DynamoDB Global Tables
DynamoDB Global Tables provide multi-region active-active replication with eventual consistency. Writes in any region replicate to all other regions within a second or two under normal conditions.
Conflict resolution uses last-writer-wins. If two regions write to the same item simultaneously during a network partition, one write silently overwrites the other. Design your data model to minimize the likelihood of concurrent cross-region writes to the same item, or implement application-layer conflict detection for sensitive data.
Global Tables are the lowest-friction path to multi-region data for DynamoDB workloads.
RDS with Read Replicas and Aurora Global Database
For relational databases, Aurora Global Database provides cross-region replication with under 1 second replication lag under normal conditions. One primary region accepts writes; other regions have read replicas.
In an active-passive setup, the passive region's read replica can be promoted to primary in roughly 1 minute — this is the database component of your RTO. Plan your application failover sequence to account for this promotion time.
In an active-active setup with relational data, you must route all writes to the primary region even when serving reads from the local region. This introduces latency for write-heavy workloads in non-primary regions.
S3 Cross-Region Replication
S3 Cross-Region Replication (CRR) asynchronously copies objects from a source bucket to a destination bucket in another region. Typical replication lag is under 15 minutes for most objects, faster for smaller objects.
For static assets and file storage, CRR is straightforward. Use S3 replication time control (RTC) if you need a 15-minute replication SLA with monitoring.
Lambda and Compute Across Regions
Lambda functions are regional. Deploy your function to each region independently. Use a CI/CD pipeline that deploys to all regions simultaneously or in sequence.
Common approaches:
- AWS CodePipeline with parallel deploy stages per region
- GitHub Actions with a matrix of
aws-regionvalues - Terraform with multiple provider configurations pointing to different regions
Environment-specific configuration (connection strings, secret ARNs) is region-specific. Use Parameter Store or Secrets Manager in each region separately — do not share secrets across regions or rely on cross-region secret access, which adds latency and a cross-region dependency.
Failure Mode Analysis: What Actually Breaks During a Regional Outage
Before committing to a multi-region design, work through your failure scenarios explicitly:
Compute fails, data survives: Lambda and API Gateway in one region become unavailable. Route 53 health checks detect the failure and shift DNS. Your data in DynamoDB Global Tables or Aurora Global Database remains available and consistent. Traffic in the surviving region may spike — ensure auto-scaling policies can handle 2x normal load.
Database replication lags: Under network stress, DynamoDB Global Table replication can fall behind. Users in the surviving region may see slightly stale data. Design your UX and business logic to tolerate eventual consistency where it applies.
Partial failure (degraded, not down): Route 53 health checks test reachability and response code, not business correctness. A region that returns 200s for malformed responses may stay in rotation. Implement synthetic health checks that test actual business logic.
DNS TTL and propagation: Route 53 failover is bounded by DNS TTL. Set TTLs low (60 seconds) on records used for failover routing. Clients with aggressive DNS caching may not pick up the failover immediately.
A multi-region architecture does not eliminate all failure modes. It trades one set of risks for another, at higher cost and complexity. The right decision is to implement it when the cost of a regional outage exceeds the cost of the architecture.
If you are designing a production system where uptime requirements justify multi-region complexity, talk to Clixo. We build distributed cloud architectures with explicit failure mode analysis and tested recovery procedures.