Loading content...
Choosing a cloud provider is one of the most consequential decisions in system architecture. While all major providers offer similar core capabilities, they differ significantly in their strengths, pricing models, service ecosystems, and cultural philosophies.
The choice isn't just technical—it affects your team's learning curve, your operational practices, your vendor relationships, and often your hiring pipeline. Switching providers after substantial investment is extraordinarily expensive, making this a decision that deserves careful analysis.
This page examines the three dominant public cloud providers—Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP)—across multiple dimensions to help you make an informed decision.
By the end of this page, you will understand the strengths and weaknesses of each major cloud provider, their service ecosystems, pricing philosophies, and ideal use cases. You'll have a framework for evaluating which provider best fits your specific architectural requirements.
Understanding the market position of each provider provides context for their service offerings and strategic directions.
| Provider | Market Share | Annual Revenue | Geographic Reach | Number of Services |
|---|---|---|---|---|
| AWS | ~31% | ~$90B+ | 33 regions, 105 AZs | 200+ |
| Azure | ~24% | ~$80B+ | 60+ regions | 200+ |
| Google Cloud | ~11% | ~$35B+ | 38 regions, 114 AZs | 100+ |
Each provider's origins shape their current offerings and corporate DNA:
Amazon Web Services (AWS)
Microsoft Azure
Google Cloud Platform (GCP)
Provider DNA influences everything from console UX to support quality to roadmap priorities. AWS feels like infrastructure built by infrastructure engineers. Azure feels like enterprise software. GCP feels like developer tooling. None is objectively better—the question is which culture aligns with your organization.
All three providers offer equivalent services in core categories, though with different names, features, and maturity levels.
| Capability | AWS | Azure | GCP | Notes |
|---|---|---|---|---|
| Virtual Machines | EC2 | Virtual Machines | Compute Engine | All mature; AWS offers most instance types |
| Serverless Functions | Lambda | Functions | Cloud Functions | Lambda most mature; GCP has best cold start |
| Container Orchestration | EKS | AKS | GKE | GKE considered most advanced; best K8s experience |
| Serverless Containers | Fargate, App Runner | Container Apps | Cloud Run | Cloud Run most elegant; simplest developer experience |
| Batch Computing | Batch | Batch | Batch | AWS Batch most feature-rich |
| Category | AWS | Azure | GCP | Notes |
|---|---|---|---|---|
| Managed PostgreSQL/MySQL | RDS, Aurora | Database for PostgreSQL/MySQL | Cloud SQL, AlloyDB | Aurora/AlloyDB for enhanced performance |
| Managed SQL Server | RDS for SQL Server | SQL Database | Cloud SQL | Azure native; best integration |
| Document (NoSQL) | DynamoDB, DocumentDB | Cosmos DB | Firestore | DynamoDB most proven at scale |
| Multi-Model | DynamoDB, DocumentDB, Neptune | Cosmos DB | Firestore, Bigtable | Cosmos DB most flexible multi-model |
| Data Warehouse | Redshift | Synapse Analytics | BigQuery | BigQuery considered most innovative |
| In-Memory Cache | ElastiCache | Cache for Redis | Memorystore | All essentially managed Redis/Memcached |
| Capability | AWS | Azure | GCP | Notes |
|---|---|---|---|---|
| Virtual Network | VPC | VNet | VPC | AWS most mature; GCP simplest networking model |
| Load Balancing | ELB/ALB/NLB | Load Balancer | Cloud Load Balancing | GCP uniquely global by default |
| CDN | CloudFront | CDN | Cloud CDN | All capable; CloudFront integrates tightly with AWS |
| DNS | Route 53 | DNS | Cloud DNS | Route 53 most feature-rich (health checks, routing policies) |
| API Gateway | API Gateway | API Management | API Gateway/Apigee | Apigee most enterprise-focused |
| Type | AWS | Azure | GCP | Notes |
|---|---|---|---|---|
| Object Storage | S3 | Blob Storage | Cloud Storage | S3 is the standard; others are compatible clones |
| File Storage | EFS, FSx | Files, NetApp Files | Filestore | AWS offers most file system options |
| Block Storage | EBS | Managed Disks | Persistent Disk | All comparable; vendor-specific optimizations |
| Archive | S3 Glacier | Archive Storage | Archive Storage | Similar pricing; S3 Glacier most flexible tiers |
For core services, feature parity between providers has largely converged. If you're choosing between providers based on whether they have 'a managed PostgreSQL'—they all do. Differentiation comes from edge cases, integration depth, and specialized services rather than core capability gaps.
Beyond equivalent core services, each provider has areas where they demonstrably excel:
AWS excels at breadth because Amazon has been building cloud services the longest. Azure excels at enterprise integration because Microsoft knows enterprise IT. GCP excels at data/ML because Google's core competency is data and algorithms. Choose based on what you need most, not what's 'objectively best.'
Cloud pricing is notoriously complex, but understanding the philosophies behind each provider's pricing helps navigate the complexity.
AWS: Comprehensive but Complex
Azure: Enterprise-Aligned
Google Cloud: Simpler and Often Cheaper
Consider a reference workload: 4 vCPU, 16GB RAM general-purpose VM running 24/7 in US regions:
On-Demand 1-Year Reserved 3-Year Reserved
AWS (m6i.xlarge) ~$175/month ~$110/month ~$75/month
Azure (D4s_v5) ~$170/month ~$105/month ~$70/month
GCP (e2-standard-4) ~$135/month ~$85/month ~$60/month
(includes sustained use discount)
Note: These are illustrative figures; actual pricing varies by region, changes over time, and depends on specific configurations.
All providers charge for data leaving their network (egress), and these charges often exceed compute costs for data-intensive applications. AWS and Azure charge ~$0.09/GB for internet egress; GCP charges ~$0.12/GB for premium tier but offers cheaper standard tier. Factor egress into your cost models—it's frequently the largest surprise on cloud bills.
| Provider | Free Tier Duration | Highlights |
|---|---|---|
| AWS | 12 months + Always Free tier | 750 hours EC2 t2.micro, 5GB S3, 25GB DynamoDB, Lambda 1M requests/month forever |
| Azure | 12 months + Always Free tier | 750 hours B1S VM, 5GB Blob Storage, 1M Functions requests/month forever |
| GCP | 90 days $300 credit + Always Free tier | $300 credit to try anything; e2-micro VM, 5GB Cloud Storage, BigQuery 1TB/month forever |
Beyond features and pricing, operational factors significantly impact your day-to-day experience with a cloud provider.
AWS:
Azure:
GCP:
| Tier | AWS | Azure | GCP |
|---|---|---|---|
| Free | Documentation, forums | Documentation, forums | Documentation, forums |
| Developer | $29/month, business hours email | $29/month, business hours email | $29/month, business hours email |
| Business/Standard | Starting ~$100/month, 24/7 phone/chat | Starting ~$100/month, 24/7 | Starting $100/month, 24/7 |
| Enterprise | TAM, 15-min response for critical | TAM, faster response times | TAM, 15-min response for critical |
AWS Console:
Azure Portal:
GCP Console:
All providers have had significant outages. Historical patterns:
Key insight: All providers have SLAs promising 99.9-99.99% availability for most services. The question is not whether outages will occur—they will—but how you design for resilience across them (multi-region, multi-cloud, graceful degradation).
Consider talent availability in your hiring market. AWS skills are most common—easier to hire. Azure skills are common in enterprise IT circles. GCP skills are growing but still less common. If you're building a team, provider choice affects your talent pool.
Given this information, how do you choose? Here's a decision framework based on common scenarios:
For many standard workloads—running containers, using managed databases, storing objects—you could succeed on any provider. If you have no strong differentiating factors, consider which provider your team knows best or which is cheapest. Don't over-engineer the decision; any provider can handle the vast majority of architectures.
The question of multi-cloud versus single-cloud is frequently debated. Let's examine the realistic considerations:
Multi-cloud is often advocated by vendors selling multi-cloud management tools. The operational complexity is substantial: multiple IAM systems, multiple networking models, multiple billing relationships, engineers needing expertise across platforms. Most organizations should default to single-cloud and adopt multi-cloud only for specific, compelling reasons.
Full cloud portability is usually impractical, but you can manage lock-in:
Low Lock-In (Easier to Migrate):
High Lock-In (Harder to Migrate):
Mitigation Strategy:
We've comprehensively examined the major cloud providers. Let's consolidate the key takeaways:
What's next:
You've completed Module 1: Cloud Computing Models. You now understand the fundamental service models (IaaS, PaaS, SaaS), managed services, cloud-native design principles, and how to compare cloud providers. In Module 2, we'll explore Regions and Availability Zones—designing for geographic distribution, high availability, and disaster recovery in cloud architectures.
Congratulations! You've mastered the foundational concepts of cloud computing models. You can now evaluate cloud service models, understand managed services, apply cloud-native design principles, and make informed decisions about cloud provider selection. These fundamentals underpin every cloud architecture discussion that follows.