Google Cloud · Cost

Our Google Cloud bill was $1,800. Real traffic cost $3.64.

Nicoleta Ungur · 2026-11-09

BusTrans, our ticketing and GPS product for bus operators, runs a small backend on Google Cloud Run. Traffic is modest: about 400,000 requests in a year. The bill for that year was a little over $1,800, which felt wrong for an app that size.

Step 1: group the bill by SKU, not by project

The default billing report groups by project, which gives you one line: "BusTrans, $1,811". Useless. Switch Billing → Reports → Group by to SKU and every line gets a real name:

WhatCost for the year
Cloud Run minimum instances (CPU + memory, idle)~$1,049
Compute Engine VM and disk~$714
Artifact Registry storage~$23
Memorystore Redis (already deleted early in the period)~$22
Cloud Run actual requests$3.64

The work the app actually did cost $3.64. Everything else was capacity kept switched on.

Step 2: find where the warm instances come from

The deploy workflow asked for zero minimum instances. The bill said about five were running around the clock. The catch: Cloud Run has a minimum at the service level and one at the revision level, and a service-level value set in the console wins over what your deploy file says. This lists both:

gcloud run services list --format="table(metadata.name,region,
  metadata.annotations.'run.googleapis.com/minScale':label=SERVICE_MIN,
  spec.template.metadata.annotations.'autoscaling.knative.dev/minScale':label=REVISION_MIN)"

Step 3: decide how warm you need to be

Zero minimum instances is the cheapest, but the first request after a quiet stretch waits a few seconds for a container to start. For an app people use during working hours, one warm instance is the sweet spot: about $16 a month at our size, and nobody notices a cold start. We set it explicitly in the deploy workflow, with --cpu-boost for faster scale-up, so a console click can't quietly undo it.

Step 4: remove the leftovers

  • The VM. A Container-Optimized OS instance behind a load balancer, left over from before the move to Cloud Run. Nothing in the code referenced it. Check before deleting: who calls it, what's on its disk.
  • Old images. An Artifact Registry cleanup policy that keeps the last few images per repository.
  • Staging. Any second service deployed with default settings and no instance cap.

Where we are

The single-warm-instance change is deployed and the leftovers are being removed. Based on the billing rates above, the bill should drop from roughly $150 a month to under $20. We'll update this post with the real numbers once a full billing cycle has passed.

If your Google Cloud bill feels too high for what your app does, it probably is. We do this as a fixed-price audit.

Tell us what you need connected.

A 30-minute call with Nicoleta, our CEO and lead engineer. You leave with a concrete plan and a fixed quote, whether or not you work with us.