Getting started with Google App Engine — what it is, how it works, and how to deploy your first application.
What is App Engine?
Google App Engine is a fully managed serverless platform for building and hosting web applications. You upload your code and App Engine handles provisioning servers, scaling instances, load balancing requests, and keeping the infrastructure running. You never see or manage the underlying VMs.
It has been running since 2008, making it one of the oldest PaaS offerings in the cloud. App Engine runs your application on the same infrastructure that powers Google’s own services.
Key Insight: App Engine is opinionated. It gives you a structured environment with built-in services (cron, task queues, memcache) and handles scaling automatically. If you need full control over the runtime or container, Cloud Run gives you more flexibility.
Supported Runtimes
| Language | Standard Runtimes |
|---|---|
| Python | 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 |
| Java | 8, 11, 17, 21 |
| Go | 1.12, 1.16, 1.19, 1.21, 1.22 |
| Node.js | 12, 14, 16, 18, 20 |
| PHP | 7.4, 8.0, 8.1, 8.2, 8.3 |
| Ruby | 2.7, 3.0, 3.1, 3.2 |
The Flexible environment supports all of the above plus any language via custom Docker images (.NET, Rust, Elixir, etc.).
How App Engine Works
flowchart LR User["User Request"] --> LB["App Engine Load Balancer"] LB --> Router["Request Router"] Router --> S1["Service: default<br/>Version: v2"] Router --> S2["Service: api<br/>Version: v1"] S1 --> GCS["Cloud Storage"] S1 --> SQL["Cloud SQL"] S2 --> PS["Pub/Sub"]
- A user sends a request to your app’s URL
- App Engine’s built-in load balancer receives it
- The request router directs it to the correct service and version
- Your code runs on a managed instance
- Instances are created or removed based on traffic
App Engine Environments
App Engine offers two execution environments:
| Aspect | Standard | Flexible |
|---|---|---|
| Infrastructure | Sandboxed containers | Docker on Compute Engine VMs |
| Scaling | Scales to zero | Minimum 1 instance always running |
| Deployment time | Seconds | Minutes |
| Free tier | Yes (28 instance-hours/day) | No |
| Custom runtimes | No | Yes (via Dockerfile) |
Tip: Start with the Standard environment unless you have a specific reason to use Flexible. Standard is cheaper, deploys faster, and scales to zero.
See Standard vs Flexible for a detailed comparison.
Getting Started
Prerequisites
- A Google Cloud account with billing enabled
gcloudCLI installed and authenticated- A Google Cloud project
Deploy Your First App
Step 1: Initialize your project
gcloud auth login
gcloud config set project YOUR_PROJECT_ID
gcloud app createStep 2: Create your application
Create a directory with your code and an app.yaml file:
# app.yaml
runtime: python312# main.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from App Engine!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)# requirements.txt
Flask==3.0.0
gunicorn==21.2.0Step 3: Deploy
gcloud app deployStep 4: View your app
gcloud app browseYour app is live at https://PROJECT_ID.REGION_ID.r.appspot.com.
Built-in Services
App Engine includes several managed services you can use without additional setup:
| Service | Description |
|---|---|
| Cron Service | Schedule tasks at regular intervals via cron.yaml |
| Task Queues | Background task processing (being replaced by Cloud Tasks) |
| Memcache | In-memory caching (being replaced by Memorystore) |
| Send emails programmatically | |
| Blobstore | Store and serve large blobs (being replaced by Cloud Storage) |
| Users | Authentication service (being replaced by Firebase Auth / Identity Platform) |
Note: Google is gradually migrating these bundled services to standalone Google Cloud products. For new applications, prefer the standalone services (Cloud Tasks, Memorystore, Cloud Storage, Firebase Auth).
Free Tier
App Engine Standard has a persistent free tier that does not expire:
| Resource | Free Allowance |
|---|---|
| Instance-hours | 28 per day (F1 class) |
| Datastore | 1 GB storage, 50K reads, 20K writes/day |
| Cloud Storage | 5 GB |
| Outbound network | 1 GB/day |
New Google Cloud accounts also receive a $300 free credit valid for 90 days.
Warning: As of May 2026, the Flexible environment has no free tier and bills for vCPU, memory, persistent disk, and network while at least one instance keeps running.
Common gcloud Commands
# Create an App Engine application
gcloud app create
# Deploy your app
gcloud app deploy
# Deploy without promoting (no traffic)
gcloud app deploy --no-promote
# Browse your app
gcloud app browse
# List all services
gcloud app services list
# List all versions
gcloud app versions list
# View application logs
gcloud app logs tail
# Delete a version
gcloud app versions delete VERSION --service=SERVICETL;DR
- App Engine is a fully managed PaaS — upload code, Google handles everything else.
- Supports Python, Java, Go, Node.js, PHP, Ruby in Standard; any language in Flexible.
- Two environments: Standard (sandboxed, free tier, scales to zero) and Flexible (Docker, custom runtimes, minimum cost).
- Built-in services include cron, task queues, memcache, and mail (though Google is migrating these to standalone services).
- Deploy with
gcloud app deploy— your app is live in seconds.
Resources
App Engine Documentation Official documentation for all App Engine features and runtimes.
Quickstart: Python on App Engine Step-by-step guide to deploy a Python app.
App Engine Pricing Pricing details including free tier limits.
Standard vs Flexible Environments Detailed comparison of the two App Engine environments.
app.yaml Configuration Complete reference for the app.yaml configuration file.
Google Cloud Overview High-level overview of Google Cloud Platform.