With Google Cloud Run introduction during the Cloud Next 2019, Serverless/Managed Compute family got a new member. There are now 3 major products:
- App Engine (I wrote in more details about it here)
- Cloud Functions
- Cloud Run.
How does Cloud Run fit here and what are its properties and use cases?
I created a comparison table so it's easier to compare with other serverless compute products on Google Cloud.
The biggest selling point of Cloud Run is that you can deploy any Docker image (in which application responses to HTTP requests), scales automatically, you don't have to worry about provisioning infrastructure and you just pay for usage. The other option is to deploy straight to Google Kubernetes Engine, in case you want to use infrastructure which you have more under control.
A nice feature which I like personally is a possibility to have service opened or close to the internet. In case you don't want to expose service to the internet, access is regulated via IAM, i.e. Service Accounts with appropriates roles.
I also like the possibility to use Cloud Run as an asynchronous task worker, where the task is triggered by Pub/Sub message (which triggers defined Cloud Run URL endpoint), although it would be cool if PubSub could run any container (not just the one which responses to HTTP requests) based on events (example from real life).
What I am also missing are some basic charts of requests per second, latency, number of instances during the time period, etc as it is in Cloud Functions or App Engine. There is a possibility to have that in Stackdriver, but it's more straightforward to have it straight in service detail. Logs are under service details for example.
Anyway with Cloud Run serverless horizons on Google Cloud looks brighter in terms of possibilities.
And remember Nothing else serverless!