Why Cloud Platform Choice Matters Less Than the Underlying Concepts

Every major cloud platform is ultimately renting out the same small set of underlying building blocks: virtual compute, object and block storage, managed databases, networking, and identity/access control. AWS, Microsoft Azure, and Google Cloud Platform (GCP) each implement these with their own service names, pricing models, and console interfaces, but an engineer who deeply understands the concepts, not just one vendor's product names, can move between all three with relatively little friction. This guide compares the three platforms across the areas that actually matter when choosing one for a project or a career path: compute, storage, networking, identity, pricing philosophy, and market position.

Compute: Virtual Machines, Containers, and Serverless

All three platforms offer the same three-tier compute model. At the base is the virtual machine: AWS calls this EC2 (Elastic Compute Cloud), Azure calls it Virtual Machines, and GCP calls it Compute Engine. All three let you choose an instance size (CPU/RAM combination), an operating system image, and pay by the second or hour for as long as the instance runs.

One level up is container orchestration. All three offer managed Kubernetes: AWS's EKS (Elastic Kubernetes Service), Azure's AKS (Azure Kubernetes Service), and GCP's GKE (Google Kubernetes Engine) โ€” notably, GKE is generally considered the most mature and polished of the three, since Google originally created Kubernetes internally (as the successor to its internal Borg system) before open-sourcing it, and GKE still tends to ship new Kubernetes features first. AWS and Azure also offer simpler, less Kubernetes-specific container services (AWS ECS/Fargate, Azure Container Apps) for teams who want managed containers without taking on full Kubernetes operational complexity.

At the top is serverless compute: AWS Lambda, Azure Functions, and Google Cloud Functions (alongside GCP's more modern Cloud Run, which runs full containers on a serverless, scale-to-zero model rather than single-function code snippets). All three charge per invocation and per unit of compute time, with the function scaling to zero, and to zero cost, when idle.

Storage: Object, Block, and File

Object storage โ€” for storing files, backups, static assets, and unstructured data at massive scale โ€” is AWS S3 (Simple Storage Service, the service that effectively established the entire category and remains the default reference point competitors are compared against), Azure Blob Storage, and Google Cloud Storage (GCS). All three offer tiered storage classes trading off retrieval speed against cost (frequent-access, infrequent-access, and archival/cold tiers), and all three integrate tightly with their platform's CDN and static-website-hosting features.

Block storage โ€” the virtual hard drives attached to a running compute instance โ€” is AWS EBS (Elastic Block Store), Azure Managed Disks, and GCP Persistent Disk. Managed file storage (a shared network filesystem multiple instances can mount simultaneously) is AWS EFS, Azure Files, and GCP Filestore.

Networking Fundamentals

All three platforms organize networking around a private, isolated virtual network: AWS VPC (Virtual Private Cloud), Azure VNet (Virtual Network), and GCP VPC (GCP reuses the same term as AWS, but its VPCs are global by default, spanning all regions in a single network, whereas an AWS or Azure virtual network is scoped to a single region unless explicitly peered โ€” a meaningful architectural difference for globally distributed applications). Within a virtual network, all three support subnets, route tables, firewall/security-group rules controlling inbound and outbound traffic, and managed load balancers distributing traffic across multiple compute instances.

Identity and Access Management

Identity and Access Management (IAM) controls exactly which identity (a human user, an application, or a service) is permitted to perform exactly which action on exactly which resource โ€” it is the single most consequential system to get right on any cloud platform, since misconfigured permissions are among the most common root causes of real security incidents.

AWS IAM is resource-centric and explicit: nothing is allowed by default, and JSON policy documents are attached to users, groups, or roles, explicitly allowing specific actions on specific resource identifiers (ARNs). Azure's identity system is built on Azure Active Directory (rebranded Microsoft Entra ID), which is simultaneously a cloud-resource permission system and a full enterprise identity provider โ€” a natural fit for large organizations that already run on-premises Active Directory for employee logins, since the same directory extends into the cloud. Google Cloud IAM organizes permissions around predefined and custom roles applied at the project, folder, or organization level within a strict resource hierarchy, which tends to produce a flatter, more easily audited structure than AWS's more granular but often sprawling policy documents.

Across all three, the same core discipline applies: grant the minimum permission actually required (the principle of least privilege), prefer short-lived roles over long-lived access keys attached to individual users, and audit permissions on a regular schedule rather than only at initial setup.

Pricing Philosophy and Cost Management

All three platforms share a pay-as-you-go core model with no large upfront commitment required, but each offers discount mechanisms for predictable workloads: AWS Reserved Instances and Savings Plans, Azure Reserved VM Instances, and GCP Committed Use Discounts โ€” all trading a 1-3 year usage commitment for a meaningfully lower effective hourly rate, typically 30-60% below on-demand pricing. GCP is generally considered to have the most straightforward list pricing and also automatically applies "sustained use discounts" without requiring any upfront commitment at all, a smaller but genuinely convenience-focused difference from AWS and Azure's more manual discount-purchasing model.

The single most common cloud cost mistake, on any platform, is not architectural but operational: forgetting to shut down or scale down resources that are no longer needed. Idle development environments, oversized database instances provisioned for peak load but never scaled back down, and orphaned storage volumes from deleted instances are the recurring, boring, and entirely avoidable sources of cloud bill surprises.

Side-by-Side Comparison

CategoryAWSAzureGoogle Cloud
Virtual machinesEC2Virtual MachinesCompute Engine
Managed KubernetesEKSAKSGKE (most mature โ€” Google created Kubernetes)
Serverless functionsLambdaFunctionsCloud Functions / Cloud Run
Object storageS3Blob StorageCloud Storage (GCS)
Identity / IAMIAM (explicit policy documents)Entra ID (full enterprise identity provider)Cloud IAM (role-based, project hierarchy)
Virtual network scopeRegional (VPC)Regional (VNet)Global by default (VPC)
Market positionLargest market share, broadest service catalogStrongest in large enterprises already on Microsoft 365/ADStrong in data/ML-heavy workloads, BigQuery, Kubernetes-native

A Decision Framework for Choosing a Platform

For an individual engineer choosing what to learn, or a small team choosing a platform for a new project, a few practical questions cut through most of the decision: Does your target employer, client base, or industry already standardize on one platform? That constraint usually overrides any generic "which is best" comparison. Does your workload lean heavily on data analytics or machine learning? Google Cloud's BigQuery and Vertex AI tooling are frequently cited as best-in-class for that specific niche. Is your organization already deeply invested in Microsoft's ecosystem (Active Directory, Microsoft 365, .NET)? Azure's tight integration with those tools is a genuine, not just marketing, advantage there. Otherwise, AWS's larger market share, broader service catalog, and larger pool of available talent and learning material make it the reasonable default starting point, particularly for a first cloud platform to learn deeply before adding a second one later if a specific job or project calls for it.