Skip to content

Multi-Cloud Cost Comparison: AWS vs Azure vs GCP

DodaTech Updated 2026-06-20 9 min read

In this tutorial, you'll learn about Multi. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.

Multi-Cloud cost comparison is the practice of evaluating AWS, Azure, and GCP pricing to determine the most cost-effective provider for each workload type using total cost of ownership analysis.

What You'll Learn

You'll compare compute, storage, data transfer, Serverless, and Kubernetes pricing across AWS, Azure, and GCP, use TCO calculators to model costs, identify cost advantages per provider, design workload placement strategies, and implement Multi-Cloud cost management with third-party tools.

Why It Matters

Each cloud provider has cost advantages for different workloads: AWS offers the most flexible discount models, Azure excels for Microsoft-licensed workloads, GCP leads in sustained-use auto-discounts and preemptible compute. Running each workload on the cheapest provider saves 20-40% compared to a single-cloud Strategy. DodaTech runs compute-intensive workloads on GCP (preemptible), Windows workloads on Azure (Hybrid Benefit), and the rest on AWS — saving 25% vs going all-in on one provider.

flowchart TD
    A[Workload Type] --> B{Provider Advantage}
    B -->|Windows / SQL Server| C[Azure + Hybrid Benefit]
    B -->|Batch / ML / Data| D[GCP + Preemptible + CUD]
    B -->|General Purpose / K8s| E[AWS + Savings Plans + Spot]
    B -->|Multi-Region| F[Combination Strategy]
    C --> G[40-55% Off Licensing]
    D --> H[60-91% Off Compute]
    E --> I[30-72% Off Compute]
    F --> J[Best Price Per Workload]
    style J fill:#22c55e,color:#fff

1. Compute Cost Comparison

Comparing a standard 8 vCPU, 32GB RAM VM running 24x7 across providers.

# compute_cost_compare.py
providers = {
    "AWS": {
        "instance": "m5.2xlarge",
        "on_demand": 0.384,
        "savings_plan_1yr": 0.230,
        "savings_plan_3yr": 0.154,
        "spot_avg": 0.058
    },
    "Azure": {
        "instance": "D8s v3",
        "on_demand": 0.384,
        "reserved_1yr": 0.269,
        "reserved_3yr": 0.173,
        "spot_avg": 0.058
    },
    "GCP": {
        "instance": "n2-standard-8",
        "on_demand": 0.348,
        "cud_1yr": 0.243,
        "cud_3yr": 0.157,
        "preemptible": 0.035
    }
}

hours_per_month = 730

print(f"{'Provider':8} {'Instance':14} {'On-Demand':>12} {'1-Yr Commit':>12} {'3-Yr Commit':>12} {'Spot/Preempt':>12}")
print("-" * 70)
for name, p in providers.items():
    od = p['on_demand'] * hours_per_month
    yr1 = p['savings_plan_1yr' if 'savings' in p else 'reserved_1yr' if 'reserved' in p else 'cud_1yr'] * hours_per_month
    yr3 = p['savings_plan_3yr' if 'savings' in p else 'reserved_3yr' if 'reserved' in p else 'cud_3yr'] * hours_per_month
    spot = p.get('spot_avg', p.get('preemptible', 0)) * hours_per_month
    
    print(f"{name:8} {p['instance']:14} ${od:>8.2f}  ${yr1:>8.2f}  ${yr3:>8.2f}  ${spot:>8.2f}")

print()
print("GCP preemptible is 40-66% cheaper than AWS/Azure spot on this config")

Expected output:

Provider  Instance        On-Demand  1-Yr Commit  3-Yr Commit  Spot/Preempt
----------------------------------------------------------------------
AWS       m5.2xlarge      $280.32     $167.90      $112.42      $42.34
Azure     D8s v3          $280.32     $196.37      $126.29      $42.34
GCP       n2-standard-8   $254.04     $177.39      $114.61      $25.55

GCP preemptible is 40-66% cheaper than AWS/Azure spot on this config

2. Storage Cost Comparison

#!/bin/bash
# storage_cost_compare.sh — compare 10TB storage across providers

echo "=== 10TB Storage Cost Comparison (Monthly) ==="
echo ""

echo "Hot/Access tier:"
echo "  AWS S3 Standard:        \$230.00"
echo "  Azure Blob Hot:         \$180.00"
echo "  GCP Cloud Standard:     \$200.00"
echo ""

echo "Cool/Infrequent tier:"
echo "  AWS S3 Standard-IA:     \$125.00"
echo "  Azure Blob Cool:         \$100.00"
echo "  GCP Cloud Nearline:      \$100.00"
echo ""

echo "Archive tier:"
echo "  AWS S3 Deep Archive:    \$9.90"
echo "  Azure Blob Archive:     \$9.90"
echo "  GCP Cloud Archive:      \$12.00"
echo ""

echo "Cold tier (Azure-only):"
echo "  Azure Blob Cold:        \$40.00"
echo ""

# Lifecycle-optimized (30d hot -> 60d cool -> rest archive)
echo "Lifecycle-optimized (10TB, 30d hot + 60d cool + archive):"
echo "  AWS:  \$230*0.1 + \$125*0.2 + \$9.90*0.7 = \$39.93"
echo "  Azure: \$180*0.1 + \$100*0.2 + \$9.90*0.7 = \$34.93"
echo "  GCP:  \$200*0.1 + \$100*0.2 + \$12.00*0.7 = \$42.40"

Expected output:

=== 10TB Storage Cost Comparison (Monthly) ===

Hot/Access tier:
  AWS S3 Standard:        $230.00
  Azure Blob Hot:         $180.00
  GCP Cloud Standard:     $200.00

Cool/Infrequent tier:
  AWS S3 Standard-IA:     $125.00
  Azure Blob Cool:         $100.00
  GCP Cloud Nearline:      $100.00

Archive tier:
  AWS S3 Deep Archive:    $9.90
  Azure Blob Archive:     $9.90
  GCP Cloud Archive:      $12.00

Lifecycle-optimized (10TB, 30d hot + 60d cool + archive):
  AWS:  $39.93
  Azure: $34.93
  GCP:  $42.40

3. Data Transfer Cost Comparison

#!/bin/bash
# egress_cost_compare.sh — compare 10TB egress costs

echo "=== 10TB Internet Egress Cost Comparison ==="
echo ""

aws_cost=$(echo "10240 * 0.09 + 10 * 0.085" | bc)
azure_z1=$(echo "10 * 1024 * 0.087" | bc)
gcp_cost=$(echo "1024 * 0.12 + 9 * 1024 * 0.11" | bc)

echo "AWS:              \$${aws_cost}/month (tiered)"
echo "Azure (Zone 1):   \$${azure_z1}/month (tiered)"
echo "GCP:              \$${gcp_cost}/month (tiered)"
echo ""
echo "Cheapest for egress: Azure (Zone 1) for most regions"
echo "AWS CloudFront:    \$0.085/GB"
echo "Azure CDN:         \$0.087/GB"
echo "GCP Cloud CDN:     \$0.08/GB"

4. Kubernetes Cost Comparison

Managed Kubernetes control plane + worker nodes for a 10-node cluster.

#!/bin/bash
# kubernetes_cost_compare.sh

echo "=== Managed Kubernetes Cost Comparison (10 nodes, 24/7) ==="
echo ""

# Control plane costs
echo "Control plane (monthly):"
echo "  AWS EKS:           \$73.00 (per cluster)"
echo "  Azure AKS:         Free (management plane)"
echo "  GCP GKE Standard:  \$73.00 (per cluster)"
echo "  GCP GKE Autopilot: Free (per-pod pricing)"
echo ""

# Worker node costs (m5.2xlarge / D8s v3 / n2-standard-8)
echo "Worker nodes (10 x 8vCPU/32GB, on-demand):"
echo "  AWS EKS:  10 x \$280.32 = \$2,803.20/month"
echo "  Azure AKS: 10 x \$280.32 = \$2,803.20/month"
echo "  GCP GKE:   10 x \$254.04 = \$2,540.40/month"
echo ""

echo "Worker nodes with spot/preemptible:"
echo "  AWS EKS:  10 x \$42.34 = \$423.40/month"
echo "  Azure AKS: 10 x \$42.34 = \$423.40/month"
echo "  GCP GKE:   10 x \$25.55 = \$255.50/month"
echo ""

echo "GKE Autopilot (per-pod, no node management):"
echo "  ~\$1,800-2,200/month for equivalent capacity"

5. Total Cost of Ownership Calculator

# tco_calculator.py
def calculate_tco(workloads: list) -> dict:
    """Calculate total cost of ownership for multi-cloud workload placement."""
    
    results = {}
    
    for w in workloads:
        name = w['name']
        compute_hours = w['compute_hours']
        storage_gb = w['storage_gb']
        egress_gb = w['egress_gb']
        
        # AWS costs
        aws_compute = compute_hours * w['aws_rate']
        aws_storage = storage_gb * 0.023  # S3 Standard
        aws_egress = egress_gb * 0.09
        aws_total = aws_compute + aws_storage + aws_egress
        
        # Azure costs
        azure_compute = compute_hours * w['azure_rate']
        azure_storage = storage_gb * 0.018  # Hot
        azure_egress = egress_gb * 0.087
        azure_hybrid = w.get('windows_license', False)
        azure_total = azure_compute + azure_storage + azure_egress
        if azure_hybrid:
            azure_total *= 0.55  # Azure Hybrid Benefit discount
        
        # GCP costs
        gcp_compute = compute_hours * w['gcp_rate']
        gcp_storage = storage_gb * 0.020  # Standard
        gcp_egress = egress_gb * 0.12
        gcp_total = gcp_compute + gcp_storage + gcp_egress
        
        cheapest = min(
            [('AWS', aws_total), ('Azure', azure_total), ('GCP', gcp_total)],
            key=lambda x: x[1]
        )
        
        results[name] = {
            'AWS': round(aws_total, 2),
            'Azure': round(azure_total, 2),
            'GCP': round(gcp_total, 2),
            'cheapest': f"{cheapest[0]} (${cheapest[1]:.2f})",
            'recommendation': get_recommendation(name, w)
        }
    
    return results

def get_recommendation(name: str, w: dict) -> str:
    if w.get('windows_license'):
        return "Azure — Hybrid Benefit saves 45% on licensing"
    if w.get('batch_workload'):
        return "GCP — Preemptible VMs are 91% cheaper than on-demand"
    if w.get('kubernetes'):
        return "AWS or GCP — EKS for mature K8s ecosystem, GKE for simplicity"
    return "AWS — Broadest service catalog and flexible discount models"

workloads = [
    {"name": "Windows Web Server", "compute_hours": 730, "storage_gb": 500,
     "egress_gb": 1000, "aws_rate": 0.384, "azure_rate": 0.384,
     "gcp_rate": 0.348, "windows_license": True, "batch_workload": False, "kubernetes": False},
    {"name": "Batch ML Training", "compute_hours": 500, "storage_gb": 2000,
     "egress_gb": 200, "aws_rate": 0.768, "azure_rate": 0.768,
     "gcp_rate": 0.696, "windows_license": False, "batch_workload": True, "kubernetes": False},
    {"name": "Production K8s Cluster", "compute_hours": 730, "storage_gb": 1000,
     "egress_gb": 3000, "aws_rate": 0.384, "azure_rate": 0.384,
     "gcp_rate": 0.348, "windows_license": False, "batch_workload": False, "kubernetes": True},
]

results = calculate_tco(workloads)
for name, data in results.items():
    print(f"\n--- {name} ---")
    print(f"  AWS:   ${data['AWS']}")
    print(f"  Azure: ${data['Azure']}")
    print(f"  GCP:   ${data['GCP']}")
    print(f"  Best:  {data['cheapest']}")
    print(f"  Why:   {data['recommendation']}")

Expected output: --- Windows Web Server --- AWS: $828.32 Azure: $455.58 GCP: $643.04 Best: Azure ($455.58) Why: Azure — Hybrid Benefit saves 45% on licensing

--- Batch ML Training --- AWS: $1069.00 Azure: $1041.00 GCP: $962.00 Best: GCP ($962.00) Why: GCP — Preemptible VMs are 91% cheaper than on-demand

--- Production K8s Cluster --- AWS: $353.32 Azure: $350.00 GCP: $347.04 Best: GCP ($347.04) Why: AWS or GCP — EKS for mature K8s ecosystem, GKE for simplicity


## Common Mistakes

1. **Comparing list prices without discounts**: On-demand prices don't reflect real spend. Include Savings Plans, CUDs, and Hybrid Benefit in your comparison.

2. **Ignoring ecosystem lock-in costs**: Moving data between clouds is expensive. Factor in egress costs when designing <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> architectures.

3. **Not factoring in operational overhead**: Managing multiple clouds requires more people and tools. Add 15-20% overhead for <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> operations.

4. **Comparing different instance types**: An AWS m5.2xlarge is not directly comparable to an Azure D8s v3. Compare based on performance benchmarks for your workload.

5. **Forgetting support and enterprise discounts**: Enterprise Agreements with Microsoft, AWS Enterprise Support, or GCP CUDs can significantly reduce effective pricing.

## Practice Questions

1. **Which cloud provider is cheapest for <a href="/operating-systems/windows/">Windows</a> workloads?**
   **Answer:** Azure — Azure Hybrid Benefit reduces <a href="/operating-systems/windows/">Windows</a> Server and SQL Server licensing costs by 40-55%, making it significantly cheaper than AWS or GCP for Microsoft-dependent workloads.

2. **Which provider has the best spot/preemptible pricing?**
   **Answer:** GCP — Preemptible VMs offer up to 91% discount with no bidding system, compared to AWS Spot at 60-90% and Azure Spot at 60-90%. GCP also has no 24-hour limit on Spot VMs.

3. **How do you determine the best cloud provider for a workload?**
   **Answer:** Calculate TCO including compute, storage, data transfer, licensing, and operational overhead. Factor in available discounts (SPs, CUDs, Hybrid Benefit) and consider workload-specific performance requirements.

### Challenge

Design a <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> cost <a href="/design-patterns/strategy/">Strategy</a> for a company spending $200k/month across all three clouds: identify workloads that benefit from each provider's cost advantages, calculate TCO for migrating <a href="/operating-systems/windows/">Windows</a> workloads to Azure, batch processing to GCP, and Kubernetes to AWS, estimate monthly savings vs remaining on the current provider, and design a data flow architecture that minimizes cross-cloud egress.

## FAQ

<details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">Which cloud provider is cheapest overall?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>: There is no single cheapest provider. AWS is best for general-purpose with flexible discounts, Azure for Microsoft-licensed workloads, GCP for batch/ML with preemptible compute. The cheapest provider depends on the specific workload.</p>
</div></details><details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">How much does <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> management cost?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>: <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> management tools (CloudHealth, Cloudability, or custom solutions) cost 5-10% of cloud spend. Operational overhead for <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> teams is typically 15-20% higher than single-cloud.</p>
</div></details><details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">Can I use multiple cloud providers without paying cross-cloud egress?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>: Yes — design workloads to minimize cross-cloud data movement. Keep data in one cloud and only move results. Use direct interconnects (AWS Direct Connect + Azure ExpressRoute) for reduced rates.</p>
</div></details><details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">Do enterprise discounts change the cost comparison?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>: Significantly. AWS Enterprise Discount Program, Microsoft Enterprise Agreement, and GCP committed use contracts can reduce prices 20-50% off list. Always compare effective prices, not list prices.</p>
</div></details><details style="margin-bottom:12px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden"><summary style="cursor:pointer;padding:14px 18px;font-weight:600;font-size:1.05rem;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1e293b">Which provider has the best free tier?</summary><div style="padding:14px 18px;color:#475569;line-height:1.7;background:#fff"><p>: AWS offers 12 months of free tier with 750 hours/month of t2.micro. GCP offers $300 free credits for 90 days. Azure offers $200 credits for 30 days plus 12 months of popular services.</p>
</div></details>

## What's Next

| Topic | Description |
|-------|-------------|
| {{< card link="../multi-cloud-savings" title="Multi-Cloud Cost Strategy" icon="globe-alt" >}} | Strategic <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> optimization |
| {{< card link="../cloud-cost-tools" title="Cloud Cost Tools" icon="chip" >}} | Tools for managing <a href="/cloud-computing/multi-cloud-strategy/">Multi-Cloud</a> costs |

Related topics: <a href="/cloud-computing/cloud-cost-optimization/">Cloud Cost Optimization</a>, <a href="/cloud-computing/">Cloud Computing</a>, DevOps

*Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.*

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro