Most DR cost conversations are about the strategy: backup and restore, pilot light, warm standby, active-active. Everyone nods at the ladder. Cheaper rungs, slower recovery, done.
Then someone adds "and we want guaranteed capacity in the DR region" and the ladder quietly collapses.
Illustrative example (made-up rates, not any provider's price list, not a real client): ExampleCo protects 20 TB of data and 12 app nodes. Production compute is about $1,750/month at an assumed $0.20/hr per node.
Monthly DR cost with rates I picked for illustration:
- Backup and restore: ~$200 (cold copies plus some transfer)
- Pilot light, no reserved capacity: ~$1,030
- Warm standby at 25% size, no reserved capacity: ~$1,470
- Active-active: ~$2,780
- Pilot light WITH 100% of prod compute reserved in the DR region: ~$2,780
Same bill as active-active, with the recovery time of pilot light. You are paying to hold seats you will probably never sit in. Capacity reservations bill whether or not you ever fail over. That is the point of them, and also the trap.
Where the money actually goes:
1. Standing capacity (reservations or idle compute). Usually the biggest line.
2. A hot data replica: storage plus the always-on database replica.
3. Cross-region replication traffic. It scales with your daily change rate, not your data size, so measure the change rate.
4. Drills. Full-size compute for a few hours twice a year is cheap. Skipping them is not.
What to do instead:
- Tier workloads. Five services need a 15-minute RTO. Forty do not. Do not replicate everything at the top tier.
- Replicate data, not compute. Compute can be rebuilt from IaC; data cannot.
- Reserve only what the tier-1 failover needs, not 100% of prod. Size it from the tier list, not from fear.
- Decide on purpose whether "capacity guaranteed" is worth the delta for each tier. Write the delta down.
- Tag every DR resource so the standby bill shows up in showback as its own line.
The model is attached: a small read-only Python script (stdlib only, rates in a config you edit). Run it with your own numbers. Review and test it before using the output in a business case. The figures above come from that script with placeholder rates, so verify against your provider's current pricing.
Question for the comments: what percent of your production compute sits reserved or idle in your DR region, and did anyone actually decide that number?