Home Resume
Homeβ€Ί Blogβ€Ί AWS Architecture Series #8 β€” Route 53 ARC…
AWS Architecture AWS Architecture Series

AWS Architecture Series #8 β€” Route 53 ARC: Multi-Region DR That Actually Holds Up Under Pressure

Routing controls give you a deterministic on/off switch for regional traffic. The hard part is designing the safety rules so a bad failover does not replace your regional problem with a global one.

Business Challenge

A payments platform processes card authorisations across two AWS regions: us-east-1 (active) and us-west-2 (passive). Their RTO target is 3 minutes, RPO is 30 seconds. They have Aurora Global Database with sub-second replication, DynamoDB global tables, and Route 53 failover records. On paper it works. In the last regional impairment it took 8 minutes to complete failover β€” three times their SLA β€” and finance calculated $300K per minute in lost transaction volume.

The post-mortem found three failure modes stacked on top of each other. First, Route 53 health checks with a 30-second evaluation period meant the DNS change did not propagate until after clients had already started timing out. Second, the passive region was configured for 30% of production capacity β€” nobody had updated the Auto Scaling group targets in six months. Third, there was no mechanism to prevent both regions from being set to active simultaneously if an engineer ran the wrong runbook step.

Each failure was real, but they had the same root cause: their multi-region architecture was a collection of independent components with no coordination layer. Route 53 ARC (Application Recovery Controller) is that coordination layer.

Health checks alone are not a failover strategy

Standard Route 53 health checks react to what the DNS layer observes. ARC routing controls are proactive β€” an on/off switch you control directly, with safety rules that prevent unsafe states. Health checks tell you something broke. Routing controls give you a lever you trust in a crisis.

Architecture

ARC has two distinct recovery surfaces: multi-region recovery via routing controls, and multi-AZ recovery via zonal shift and zonal autoshift. They solve different problems and are operated independently.

Routing controls: the multi-region layer

A routing control is a simple boolean switch β€” ON or OFF. Each control is tied to a Route 53 routing control health check, which in turn drives a DNS record (typically a failover or weighted record). You flip the control through the ARC API; Route 53 updates the health check state, and DNS propagates.

The critical design point: routing control state is stored in an ARC cluster β€” a set of five regional endpoints spread across five AWS regions. Even if three of those five regional endpoints are unreachable, you can still read and write routing control state from the remaining two. This means your control plane survives a regional impairment, which is exactly when you need it most.

Diagram showing ARC cluster with 5 regional endpoints, routing control health checks tied to Route 53 DNS failover records, and traffic flowing from clients through Route 53 to active region application, with passive region standby
ARC routing control architecture. The cluster's five-region endpoint spread means control plane availability survives the regional impairment you're trying to recover from. State changes propagate to Route 53 health checks, which drive DNS failover records.

Safety rules: preventing the worse outcome

The feature that turns ARC from "fast DNS switch" into "safe failover mechanism" is safety rules. There are two types:

Assertion rules

Assert that a minimum or maximum number of controls in a group are ON. Example: at least one region must always be active. This prevents you from accidentally turning off both regions. You define it as "minimum 1 of 2 routing controls must be ON" and ARC blocks any state change that would violate it.

Gating rules

Gate a state change on a prerequisite condition. Example: the standby region's routing control can only be turned ON if a gating control (representing passive region health) is also ON. This prevents flipping traffic to a region that is not ready to serve it.

For the payments platform, the critical safety rule is: exactly one of the two regional routing controls can be ON at any time. This makes split-brain impossible by design rather than by convention.

Safety rules are enforced at the cluster level

Safety rule evaluation happens inside the ARC cluster, not in your application code. You cannot bypass a safety rule by calling the API directly β€” the cluster rejects the state change. This makes them genuinely reliable during a high-stress incident when engineers are most likely to make mistakes.

Zonal shift and zonal autoshift: the AZ layer

Not every impairment is regional. A bad deployment, a noisy-neighbour compute issue, or an isolated AZ network event should not require a full region failover. ARC's zonal shift addresses this with a separate mechanism.

A zonal shift temporarily moves traffic away from a specific AZ to the remaining healthy AZs in the same region. You initiate it manually with an expiration you set (up to 3 days, extendable). The shift works at the load balancer level β€” ARC integrates with ALB and NLB to mark an AZ unhealthy, causing the load balancer to stop routing to targets in that AZ.

Zonal autoshift is the same mechanism but automated: AWS uses internal telemetry β€” network metrics, EC2 data, ELB signals β€” to detect AZ-level impairments before they become customer-visible. When it detects a potential issue, it automatically initiates a zonal shift on your behalf. No human action required. You opt in per resource.

Zonal shift is temporary by design

When you start a zonal shift, you must set an expiration. If you forget to extend it, traffic returns to the impaired AZ when the expiration passes. Build an extension step into your runbook, or use zonal autoshift (which AWS manages end-to-end) for AZ-level events.

What about readiness checks?

ARC historically included readiness checks β€” a feature that continually monitored whether your passive region's resource capacity, quotas, and routing configuration matched production. As of 2025, readiness checks are no longer available to new customers. Existing customers can continue using them, but new architectures cannot rely on them.

For new deployments, cover the same ground with:

  • CloudWatch cross-region alarms β€” monitor Auto Scaling group sizes, ALB target group healthy host count, and RDS replica lag in the passive region
  • AWS Health events (via EventBridge) β€” detect service quota exhaustion or capacity signals in the passive region before you need it
  • CloudWatch Synthetics canaries β€” smoke-test the passive region's endpoints on a schedule so you know it responds before you flip traffic to it
  • Infrastructure parity checks in CI β€” Terraform plan drift detection or AWS Config conformance packs to catch configuration skew between regions before an incident

Why This Architecture Holds Up

The payments platform's 8-minute failover had nothing to do with DNS propagation speed. It had everything to do with the absence of a control plane that was independent of the data plane failure. When us-east-1 was impaired, the tools they needed to execute recovery were themselves partially impaired. ARC's cluster design solves this directly: the five-region endpoint spread means the control plane operates even when the region you're failing away from is unavailable.

Control plane availability

ARC cluster endpoints span five AWS regions. The cluster uses a quorum model β€” two of five endpoints are sufficient to read and write routing control state. A single-region impairment takes out at most one endpoint, leaving four available. You can always execute failover.

Deterministic state transitions

Routing controls are ON or OFF with no intermediate states. Combined with safety rules, every possible state change either succeeds (and is safe by rule definition) or is rejected. No partially-flipped DNS configurations, no ambiguous health check states, no race conditions between engineers running concurrent runbook steps.

Separation of concerns

Zonal shift handles AZ-level events without touching your multi-region routing. Regional failover via routing controls handles region-level events without affecting AZ-level configuration. The two layers compose cleanly β€” an AZ shift in your passive region does not block you from flipping regional traffic to it.

Observability over hope

ARC publishes routing control state changes to CloudWatch Events. You can build a dashboard that shows current routing state across regions, when the last state change happened, and who made it. Failover history becomes auditable.

Key Architecture Decisions

1. One cluster per environment, not one per application

An ARC cluster is a regional control plane, not an application-scoped resource. Create one cluster per environment (production, staging) and put all your application routing controls on it. Multiple control panels on a single cluster give you logical separation without the operational overhead of managing multiple clusters. A cluster costs approximately $2.50/hour β€” shared across all applications in that environment.

2. Design safety rules before routing controls

Design your safety rules before you create routing controls. The canonical rule for active-passive DR is an assertion rule with MinimumControls: 1 and MaximumControls: 1 β€” exactly one region active at any time. Add a second assertion with MinimumControls: 1 to ensure you cannot accidentally deactivate all regions. These two rules together eliminate both split-brain and complete blackout as possible states.

3. Region switch for orchestrated failover

ARC's Region switch feature provides a higher-level abstraction: you define a recovery plan that captures the correct sequence of steps β€” stop writes to primary, promote Aurora replica, flip routing controls, validate canary β€” and Region switch executes them in order. For complex applications with multiple dependencies, Region switch reduces the risk of runbook step ordering errors during a high-pressure incident.

4. Opt into zonal autoshift selectively

Zonal autoshift is powerful but has implications: it can shift traffic automatically without human approval. For most workloads this is the right default. For workloads with strict compliance requirements where any topology change must go through a change management process, opt out and use manual zonal shift instead. The configuration is per resource.

5. Passive region capacity is a process problem, not a tool problem

ARC cannot ensure your passive region has enough capacity to handle production load. That is your infrastructure parity process. Common patterns: run passive at 100% of active capacity (expensive, eliminates cold-start scaling risk), use scheduled warm-up that scales passive to production size 15 minutes into a regional event, or accept a gradual scale-out as part of your RTO budget. The payments platform's 8-minute failover was partially caused by a 6-minute Auto Scaling warmup period. ARC cut the routing time to under 60 seconds; the remaining 5 minutes was capacity.

Closing Thought

Multi-region DR is not primarily a networking problem. It is a coordination problem: how do you execute a state change across two regions, under partial failure conditions, without introducing a worse failure? Route 53 ARC's routing controls and safety rules give you a control plane that is explicitly designed for this. The cluster's five-region spread means it works when you need it. Safety rules mean the state machine only allows valid transitions.

The tool does not remove the hard parts β€” passive region capacity management, database promotion sequencing, cache warming, downstream dependency cutover. Those are still yours to design. What ARC removes is the risk that the traffic flip itself goes wrong: that you end up with both regions active, or neither, or a half-propagated DNS state you cannot observe. For a $300K-per-minute workload, that certainty is worth the operational overhead of setting it up.

Test your runbook before you need it

ARC includes a practice runbook feature. Run a failover drill quarterly β€” flip traffic to the passive region, validate the application, flip back. Each drill surfaces capacity gaps, runbook errors, and configuration drift you cannot find any other way. The payments platform now drills monthly; their last tested failover time was 94 seconds.

Next in this series

Governance β€” AWS Control Tower landing zone customisations: how Account Factory for Terraform (AFT) and Service Control Policies turn a default landing zone into a repeatable, policy-enforced multi-account foundation.

Official AWS Reference

Comments

How was your experience?
Your feedback helps improve this site.
PoorExcellent