Choosing a cloud provider isn’t a technical decision — it’s a business decision with 5-10 year implications. This guide compares AWS, Azure, and GCP across the dimensions that actually matter for enterprise deployments, not marketing bullet points. Switching providers after 2+ years of investment costs $2-10M in re-engineering, so getting this right matters.
The short answer: if you’re a Microsoft shop, choose Azure. If you need the best data/ML platform, choose GCP. For everything else, AWS is the safe default. The longer answer follows.
Executive Summary
| Factor | AWS | Azure | GCP |
|---|
| Market share | 31% | 25% | 11% |
| Strength | Broadest service catalog | Enterprise/Microsoft integration | AI/ML, data analytics |
| Best for | Default choice, startups → enterprise | Microsoft shops (M365, D365) | Data-heavy, AI-first orgs |
| Weakness | Complex pricing, UI sprawl | Service reliability | Enterprise adoption, support |
| Enterprise discount | EDP (commit 1-5 years) | MACC (commit $$) | CUD + SUD |
| Global regions | 33+ | 60+ | 40+ |
| Availability zones | 3+ per region | 3+ per region | 3+ per region |
| Free tier | 12 months + always-free | 12 months + always-free | 12 months + always-free |
Compute Comparison
| Feature | AWS (EC2) | Azure (VMs) | GCP (Compute Engine) |
|---|
| Instance types | 750+ | 800+ | 200+ |
| Spot/preemptible | Spot (up to 90% savings) | Spot VMs (up to 90%) | Spot (up to 91%) |
| Serverless compute | Lambda, Fargate | Functions, Container Apps | Cloud Run, Cloud Functions |
| Kubernetes | EKS | AKS (free control plane) | GKE (Autopilot) |
| GPU availability | Broadest (A100, H100) | Good (A100, H100) | TPU + GPU (best for ML training) |
| Custom machine types | No (fixed sizes only) | Limited (constrained sizes) | Yes (any vCPU/memory combo) |
| Live migration | No | Yes | Yes (transparent maintenance) |
Pricing Example: General Purpose VM (8 vCPU, 32GB RAM)
| AWS (m6i.2xlarge) | Azure (D8s_v5) | GCP (n2-standard-8) |
|---|
| On-demand (monthly) | $282 | $278 | $263 |
| 1-year reserved | $178 | $167 | $166 (CUD) |
| 3-year reserved | $112 | $106 | $100 (CUD) |
| Spot/preemptible | ~$85 | ~$84 | ~$79 |
GCP advantage: Sustained-use discounts (SUD) apply automatically — no commitment required. You get up to 30% off just by running a VM for a full month.
Serverless Comparison
| Aspect | AWS Lambda | Azure Functions | GCP Cloud Run |
|---|
| Max memory | 10 GB | 14 GB | 32 GB |
| Max execution time | 15 min | 10 min (consumption) | 60 min |
| Cold start | 100-500ms | 200-1000ms | 0 (min instances) |
| Container support | Container images | Container images | Native containers |
| Pricing model | Per-request + duration | Per-execution + duration | Per-request + CPU/memory |
| Best for | Event-driven micro | Azure ecosystem | Container-based APIs |
Storage Comparison
| Feature | AWS | Azure | GCP |
|---|
| Object storage | S3 | Blob Storage | Cloud Storage |
| Block storage | EBS | Managed Disks | Persistent Disks |
| File storage | EFS | Azure Files | Filestore |
| Archive | S3 Glacier | Archive Storage | Archive Storage |
| Object storage cost (GB/mo) | $0.023 | $0.018 | $0.020 |
Egress Costs (The Hidden Gotcha)
| Provider | First 100 GB/mo | 1 TB/mo | 10 TB/mo |
|---|
| AWS | Free | $0.09/GB ($90) | $0.085/GB ($850) |
| Azure | Free | $0.087/GB ($87) | $0.083/GB ($830) |
| GCP | Free | $0.12/GB ($120) | $0.085/GB ($850) |
| GCP (Premium tier) | Free | $0.12/GB | $0.11/GB |
:::caution[Data Egress Warning]
Egress costs are where cloud bills explode. A multi-region or multi-cloud architecture serving 50 TB/month of egress can cost $4,000-5,000/month in egress alone. Model this before committing.
:::
Database & Data Services
| Service Type | AWS | Azure | GCP |
|---|
| Managed PostgreSQL | RDS, Aurora | Azure DB for PostgreSQL | Cloud SQL, AlloyDB |
| Managed MySQL | RDS, Aurora | Azure DB for MySQL | Cloud SQL |
| NoSQL document | DynamoDB | Cosmos DB | Firestore |
| Data warehouse | Redshift | Synapse Analytics | BigQuery |
| Streaming | Kinesis | Event Hubs | Pub/Sub + Dataflow |
| Best overall | Broadest options | Cosmos DB multi-model | BigQuery (best DW) |
Data Warehouse Cost Comparison (1 TB scan)
| Provider | Service | Model | Cost per TB scanned |
|---|
| AWS | Redshift Serverless | Per-RPU-hour | ~$8.00 |
| Azure | Synapse Serverless | Per-TB processed | ~$5.00 |
| GCP | BigQuery | Per-TB scanned | $6.25 ($0 with flat-rate) |
BigQuery advantage: Flat-rate pricing ($2,000/month for 100 slots) is unbeatable for teams running hundreds of queries daily. On-demand is $6.25/TB, competitive with alternatives.
AI/ML Services
| Capability | AWS | Azure | GCP |
|---|
| ML platform | SageMaker | Azure ML | Vertex AI |
| LLM access | Bedrock (Claude, Llama) | OpenAI Service | Gemini, Model Garden |
| AutoML | SageMaker Autopilot | Azure AutoML | Vertex AutoML |
| Custom training | Good | Good | Best (TPU access) |
| Pre-trained APIs | Rekognition, Comprehend | Cognitive Services | Vision, NLP, Speech |
| Best overall | Good breadth | OpenAI integration | Best for custom ML |
LLM API Comparison
| Model | Provider | Input (per 1M tokens) | Output (per 1M tokens) |
|---|
| GPT-4o | Azure OpenAI | $5.00 | $15.00 |
| Claude 3.5 Sonnet | AWS Bedrock | $3.00 | $15.00 |
| Gemini 2.0 Flash | GCP Vertex AI | $0.10 | $0.40 |
| Llama 3.1 70B | AWS Bedrock | $2.65 | $3.50 |
Azure advantage: If you need OpenAI models with enterprise compliance (SOC 2, data residency), Azure OpenAI Service is the only option.
Enterprise Features
| Feature | AWS | Azure | GCP |
|---|
| Identity | IAM (custom) | Entra ID (AD integration) | Cloud IAM + Workspace |
| Hybrid cloud | Outposts | Azure Arc + Stack HCI | Anthos |
| Compliance certs | 143+ | 100+ | 90+ |
| Government cloud | GovCloud | Azure Government | Assured Workloads |
| Microsoft integration | Limited | Native (M365, D365, Power Platform) | Limited |
| Support tiers | Business ($100/mo) → Enterprise | Standard → Premier | Standard → Premium |
Support Tier Comparison
| Tier | AWS | Azure | GCP |
|---|
| Free | Forums, docs | Forums, docs | Forums, docs |
| Basic paid | $100/mo (Business) | $100/mo (Standard) | $250/mo (Standard) |
| Premium | $15,000/mo (Enterprise) | Custom (Premier/Unified) | $12,500/mo (Premium) |
| Dedicated TAM | Enterprise On-Ramp ($5,500) | Unified | Premium |
| Response time (P1) | < 15 min (Enterprise) | < 15 min (Premier) | < 15 min (Premium) |
Azure wins if: Your org runs Microsoft 365, Dynamics 365, or Active Directory. The integration is unmatched. Single sign-on, Conditional Access, compliance boundaries — it all works natively.
Multi-Cloud Strategy
When Multi-Cloud Makes Sense
- Regulatory requirement for vendor diversification
- Acquisition brings a second cloud (don’t consolidate Day 1)
- Specific service superiority (BigQuery + AWS everything else)
- Geographic requirements that one provider can’t serve
When Multi-Cloud Is Overhead
- “Avoiding vendor lock-in” (you’ll lock into cloud-agnostic tooling instead)
- Team < 50 engineers (can’t staff expertise in two clouds)
- No regulatory driver (complexity cost > diversification benefit)
Multi-Cloud Cost of Ownership
| Cost Factor | Single Cloud | Multi-Cloud | Delta |
|---|
| Engineering team expertise | 1 platform team | 2 platform teams | +50-100% team cost |
| Networking | Internal VPC | Cross-cloud transit | +$5K-50K/mo |
| Tooling abstraction | Cloud-native | Terraform + Crossplane | +20% dev time |
| Compliance audit scope | 1 provider | 2 providers | +30% audit cost |
Migration Decision Framework
Currently on-prem with Microsoft stack (AD, Exchange, D365)?
└── Yes → Azure (70% of the time)
Need best-in-class data warehouse / analytics?
└── Yes → GCP (BigQuery is unmatched for price/performance)
Need broadest service catalog + mature ecosystem?
└── Yes → AWS
Already invested > $1M ARR in one provider?
└── Stay. Re-platforming cost rarely justifies switching.
AI/ML is your primary workload?
└── Need OpenAI models → Azure
└── Need custom training (TPU) → GCP
└── Need model variety (Bedrock) → AWS
Negotiation Tips
| Strategy | Details |
|---|
| Get competing quotes | Even if you know your choice, get all 3 quotes — use them as leverage |
| Commit for discounts | 1-3 year commits get 20-50% off (EDP/MACC/CUD) |
| Bundle services | M365 + Azure or AWS Organizations + Support = better rates |
| Time your negotiation | Cloud reps have quarterly targets — negotiate end of Q2/Q4 |
| Start small, grow in | Don’t commit your entire estate Day 1 — prove value, then expand |
| Track consumption | Negotiate based on actual spend, not projected (avoid over-committing) |
Checklist
:::note[Source]
This guide is derived from operational intelligence at Garnet Grid Consulting. For cloud strategy consulting, visit garnetgrid.com.
:::