architecturenetworkingcost-optimizationdisaster-recovery

Multi-region active-active cost: the real price of running everywhere

Active-active across two regions is not twice the cost of one. Duplicated compute, duplicated storage, and constant bidirectional replication traffic push the multiple closer to 2.3 or 2.5. Here is the breakdown.

The C3X Team··7 min read

Quick answer

Running active-active across two regions typically costs 2.2 to 2.6 times a single-region deployment, not 2.0. You duplicate compute and storage, then add bidirectional replication traffic at about 0.02 dollars per GB between US regions, global routing, cross-region observability, and per-region minimums on managed services. For a 20,000 dollar per month single-region stack, expect roughly 44,000 to 52,000 dollars. The extra beyond 2x is mostly replication traffic and the resources you cannot share across regions, and the way to control it is to keep the cross-region data flow as small as the consistency model allows.

Active-active is the gold standard for availability: both regions serve live traffic, either can absorb the other's load, and failover is a routing change rather than a recovery procedure. It is also the most expensive topology, and the multiple is consistently higher than teams forecast because they budget for duplication and forget about the traffic that keeps the duplicates in agreement.

Where the multiple comes from

ComponentSingle regionTwo-region active-activeMultiple
Compute fleet10,000 USD24,000 USD2.4x
Database5,000 USD11,000 USD2.2x
Storage2,000 USD4,100 USD2.05x
Replication traffic0 USD3,600 USDnew
Networking and routing1,500 USD3,400 USD2.27x
Observability1,500 USD3,300 USD2.2x
Total20,000 USD49,400 USD2.47x

Compute exceeds 2x because each region must hold enough headroom to absorb the other's traffic during a failover. If each region normally runs at 40 percent utilization so it can take 100 percent of combined load, you are buying 2.4 to 2.5 times the capacity of a single region running at 65 percent. That headroom is the insurance premium, and it is the single largest line above 2x.

Replication traffic is the new line

In active-active, writes happen in both regions and must reach both. Cross-region transfer between US regions is about 0.02 dollars per GB, and it is charged on egress from each side. A system generating 3 TB of change per month per region ships 6 TB total, costing about 120 dollars. That sounds small, but real systems generate far more than their logical change rate.

Count the layers: database replication streams, object storage replication, cache invalidation messages, search index updates, event bus fan-out, and session state synchronization. A moderately complex platform can easily reach 90 TB per month of cross-region flow, which at 0.02 dollars per GB is about 1,800 dollars per direction, or 3,600 dollars total. On a 20,000 dollar single-region base that is 18 percent of the original bill added purely to keep two copies in agreement. The underlying mechanics appear in cross-region replication cost.

What you cannot share

Some costs do not halve per region. Each region needs its own NAT gateways, at 0.045 dollars per hour each plus 0.045 per GB processed, and you typically run one per availability zone. Each needs its own load balancers, its own VPC endpoints at 0.01 dollars per hour per AZ, its own bastion or session manager footprint, its own secrets and KMS keys, and its own monitoring agents. Managed services with minimum instance sizes, a small managed Kafka cluster or a search cluster, must be provisioned to their minimum in both places even if each carries half the load.

The conflict problem is a cost problem too

Active-active means concurrent writes to the same logical data from two places. Handling that requires either partitioning writes by key so each region owns a shard, using conflict-free data types, or accepting last-writer-wins with reconciliation. Each approach has an engineering cost, and the partitioned approach has a traffic cost: requests that land in the wrong region for their key must be proxied, which means paying cross-region transfer on live request paths rather than only on replication. If 20 percent of requests are mis-routed and each carries 30 KB of payload, a billion requests per month generates 6 TB of cross-region proxy traffic, about 120 dollars, plus real latency.

Cheaper postures that buy most of the availability

Active-passive with a warm standby runs the second region at a fraction of capacity, scaling up on failover. That typically lands at 1.3 to 1.6 times single-region cost, because the standby fleet is small but the data replication is the same. Pilot light goes further, keeping only data replicated and infrastructure defined but not running, landing around 1.15 to 1.3 times, with a recovery time measured in tens of minutes rather than seconds.

The honest question is what the availability is worth. If an hour of downtime costs 200,000 dollars and you expect one multi-hour regional event every two years, active-active's extra 350,000 dollars per year on this example is hard to justify against a warm standby at 130,000 dollars that recovers in ten minutes. If you are running a payments network where a minute matters, the arithmetic reverses. Model both topologies against the resource catalog before committing.

FAQ

How much more does active-active cost than a single region?

Typically 2.2 to 2.6 times, not 2.0. A 20,000 dollar per month single-region stack usually lands between 44,000 and 52,000 dollars across two regions. The excess above 2x comes from failover headroom in each compute fleet, bidirectional replication traffic, per-region resources that cannot be shared, and managed services with minimum sizes that must be met twice.

Why does compute cost more than double?

Because each region must hold enough spare capacity to absorb the other's traffic during a failover. If each region runs at 40 percent utilization so it can take 100 percent of combined load, you are buying roughly 2.4 to 2.5 times the capacity of a single region running at 65 percent. That headroom is the insurance premium and it is the largest contributor above 2x.

How much does cross-region replication traffic cost?

About 0.02 dollars per GB between US AWS regions, charged on egress from each side. The volume is larger than teams expect because it includes database replication, object storage replication, cache invalidation, search index updates, event bus fan-out, and session state. A moderately complex platform reaching 90 TB per month pays roughly 3,600 dollars across both directions.

What resources cannot be shared between regions?

NAT gateways at 0.045 dollars per hour each plus 0.045 per GB processed, load balancers, VPC endpoints at 0.01 dollars per hour per availability zone, bastion or session infrastructure, KMS keys, monitoring agents, and any managed service with a minimum instance size. A small managed Kafka or search cluster must be provisioned to its minimum in both regions even at half the load each.

Is active-passive meaningfully cheaper?

Yes. A warm standby that runs the second region at reduced capacity and scales on failover typically lands at 1.3 to 1.6 times single-region cost, because the standby fleet is small while data replication remains the same. A pilot light posture, replicating only data with infrastructure defined but not running, lands around 1.15 to 1.3 times with a recovery time of tens of minutes.

How does C3X help with multi-region cost?

C3X prices infrastructure from Terraform before deployment, so a second region's full footprint, compute, databases, NAT gateways, endpoints, and load balancers, appears as a number in the pull request rather than as a surprise on the next invoice. Because multi-region topology is almost entirely a Terraform decision, that is exactly where the cost comparison belongs.

What to do next

Price a second region before you build it. C3X costs your Terraform against a live resource catalog. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.