Google Cloud's PaaS-vs-IaaS choice — ship code, or run the machine.
Pick App Engine to ship application code and let Google run it — no servers, no OS patching, autoscaling built in. Pick Compute Engine when you need the OS, root/SSH access, custom networking, GPUs, or anything that is not a stateless web app. The deciding line is the operations boundary: App Engine trades infrastructure control for near-zero ops burden; Compute Engine gives you full control and the responsibility that comes with it.
| Criterion | App Engine | Compute Engine |
|---|---|---|
| Abstraction | PaaS — deploy app code, Google runs the servers | IaaS — you provision and manage the VMs |
| Scale to zero | Standard: yes. Flexible: no (min 1 instance) | Only via schedule-based autoscaling |
| Cold starts | Yes — loading requests; warmup mitigates | None inherent — you own the VM lifecycle |
| Runtimes | Standard: Go, Java, Node, Python, PHP, Ruby. Flexible: any (Docker) | Any — pick the OS, install anything |
| OS / root access | Standard: no SSH. Flexible: SSH, OS still managed | Full root / SSH; Linux or Windows |
| Pricing model | Standard: instance-hours. Flexible: vCPU + memory + disk | Per-second; sustained- & committed-use discounts |
| Max request time | Standard: 10 min auto / 24 h basic. Flexible: 60 min | N/A — not a request-scoped platform |
| Ideal workload | Stateless web apps & HTTP APIs, minimal ops | Databases, GPU/TPU jobs, daemons, lift-and-shift |