- Cloud Run (serverless containers)
- Cloud SQL (via proxy)
- Cloud Monitoring & Logging (formerly Stackdriver)
- Compute Engine (if necessary, e.g. websockets)
- Cloud Build for GitOps (deploy on push)
It's clean and simple (to me). Billing is in one place, nicely separated by projects. Monitoring & Logging is already built in. No need to span multiple dev SaaS tools. So far managed to avoid Redis caching because Golang + Postgres is fast enough, so far. But if you need Redis you can DIY on Compute Engine or try Cloud Memorystore (configure the memory to a low amount for cost savings).
Google Cloud drawbacks: Additional charges necessary to connect Cloud Run to VPC (via proxy instances). Load balancing on GCP ain't cheap ($18/month, though to a larger enterprise that is a rounding error). But in my setup I didn't need these things.
As shown above, I have heavily optimized for cost and simplicity in my setup.