Multi-Cloud Cost Strategy: Compare and Save Across Providers
A multi-cloud cost strategy optimizes workload placement across AWS, Azure, and GCP based on pricing differences, data gravity, egress fees, and discount arbitrage — reducing total cloud spend by 15-30% compared to single-cloud approaches.
What You’ll Learn
- Price comparison across providers for compute, storage, and network
- Workload placement optimization (which provider for which workload)
- Data gravity and its impact on multi-cloud costs
- Egress fee comparison and minimization
- Discount arbitrage (buy where cheap, use where needed)
- Cloud-agnostic architectures and containerization
- FinOps practices for multi-cloud governance
Why It Matters
Each cloud provider has pricing advantages for specific services. AWS offers the broadest portfolio; Azure excels at Microsoft stack integration; GCP leads in data analytics and sustained-use discounts. Blind loyalty to one provider costs 15-30% more than optimized multi-cloud placement. DodaTech runs compute on a mix of AWS Spot and GCP Preemptible, with storage on Azure Blob for the DodaZIP distribution network, saving $22k/month.
flowchart LR
A[Workload Requirements] --> B{Best Provider?}
B --> C[AWS: Compute / Ecosystem]
B --> D[Azure: Microsoft Stack]
B --> E[GCP: Data / ML / Discounts]
C --> F[Workload Placement]
D --> F
E --> F
F --> G[15-30% Multi-Cloud Savings]
style G fill:#f59e0b,color:#fff
1. Compute Price Comparison
| Instance Type | AWS (m5.large) | Azure (D2s_v3) | GCP (e2-standard-2) |
|---|---|---|---|
| vCPU | 2 | 2 | 2 |
| RAM | 8 GB | 8 GB | 8 GB |
| Linux (on-demand) | $0.096/hr | $0.086/hr | $0.067/hr |
| 1-year reserved | $0.058/hr | $0.056/hr | $0.051/hr |
| 3-year reserved | $0.043/hr | $0.039/hr | $0.029/hr |
| Spot/Preemptible | $0.014/hr | $0.013/hr | $0.006/hr |
# price_comparison.py
compute = {
"AWS": {"ondemand": 0.096, "reserved_1yr": 0.058, "spot": 0.014},
"Azure": {"ondemand": 0.086, "reserved_1yr": 0.056, "spot": 0.013},
"GCP": {"ondemand": 0.067, "reserved_1yr": 0.051, "spot": 0.006},
}
for provider, prices in compute.items():
on_demand_monthly = prices["ondemand"] * 730
reserved_monthly = prices["reserved_1yr"] * 730
spot_monthly = prices["spot"] * 730
print(f"{provider:<6} On-demand: ${on_demand_monthly:>5.2f}/mo "
f"Reserved: ${reserved_monthly:>5.2f}/mo "
f"Spot: ${spot_monthly:>5.2f}/mo")Expected output:
AWS On-demand: $70.08/mo Reserved: $42.34/mo Spot: $10.22/mo
Azure On-demand: $62.78/mo Reserved: $40.88/mo Spot: $9.49/mo
GCP On-demand: $48.91/mo Reserved: $37.23/mo Spot: $4.38/moTakeaway: GCP is cheapest for on-demand compute, especially with sustained-use discounts (automatic). AWS is most competitive for spot. Azure is best when you have existing Microsoft licenses (Hybrid Benefit).
2. Storage Price Comparison
| Service | AWS S3 | Azure Blob | GCP Cloud Storage |
|---|---|---|---|
| Hot tier | $0.023/GB | $0.018/GB | $0.020/GB |
| Cool tier | $0.0125/GB | $0.01/GB | $0.010/GB |
| Archive tier | $0.00099/GB | $0.00099/GB | $0.0012/GB |
| API cost (PUT, 1k) | $0.005 | $0.005 | $0.005 |
| Egress (internet) | $0.09/GB | $0.087/GB | $0.12/GB |
# Compare storage costs using cloud provider CLIs
# AWS S3 pricing
aws s3api get-bucket-lifecycle-configuration --bucket dodatech-data
# Azure Blob pricing
az storage account show --name dodatechstorage --query primaryEndpoints
# GCP Storage pricing
gcloud storage buckets describe gs://dodatech-data3. Egress Fee Comparison
Egress (data leaving the cloud) is where providers make significant margin.
| Destination | AWS | Azure | GCP |
|---|---|---|---|
| Same region | Free | Free | Free |
| Cross-region (same provider) | $0.01-0.09/GB | $0.01-0.08/GB | $0.01-0.08/GB |
| Internet egress (first 10TB) | $0.09/GB | $0.087/GB | $0.12/GB |
| Internet egress (next 40TB) | $0.085/GB | $0.083/GB | $0.11/GB |
Strategies to reduce egress:
- Use Cloud CDN to serve content from edge locations (egress is ~$0.02/GB cheaper via CDN)
- Keep data and compute in the same provider/region to avoid cross-cloud transfer
- Use direct interconnects for hybrid or multi-cloud setups
- Compress data before transfer
4. Discount Arbitrage
The core strategy: buy commitment where discounts are deepest, run where compute is cheapest.
# discount_arbitrage.py
providers = {
"AWS": {
"on_demand": 0.096,
"compute_sp_3yr": 0.043, # 55% discount
"spot": 0.014,
},
"Azure": {
"on_demand": 0.086,
"ri_3yr_no_upfront": 0.043, # 50% discount
"hybrid_benefit": 0.052, # with HB on Windows
"spot": 0.013,
},
"GCP": {
"on_demand": 0.067,
"cud_3yr": 0.029, # 57% discount
"sustained_use": 0.047, # 30% automatic
"spot": 0.006,
},
}
for provider, pricing in providers.items():
best = min(pricing.values())
print(f"{provider:<6} Best rate: ${best:.4f}/hr "
f"(vs {pricing['on_demand']:.4f}/hr on-demand)")Expected output:
AWS Best rate: $0.0140/hr (vs $0.0960/hr on-demand)
Azure Best rate: $0.0130/hr (vs $0.0860/hr on-demand)
GCP Best rate: $0.0060/hr (vs $0.0670/hr on-demand)Arbitrage opportunities:
- Buy AWS Compute Savings Plans (3-year All Upfront) for 55% off, run EC2
- Buy Azure RIs with Hybrid Benefit for 60-70% off on Windows workloads
- Buy GCP 3-year CUDs for 57% off, then add sustained-use for additional savings
- Use spot/preemptible for burst capacity on any provider
5. Cloud-Agnostic Architecture
Containerization and Kubernetes enable workload portability across providers.
# Terraform example: deployable to any provider
# main.tf
terraform {
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
azurerm = { source = "hashicorp/azurerm", version = "~> 3.0" }
google = { source = "hashicorp/google", version = "~> 5.0" }
}
}
# Use modules to abstract provider differences
module "compute" {
source = "./modules/compute"
providers = {
aws = aws
azurerm = azurerm
google = google
}
instance_type = var.instance_type
region = var.region
spot_enabled = var.use_spot
}6. FinOps for Multi-Cloud
FinOps practices ensure multi-cloud doesn’t become multi-mess.
Multi-cloud FinOps checklist:
- Unified tagging taxonomy — same tags across all providers (Env, Project, Team, CostCenter)
- Centralized budget dashboard — single pane for all clouds (Vantage, CloudHealth)
- Standardized unit economics — cost per transaction, cost per user, cost per GB
- Cross-cloud commitment management — don’t buy RIs on two providers for the same workload
- Monthly review cadence — compare provider pricing quarterly to catch arbitrage opportunities
# Multi-cloud cost aggregation with custom script
# Export billing from each provider to CSV/JSON
# Load into a central analysis tool
python multi_cloud_report.py \
--aws-costs cost-export-aws.json \
--azure-costs cost-export-azure.json \
--gcp-costs cost-export-gcp.json \
--output multi-cloud-report.htmlCommon Mistakes
No unified tagging: Without consistent tags across providers, you can’t compare or allocate costs. Enforce a company-wide tag taxonomy before adopting multi-cloud.
Data gravity ignored: Moving 50TB of data from Azure to AWS for compute costs $4,350 in egress. Sometimes it’s cheaper to run compute where the data already lives.
Discount overlap: Buying RIs on two providers for the same workload wastes 50% of one commitment. Allocate workloads to providers before purchasing commitments.
Multi-cloud complexity overhead: Two clouds = 2x the monitoring, billing, and security tooling. The savings must exceed the operational overhead.
Ignoring egress twice: Cross-cloud communication between AWS and GCP costs egress on both sides. Design to minimize or eliminate inter-cloud traffic.
Practice Questions
Which cloud provider has the cheapest spot/preemptible compute? Answer: GCP Spot VMs at ~$0.006/hr for 2 vCPU (vs AWS $0.014/hr and Azure $0.013/hr). GCP also has sustained-use discounts that stack with spot pricing.
What is discount arbitrage in multi-cloud? Answer: Buying compute commitments from the provider offering the best discount, then using the cheapest spot/preemptible capacity across providers for burst workloads. You optimize both committed and flexible spend.
How does data gravity affect multi-cloud costs? Answer: Moving data between clouds is expensive ($0.08-0.12/GB). The cost of egress can negate any compute savings. Use data gravity analysis to decide which cloud runs which workload.
What is the best strategy for multi-cloud storage? Answer: Store data in the cloud where it’s generated. Use Terraform or cross-cloud replication for disaster recovery. Avoid frequent data movement between providers.
Challenge
Design a multi-cloud cost-optimized architecture for a global SaaS platform: evaluate AWS/Azure/GCP pricing for 200 web servers, 50 database instances, 10TB of object storage, 20TB/month egress, and $100k/month total budget. Determine the optimal workload split, recommend commitment purchases on the most cost-effective provider, and produce a quarterly arbitrage review process.
FAQ
What’s Next
| Topic | Description |
|---|---|
| Monitoring and optimization tools | |
| Deep dive into commitment-based discounts |
Related topics: Cloud Cost Optimization, Multi-Cloud, Cloud Computing
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro