Now let’s explore managed serverless computing.
The final application platform that you’ll explore in this section of the course is Cloud
Run.
Cloud Run is a managed compute platform that lets you run stateless containers by using
web requests or Pub/Sub events.
Cloud Run is serverless.
That means it removes all infrastructure management tasks so you can focus on developing applications.
It’s built on Knative, an open API and runtime environment built on Kubernetes that gives
you freedom to move your workloads across different environments and platforms.
It can be fully managed on Google Cloud, on Google Kubernetes Engine, or anywhere Knative
runs.
Cloud Run is fast.
It can automatically scale up from zero and back down almost instantaneously, and it charges
you only for the resources you use, calculated down to the nearest 100 milliseconds, so you‘ll
never pay for your over-provisioned resources.
The Cloud Run developer workflow is a straightforward three-step process.
First, you write your application using your favorite programming language.
This application should start a server that listens for web requests.
Second, you build and package your application into a container image.
Finally, you deploy the container image to Cloud Run.
After you’ve deployed your container image, you’ll receive a unique HTTPS URL back,
which you will use to run your new containerized application.
Cloud Run then starts your container on demand to handle requests and ensures that all incoming
requests are handled by dynamically adding and removing containers.
Cloud Run is serverless.
That means that you, as a developer, can focus on building your application and not on building
and maintaining the infrastructure that powers your application.
For some use cases, a container-based workflow is great, because it gives you a great amount
of transparency and flexibility.
If you build the container image, you have the power to decide exactly what file is added
to your container image, and how it gets there.
However, building an application is hard enough already, let alone having to think about containerization
and the responsibilities that come with that.
Sometimes, you’re just looking for a way to turn source code into an HTTPS endpoint,
and you want your vendor to make sure that your container image is secure, well-configured,
and built in a consistent way.
With Cloud Run, you can do both.
You can use a container-based workflow and a source-based workflow.
If you use the source-based approach, you’ll deploy your source code instead of a container
image.
Cloud Run then builds your source and packages the application into a container image for
you.
Cloud Run does this using Buildpacks - an open source project.
Cloud Run handles HTTPS serving for you.
That means you only have to worry about handling web requests, and you can let Cloud Run take
care of adding the encryption.
By default, your application is exposed on a unique subdomain of the global *run.app
domain You can also use your own, custom domain.
Cloud Run manages everything else: Generating a valid SSL certificate
Configuring SSL termination correctly with secure settings
Handling incoming requests, decrypting them, and forwarding them to your application
The pricing model on Cloud Run is unique; you only pay for the system resources you
use while a container is handling web requests, with a granularity of 100ms, and when it is
starting or shutting down.
You do not pay for anything if your container does not handle requests.
Additionally, there is a small fee for every one million requests you serve.
The price of container time increases with CPU and memory.
A container with more vCPU and memory is more expensive.
Today, Cloud Run can allocate up to 4 vCPUs and 8 GB of memory.
Most of the other compute products (such as Compute Engine), charge for servers as long
as they are running, even if you are not using them.
That means you’re often paying for idle server capacity.
You can use Cloud Run to run any binary, as long as it’s compiled for Linux 64-bit.
Now, this means you can use Cloud Run to run web applications written using popular languages,
such as: Java
Python Node.js
PHP Go
C++
And you can also run code written in less popular languages:
Cobol Haskell
Perl
As long as your app handles web requests, you should be able to run it and scale it
automatically using Cloud Run.