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.
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
| Component | Single region | Two-region active-active | Multiple |
|---|---|---|---|
| Compute fleet | 10,000 USD | 24,000 USD | 2.4x |
| Database | 5,000 USD | 11,000 USD | 2.2x |
| Storage | 2,000 USD | 4,100 USD | 2.05x |
| Replication traffic | 0 USD | 3,600 USD | new |
| Networking and routing | 1,500 USD | 3,400 USD | 2.27x |
| Observability | 1,500 USD | 3,300 USD | 2.2x |
| Total | 20,000 USD | 49,400 USD | 2.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.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.