GCP vs AWS — Service Comparison

This is the service-mapping lookup table. For the conceptual mental-model shifts an AWS engineer needs (resource hierarchy, additive IAM, global VPC, pricing model differences), see the companion doc from-aws.md.

0/0 checks

Core Philosophy Difference

graph TB
    classDef history fill:#ff9900,stroke:#cc7a00,color:#fff
    classDef adoption fill:#e67e22,stroke:#ba6018,color:#fff
    classDef infra fill:#4285f4,stroke:#2a56c6,color:#fff
    classDef data fill:#34a853,stroke:#1e7e34,color:#fff
    classDef k8s fill:#fbbc05,stroke:#c79000,color:#333

    subgraph AWS["AWS — breadth first"]
        A1["20 years in market<br/>150+ services"]:::history
        A2["Dominant enterprise adoption<br/>most compliance certifications"]:::adoption
        A3["Every use case has an official service<br/>sometimes 2-3 overlapping ones"]:::history
    end

    subgraph GCP["GCP — engineering first"]
        G1["Built on Google's own infra<br/>~70+ services, tighter surface"]:::infra
        G2["BigQuery, Bigtable, Spanner<br/>data & analytics born here"]:::data
        G3["GKE — reference Kubernetes implementation<br/>Google created Kubernetes"]:::k8s
    end
Dimension AWS GCP
Market share (cloud infra, ~2024) ~32% ~11%
Enterprise adoption Dominant Growing
Kubernetes EKS (solid) GKE (best-in-class, invented K8s)
Data/Analytics Redshift, Athena, EMR BigQuery (simpler, often cheaper)
ML/AI SageMaker, Bedrock Vertex AI, TPUs, best for training
Networking Complex but powerful Global VPC, simpler model
Pricing Pay-per-resource Sustained use discounts automatic

AWS has roughly 3x GCP's cloud market share. Does that mean AWS's Kubernetes and data-warehouse offerings are technically ahead of GCP's equivalents?


Service-by-Service Mapping

Compute

Use case AWS GCP
VMs EC2 Compute Engine
Managed K8s EKS GKE
Serverless containers Fargate, App Runner Cloud Run
Serverless functions Lambda Cloud Functions
Batch compute Batch Cloud Batch
Spot/preemptible VMs Spot Instances Preemptible VMs (Spot VMs)

Storage and Databases

Use case AWS GCP
Object storage S3 Cloud Storage
Block storage EBS Persistent Disk
File storage EFS Filestore
Relational DB RDS Cloud SQL
Managed Postgres Aurora Postgres Cloud Spanner, AlloyDB
Global ACID DB Aurora Global Spanner (better: true global)
NoSQL key-value DynamoDB Firestore, Bigtable
Wide-column DynamoDB single-table Bigtable (better for time-series)
Data warehouse Redshift BigQuery
In-memory cache ElastiCache Memorystore (Redis/Memcached)
Time-series Timestream Bigtable

Networking

Use case AWS GCP
VPC VPC (region-scoped) VPC (global — one VPC, all regions)
Load balancer ALB/NLB/CLB Cloud Load Balancing
CDN CloudFront Cloud CDN
DNS Route 53 Cloud DNS
Private connectivity PrivateLink, VPN Private Service Connect, Cloud VPN
Cross-region connectivity Transit Gateway Cloud Router + HA VPN

Key networking difference:

graph TD
    classDef awsvpc fill:#ff9900,stroke:#cc7a00,color:#fff
    classDef gcpvpc fill:#4285f4,stroke:#2a56c6,color:#fff
    classDef subnet fill:#34a853,stroke:#1e7e34,color:#fff
    classDef note fill:#7f8c8d,stroke:#616a6b,color:#fff

    subgraph AWS_MODEL["AWS — one VPC per region"]
        AVPC1["VPC — us-east-1<br/>10.0.0.0/16"]:::awsvpc
        AVPC2["VPC — eu-west-1<br/>10.1.0.0/16"]:::awsvpc
        AVPC1 -->|"VPC Peering<br/>or Transit Gateway"| AVPC2
        ANOTE["Two separate networks.<br/>Nothing routes across regions<br/>until you configure it."]:::note
    end

    subgraph GCP_MODEL["GCP — one VPC, global"]
        GVPC["VPC: my-vpc<br/>spans every region"]:::gcpvpc
        US["Subnet: us-central1<br/>10.0.1.0/24"]:::subnet
        EU["Subnet: europe-west1<br/>10.0.2.0/24"]:::subnet
        GVPC --> US
        GVPC --> EU
        US -.->|"private IP, same VPC<br/>Google's backbone"| EU
        GNOTE["One network. Every subnet<br/>routes to every other subnet<br/>automatically."]:::note
    end
A VPC is scoped to a single region. us-east-1 and eu-west-1 are two separate networks with separate CIDR ranges — nothing routes between them until you explicitly set up VPC Peering or attach both to a Transit Gateway, then update route tables on both sides. Every additional region repeats this setup.
A VPC spans every region by default. Add a subnet in a new region and it's already reachable from every existing subnet in the same VPC over Google's backbone — no peering, no Transit Gateway, no route table changes. This is the networking advantage the doc keeps coming back to.
1. Provision a VPC per region. A VPC in us-east-1 (10.0.0.0/16) and a separate VPC in eu-west-1 (10.1.0.0/16) start out as two isolated networks — nothing routes between them by default.
2. Connect them explicitly. Set up VPC Peering for a one-off pair, or attach both VPCs to a Transit Gateway if you expect more than a couple of regions.
3. Update route tables and security groups. Peering or a Transit Gateway attachment alone doesn't move traffic — both VPCs need route table entries pointing at the new link, and security groups/NACLs need to allow the cross-VPC traffic.
4. Repeat for every new region. Expanding into a third region means a third VPC, another peering connection or Transit Gateway attachment, and another round of route table and security group updates.
5. Compare to GCP. The global-VPC equivalent of all four steps above is one action: add a subnet in the new region to the existing VPC. Every other subnet in that VPC can already reach it — no peering, no Transit Gateway, no route tables to touch.

A GCP VPC already has subnets in us-central1 and europe-west1. Do you need to set up anything like VPC Peering or a Transit Gateway before a VM in one subnet can reach a VM in the other?

Observability

Use case AWS GCP
Metrics CloudWatch Cloud Monitoring
Logs CloudWatch Logs Cloud Logging
Traces X-Ray Cloud Trace
Dashboards CloudWatch Cloud Monitoring, Grafana
Audit logs CloudTrail Cloud Audit Logs

AI/ML

Use case AWS GCP
ML platform SageMaker Vertex AI
LLM APIs Bedrock (Claude, Llama, etc.) Vertex AI (Gemini, etc.)
Custom training SageMaker Training Vertex AI Training, TPUs
TPU access No Yes (Google's custom AI chips)
Managed notebooks SageMaker Studio Vertex AI Workbench

GCP TPUs: Google's Tensor Processing Units give 10-100× better price/performance for LLM training vs GPUs on any cloud. If you're training large models, GCP is often cheaper.

You want to train a large model and need TPU access. Can you provision TPUs on AWS?


GCP Unique Advantages

1. Global VPC

Single VPC spanning all regions — no peering needed. Add a subnet in Tokyo, your London VM can reach it without configuration.

2. BigQuery Pricing

BigQuery: $5/TB scanned, $0.02/GB storage. AWS Redshift: $0.25/hour for smallest cluster (even when idle). For sporadic analytics, BigQuery is often 10× cheaper.

3. Sustained Use Discounts

GCP automatically gives discounts for VMs running >25% of the month — no upfront commitment required. AWS requires Reserved Instances (1-3 year commitment) for equivalent discounts.

4. GKE Quality

GKE gets Kubernetes features first (it's the reference implementation). Autopilot mode — true serverless Kubernetes — doesn't exist on AWS/Azure.

5. Spanner — True Global ACID

AWS Aurora Global has replication lag (seconds). Spanner provides globally consistent transactions with ~10ms latency using TrueTime (atomic clocks).

You provision the smallest Redshift cluster and a BigQuery dataset for the same sporadic analytics workload, then run zero queries all weekend. Which one keeps billing you?


AWS Unique Advantages

1. Service breadth

AWS has services GCP doesn't: AppSync (GraphQL), Kinesis Data Firehose simplicity, CodePipeline, many enterprise integrations.

2. Enterprise ecosystem

AWS has the most ISV integrations, compliance certifications, and enterprise support.

3. Mature marketplace

AWS Marketplace has thousands of third-party products pre-configured.

4. On-premises hybrid

AWS Outposts, AWS Local Zones — better on-prem story than GCP Distributed Cloud.

A company has heavy existing on-premises infrastructure and wants the smoothest hybrid-cloud story. Per this doc, is that a point in AWS's or GCP's favor?


When to Choose Which

  • Your team already knows AWS.
  • You need maximum service breadth.
  • Enterprise compliance requirements — AWS has the most certifications.
  • Strong on-prem hybrid requirements.
  • Analytics-heavy workload — BigQuery is hard to beat.
  • K8s-native platform — GKE Autopilot, Workload Identity.
  • Training large ML models — TPUs.
  • Multi-region global application — global VPC simplicity.
  • Cost optimization for data warehousing.

You leave VMs running continuously all month on both AWS and GCP without pre-purchasing anything (no Reserved Instances, no committed-use contracts). Do both clouds discount that usage automatically?