We reach for Google Cloud most often on products whose centre of gravity is data: if the reporting layer is going to live in BigQuery anyway, keeping the services next to it removes a whole category of plumbing.
Compute without a cluster to babysit
Cloud Run covers a surprising amount of production work — a container, a concurrency setting, a scale-to-zero floor. We only introduce GKE when something genuinely needs it: long-lived workloads, custom networking, or operators the team already relies on.
Events between services
Pub/Sub for anything that should not be a synchronous call. Subscribers are idempotent, dead-letter topics exist before launch, and the retry policy is written down instead of inherited from a default.
Identity done properly
Service accounts with one job each, no shared keys, and permissions granted at the resource rather than the project where possible. Workload identity for anything running in a cluster. This is unglamorous and it is the difference between an incident and a breach.
Where the data work joins
Application events land in the warehouse through a defined schema, so product analytics and marketing reporting read the same numbers. That connection is the reason our engineering and analytics work sit in one team rather than two suppliers.
Cost and quotas
Budgets with alerts, committed use where the load is predictable, and quotas checked before a launch that expects traffic. Same discipline as AWS — the platform differs, the questions do not.