DEV Community

Siddhant Khare
Siddhant Khare

Posted on

Serverless economics: why Cloud Run crushes App Runner (until it doesn’t)

This analysis is based on official pricing documentation and straightforward cost calculations.

TL;DR

  • Pricing: Cloud Run is dramatically cheaper for short-running workloads (up to 17x cost difference)
  • AWS Integration: App Runner provides native ecosystem integration worth considering
  • Scaling: Cloud Run offers true scale-to-zero; App Runner keeps memory always-on
  • Break-even point: ~20 hours/day runtime

The Price Differential Nobody Talks About

When evaluating serverless container platforms, most discussions focus on features. Let's focus on what actually matters: cost and architectural trade-offs.

Running 1 vCPU + 2GB memory in the Asia region:

Daily Runtime Cloud Run App Runner Difference
2 hours $1.04 $17.82 17.1x
4 hours $7.31 $22.68 3.1x
8 hours $24.62 $32.40 1.3x
12 hours $39.93 $42.12 1.05x
24 hours $85.07 $71.28 App Runner wins

The cost reversal happens around 20 hours/day of continuous operation.

Architectural Differences That Drive Pricing

Cloud Run: True Serverless

Built on Knative with request-driven scaling:

Cost Model:
- vCPU: $0.000024/vCPU-second
- Memory: $0.0000025/GiB-second
- Billing granularity: per-second
- Free tier: 180,000 vCPU-sec, 360,000 GiB-sec monthly
Enter fullscreen mode Exit fullscreen mode

Scale-to-zero: When idle, you pay nothing. This is the key differentiator.

App Runner: Hybrid Provisioning

Memory-always-on + CPU-on-demand model:

Cost Model:
- Provisioned (Memory): $0.009/GB-hour (always charged)
- Active (CPU): $0.081/vCPU-hour (only during processing)
Enter fullscreen mode Exit fullscreen mode

Always-on memory: Base cost of $12.96/month for 2GB, regardless of usage.

The Math

Cloud Run: 2 Hours Daily Operation

Monthly runtime: 2h × 30d = 60h = 216,000 seconds

Resource consumption:
- vCPU: 1 vCPU × 216,000s = 216,000 vCPU-sec
- Memory: 2 GiB × 216,000s = 432,000 GiB-sec

After free tier:
- vCPU billable: 216,000 - 180,000 = 36,000 vCPU-sec
- Memory billable: 432,000 - 360,000 = 72,000 GiB-sec

Charges:
- vCPU: 36,000 × $0.000024 = $0.864
- Memory: 72,000 × $0.0000025 = $0.180
Total: $1.044
Enter fullscreen mode Exit fullscreen mode

App Runner: 2 Hours Daily Operation

Fixed memory cost (always-on):
2GB × $0.009/GB-hour × 24h × 30d = $12.96

CPU cost (usage-based):
Monthly CPU runtime: 2h × 30d = 60h
1 vCPU × 60h × $0.081/vCPU-hour = $4.86

Total: $12.96 + $4.86 = $17.82
Enter fullscreen mode Exit fullscreen mode

The $12.96 fixed cost is the critical factor. You're paying for memory reservation whether you use it or not.

When app runner makes sense

1. AWS ecosystem lock-in strategy

If you're running:

  • RDS databases
  • ElastiCache clusters
  • S3 storage
  • VPC-internal services

Example configuration:

services:
  api:
    image: your-app:latest
    environment:
      DATABASE_URL: postgresql://rds-endpoint
      S3_BUCKET: your-bucket
    instance_role: arn:aws:iam::account:role/AppRunnerRole
Enter fullscreen mode Exit fullscreen mode

IAM-based authentication eliminates credential management overhead. VPC connector provides direct private subnet access.

2. VPC Integration requirements

App Runner → VPC Connector → Private Subnet → RDS
Enter fullscreen mode Exit fullscreen mode

vs

Cloud Run → Internet → Cloud SQL Proxy → Cloud SQL
Enter fullscreen mode Exit fullscreen mode

App Runner's VPC integration is simpler for private resource access.

3. Predictable performance requirements

No cold starts. Memory is always provisioned. Response time predictability matters for SLA-driven services.

4. 24-Hour operation

At 24/7 runtime, App Runner is actually cheaper ($71.28 vs $85.07).

5. Operational consolidation

Single cloud provider strategy reduces:

  • Multi-cloud operational overhead
  • Cross-cloud networking complexity
  • Team training requirements
  • Security policy fragmentation

6. Simplified auto-scaling

# App Runner
auto_scaling_configuration:
  max_concurrency: 100
  max_size: 10
  min_size: 1
Enter fullscreen mode Exit fullscreen mode

vs

# Cloud Run (more verbose)
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/maxScale: "10"
        autoscaling.knative.dev/minScale: "0"
        run.googleapis.com/cpu-throttling: "false"
Enter fullscreen mode Exit fullscreen mode

When Cloud Run is the Clear Winner

1. Cost-Constrained Projects

Early-stage startups, MVPs, personal projects. $1.04/month vs $17.82/month is a 17x difference that compounds across multiple services.

2. Irregular/Low-Frequency Traffic

  • Batch jobs (few daily executions)
  • Webhook endpoints
  • Development/staging environments
  • Demo applications

True scale-to-zero means zero cost during idle periods.

3. Google Cloud Native Integration

Native integration with:

  • Firebase
  • BigQuery
  • Google Workspace APIs
  • Cloud Storage

4. Geographic distribution

Cloud Run supports more regions for global deployment.

Cold start reality check

Cold start times vary significantly by runtime and application design.


Based on typical container startup patterns:

  • Lightweight Node.js: 500ms-1s
  • Heavy JVM applications: 3-5s
  • Minimum instance configuration can mitigate this

App Runner's always-on memory eliminates cold starts entirely.

Migration path considerations

Cloud Run → GKE: Relatively straightforward due to Knative foundation.

App Runner → EKS: Requires more significant architectural changes.

If Kubernetes migration is in your roadmap, Cloud Run provides a smoother path.

Decision framework

Choose Cloud Run if:
- Runtime < 12 hours/day
- Cost is primary constraint
- Traffic is sporadic/unpredictable
- Google Cloud ecosystem alignment

Choose App Runner if:
- Runtime > 20 hours/day
- AWS ecosystem consolidation
- VPC integration critical
- Cold start sensitivity
- Predictable performance required
Enter fullscreen mode Exit fullscreen mode

The uncomfortable truth

Cloud Run's pricing advantage is undeniable for short-running workloads. The 17x cost difference at low utilization is architectural, not operational.

However, infrastructure decisions require considering:

  • Long-term operational complexity costs
  • Team expertise and training overhead
  • Integration friction across cloud boundaries
  • Compliance and security policy alignment

For AWS-committed organizations, paying 3x more might be strategically rational when factoring in operational efficiency.

For new projects with flexible infrastructure choices, Cloud Run's economics are compelling.

What I Don't Know

These require real-world usage data:

  • Long-term pricing stability (both vendors adjust pricing)
  • Network egress costs at scale
  • Support response quality differences
  • Enterprise discount negotiation leverage

For more tips and insights, follow me on Twitter @Siddhant_K_code and stay updated with the latest & detailed tech content like this.

Top comments (0)