3 min read
On this page

Choosing a Cloud

The three major cloud providers are AWS, Google Cloud Platform (GCP), and Microsoft Azure. Each has hundreds of services, and the overlap is significant. The choice is less about which cloud is "best" and more about which cloud fits your team, your workload, and your existing ecosystem.

AWS (Amazon Web Services)

AWS launched in 2006 and has the largest market share, the most services, and the biggest ecosystem.

Strengths:
  - Most services (200+): if you need it, AWS probably has it
  - Largest partner and community ecosystem
  - Most availability zones and regions (30+ regions globally)
  - Enterprise adoption: most large companies use AWS
  - Mature managed services (RDS, Lambda, ECS, EKS)
  - Best marketplace for third-party tools

Weaknesses:
  - Complexity: 200+ services means a steep learning curve
  - Console UX: the management console is functional but cluttered
  - Pricing: notoriously complex, easy to overspend
  - Naming: service names are not always intuitive
    (Kinesis, SageMaker, Athena — what do these do?)
AWS is the default choice when:
  - You do not have a strong reason to choose something else
  - You need the broadest service catalog
  - Your team has AWS experience
  - You are hiring, and most candidates know AWS
  - You need specific services only AWS offers

Key AWS Services

Compute:     EC2, Lambda, ECS, EKS, Fargate
Storage:     S3, EBS, EFS
Database:    RDS, DynamoDB, ElastiCache, Aurora
Networking:  VPC, CloudFront, Route 53, ALB/NLB
Messaging:   SQS, SNS, EventBridge
Analytics:   Redshift, Athena, Kinesis
ML/AI:       SageMaker, Bedrock
DevOps:      CodePipeline, CodeBuild, CodeDeploy

GCP (Google Cloud Platform)

GCP launched in 2008 and is the third largest by market share but strong in specific domains.

Strengths:
  - Best Kubernetes experience (GKE) — Google built Kubernetes
  - Best data and ML services (BigQuery, Vertex AI)
  - Cleanest developer experience and console UX
  - Simpler pricing model than AWS
  - Strong networking (Google's global backbone)
  - Cloud Run: best serverless container platform

Weaknesses:
  - Fewer services than AWS
  - Smaller ecosystem and community
  - Enterprise sales and support historically weaker
  - Service discontinuation reputation (Google Graveyard concerns)
  - Fewer regions than AWS
GCP is the best choice when:
  - Kubernetes is central to your architecture
  - Data and analytics are core to your business
  - ML/AI workloads are a primary concern
  - You value developer experience and simplicity
  - You want BigQuery (nothing else compares for ad-hoc analytics)

Key GCP Services

Compute:     Compute Engine, Cloud Run, GKE, Cloud Functions
Storage:     Cloud Storage, Persistent Disk
Database:    Cloud SQL, Firestore, Cloud Spanner, Memorystore
Networking:  VPC, Cloud CDN, Cloud DNS, Cloud Load Balancing
Messaging:   Pub/Sub, Cloud Tasks
Analytics:   BigQuery, Dataflow, Dataproc
ML/AI:       Vertex AI, TPUs
DevOps:      Cloud Build, Cloud Deploy, Artifact Registry

Azure (Microsoft Azure)

Azure launched in 2010 and is the second largest by market share, with deep enterprise and Microsoft ecosystem integration.

Strengths:
  - Best integration with Microsoft products (Active Directory,
    Office 365, Windows Server, .NET)
  - Enterprise compliance and certifications
  - Hybrid cloud (Azure Arc, Azure Stack) for on-premise integration
  - Strong identity management (Azure AD / Entra ID)
  - Government cloud offerings
  - Broad regional coverage

Weaknesses:
  - Console UX is busy and inconsistent
  - Documentation quality varies by service
  - Naming is confusing (Azure has renamed services multiple times)
  - Can feel enterprise-heavy for smaller teams
  - Some services feel like they lag AWS equivalents
Azure is the best choice when:
  - Your organization runs on Microsoft (AD, Office 365, .NET)
  - Enterprise compliance is critical (FedRAMP, HIPAA, SOC2)
  - You need hybrid cloud (mixing on-premise and cloud)
  - Your team's expertise is in Microsoft technologies
  - You have an Enterprise Agreement with Microsoft

Key Azure Services

Compute:     Virtual Machines, Azure Functions, AKS, App Service
Storage:     Blob Storage, Managed Disks, Azure Files
Database:    Azure SQL, Cosmos DB, Azure Cache for Redis
Networking:  VNet, Azure CDN, Azure DNS, Application Gateway
Messaging:   Service Bus, Event Hubs, Event Grid
Analytics:   Synapse Analytics, Data Factory
ML/AI:       Azure ML, Azure OpenAI Service
DevOps:      Azure DevOps, Azure Pipelines

The Real Choice Factors

The cloud provider marketing will tell you about features. The real decision factors are more practical.

Team Expertise

Your team knows AWS well.
  → Use AWS.
  Period. The cost of retraining a team on a new cloud
  is massive. Productivity drops for 6-12 months.

Your team knows nothing.
  → AWS is the safest default (most hiring pool, most docs,
    most community answers).
  → GCP if you are Kubernetes-heavy or data-heavy.
  → Azure if you are a Microsoft shop.

Pricing Model

AWS pricing:
  - Complex. Hundreds of pricing dimensions.
  - Per-second billing for EC2.
  - Data transfer charges add up fast.
  - Reserved Instances and Savings Plans for discounts.

GCP pricing:
  - Simpler. Sustained use discounts applied automatically.
  - Per-second billing.
  - Committed Use Discounts for predictable workloads.
  - Free tier is generous (Cloud Run, BigQuery).

Azure pricing:
  - Similar complexity to AWS.
  - Enterprise Agreements can provide large discounts.
  - Reserved Instances for VMs and databases.
  - Azure Hybrid Benefit (use existing Windows licenses).

Specific Services You Need

Sometimes one service makes the decision.

"We need BigQuery-class analytics"     → GCP
"We need Active Directory integration" → Azure
"We need the broadest service catalog" → AWS
"We need TPUs for ML training"         → GCP
"We need Azure OpenAI Service"         → Azure
"We need Lambda@Edge for CDN compute"  → AWS

Multi-Cloud: Usually a Mistake

Multi-cloud means running production workloads on two or more cloud providers simultaneously. It sounds like a good idea (avoid vendor lock-in, best of breed). In practice, it is almost always a mistake.

The multi-cloud promise:
  "We will avoid vendor lock-in and use the best services
   from each provider."

The multi-cloud reality:
  - Engineers must learn two or more clouds
  - Networking between clouds is slow and expensive
  - You use the lowest common denominator of features
  - Operational complexity doubles (or triples)
  - Security policies must cover multiple clouds
  - Monitoring and alerting across clouds is painful
  - You need expertise in both, which is hard to hire for

When Multi-Cloud Makes Sense

Legitimate multi-cloud scenarios:
  - Acquisitions: company A uses AWS, company B uses GCP
  - Specific service: primary on AWS but using BigQuery for analytics
  - Compliance: data sovereignty requires specific regions only
    available on one provider
  - SaaS products: customers demand deployment on their cloud
  
These are not "multi-cloud strategy." They are pragmatic decisions
for specific constraints.

The Real Alternative to Lock-In

Instead of multi-cloud:
  1. Use open standards where possible (Kubernetes, Terraform,
     PostgreSQL, OpenTelemetry)
  2. Abstract cloud-specific code behind interfaces
  3. Keep data portable (standard formats, documented schemas)
  4. Accept that some lock-in is fine (S3 API is a de facto standard)
  5. Evaluate switching costs periodically
  
The cost of multi-cloud is paid every day.
The cost of switching clouds is paid once.
For most companies, the math favors single-cloud.

Pick One, Go Deep

The best strategy for most organizations is to pick one cloud provider and become expert at it.

Benefits of going deep on one cloud:
  - Engineers develop deep expertise
  - You use managed services instead of building abstractions
  - Operations is simpler (one set of tools, one set of policies)
  - Hiring is easier (candidates need one cloud's skills)
  - Vendor relationship gives leverage for discounts
  - Support is simpler (one support contract)
Decision framework:
  1. What does your team know? Start there.
  2. No team expertise? Default to AWS (largest hiring pool).
  3. Kubernetes-native or data-heavy? Consider GCP.
  4. Microsoft-heavy enterprise? Consider Azure.
  5. Commit for 1-3 years. Re-evaluate if circumstances change.
  6. Do not split workloads across clouds without a specific,
     compelling reason.

Real-World Example

A series B startup evaluated all three clouds. Their CTO made a spreadsheet comparing 40 services across providers. The evaluation took six weeks. In the end, they chose GCP because BigQuery was a significant advantage for their analytics-heavy product.

Two years later, they were happy with the choice. BigQuery processed 2 TB of data daily without operational overhead. GKE ran their microservices reliably. Cloud Run handled their API with auto-scaling to zero.

The lesson was not that GCP is the best cloud. It was that they had a specific technical requirement (analytics at scale) that made the decision clear. Without that requirement, they would have chosen AWS because their team had more AWS experience.

Common Pitfalls

  • Analysis paralysis -- Spending months comparing clouds when any of them would work; pick one and start building
  • Multi-cloud by default -- Adopting multi-cloud without a specific reason doubles complexity and halves expertise
  • Choosing based on cost alone -- The cheapest cloud for compute might be the most expensive for storage or data transfer; model your actual workload
  • Ignoring team expertise -- Choosing GCP when your team knows AWS means six months of slow productivity; factor in learning costs
  • Vendor lock-in paranoia -- Avoiding all managed services to stay "portable" means you build and maintain everything yourself; some lock-in is acceptable
  • Following trends -- Choosing a cloud because a blog post said it was better, not because it fits your needs

Key Takeaways

  • AWS has the most services and the biggest ecosystem; it is the default choice when you have no strong reason to choose otherwise
  • GCP excels at Kubernetes, data analytics (BigQuery), and ML; best for data-heavy and Kubernetes-native organizations
  • Azure is strongest for enterprises with Microsoft ecosystems and hybrid cloud requirements
  • The real choice factors are team expertise, pricing model, and specific services you need
  • Multi-cloud is usually a mistake that doubles complexity without delivering on the promise of avoiding lock-in
  • Pick one cloud, go deep, and use open standards where possible to keep your options open