“Should we be on AWS, GCP, or Azure?” I get this question in about a quarter of my engagements, and the answer is almost never about the technology. All three major cloud providers are capable of running virtually any workload. The features are largely commoditized. The real decision is about your team, your data, and your business relationships.
I spent eight years at Google Cloud, so I’ll disclose my bias upfront. But my job now is to give clients pragmatic advice, not to sell cloud services. Here’s how I actually think through this decision.
The Honest Assessment of Each Provider
AWS has the broadest service catalog, the largest market share (~32%), and the deepest talent pool. If you post a job listing requiring AWS experience, you’ll get 3-5x more qualified candidates than for GCP or Azure equivalents. AWS’s advantage is ecosystem maturity: whatever you need to do, someone has done it on AWS before and written a blog post about it. The downside is that AWS’s pricing is genuinely complex — 200+ services, each with their own billing model — and cost optimization requires ongoing discipline.
GCP has the best data and ML infrastructure (BigQuery remains unmatched for analytics workloads), the strongest Kubernetes support (they invented it), and arguably the cleanest developer experience. GCP’s network infrastructure is exceptional — their global fiber network means lower latency for applications serving international users. The downside is smaller market share (~11%), which means a thinner talent pool and fewer third-party integrations that are GCP-native.
Azure dominates in enterprises that are already Microsoft shops. If your company runs on Office 365, Active Directory, and .NET, Azure’s integration with these services is seamless in ways that AWS and GCP can’t match. Azure’s hybrid cloud story (Azure Arc, Azure Stack) is also the strongest if you have on-premises infrastructure that isn’t going away. The downside is that Azure’s developer experience can feel clunky compared to GCP, and their documentation, while improving, has historically been harder to navigate.
The Decision Factors That Actually Matter
Team expertise. If your engineering team has 3 years of AWS experience, switching to GCP because it has a better Kubernetes service will cost you 3-6 months of reduced productivity while the team relearns everything. The theoretical superiority of one service rarely justifies the concrete cost of retraining. Hire for the cloud you’re on, or choose the cloud your team already knows.
Data gravity. Data is heavy. Once you have petabytes in S3 or BigQuery, moving it is expensive, slow, and risky. If your business generates data in one cloud ecosystem — because your analytics platform, your data warehouse, or your ML training pipelines are there — that’s where your applications should probably live too. Moving compute to data is almost always cheaper than moving data to compute.
Existing vendor relationships. If your company has an Enterprise Agreement with Microsoft, Azure credits might make it the cheapest option regardless of technical merits. If you’re a startup in a Google Cloud or AWS startup program, use those credits. Pricing negotiations at the enterprise level can swing costs 20-40% between providers, dwarfing the technical differences.
Compliance requirements. Certain industries and government contracts specify approved cloud providers. FedRAMP High authorization, specific data residency requirements, or industry-specific compliance frameworks may narrow your choices before technical evaluation begins.
The Multi-Cloud Trap
“We’ll use multiple clouds to avoid vendor lock-in” sounds strategically prudent. In practice, it means your team needs expertise in two or three cloud platforms, your infrastructure-as-code templates are duplicated, your monitoring and security tools need to span providers, and your negotiating leverage with any single provider decreases because you’re splitting spend.
I’ve seen exactly one legitimate multi-cloud architecture in my consulting work: a healthcare platform that needed Azure for its Microsoft-integrated hospital customers and GCP for its analytics pipeline because BigQuery was the only service that met their performance requirements at scale. That’s a concrete, specific reason.
“Avoiding vendor lock-in” is not a concrete reason. The lock-in risk of using cloud-native services is real but manageable — use infrastructure-as-code, containerize your workloads, and abstract your data access layer. These practices make migration possible if you ever need it, without paying the ongoing tax of running multi-cloud.
My Recommendation Framework
For startups with no existing infrastructure: AWS is the safe default. Largest talent pool, most tutorials and documentation, most third-party integrations. You can’t go wrong.
For data-intensive or ML-heavy companies: GCP if you can find the talent. BigQuery, Vertex AI, and GKE are genuinely best-in-class.
For Microsoft-native enterprises: Azure is the natural fit. Fighting the integration gravity of your existing Microsoft investment costs more than it saves.
For everyone: pick one and go deep. The companies that struggle with cloud aren’t struggling because they chose the wrong provider. They’re struggling because they spread their expertise too thin, don’t invest in platform engineering, or treat cloud infrastructure as someone else’s problem.
Related: Cloud Cost Optimization | What Is Kubernetes and Do You Need It | When to Replatform or Rewrite
