This document discusses running containerized applications on modern serverless platforms like Cloud Run and Knative. It provides an overview of serverless computing and how platforms like Cloud Run and Knative allow developers to run existing containerized applications serverless through features like auto-scaling and pay-per-use models. It also discusses how platforms like Cloud Run can be used to modernize existing applications and move them to serverless without rewriting code, as well as how Knative allows portability between platforms and providers through its open-source APIs.
7. @ahmetb @theWilliamChia
Challenges with Serverless Functions
● Existing apps need to be re-architected
● Lack of portability / vendor lock-in
● New programming paradigms to learn
● Difficult to run in a local environment
● New architecture paradigms to learn
8. Developers want serverless
... just want to run their code.
... want to use their favorite
languages and dependencies.
... don't want to manage the
infrastructure.
@ahmetb @theWilliamChia
Operators want Kubernetes
Kubernetes is great orchestrating
infrastructure and microservices
They love using Google Kubernetes
Engine and not do the cluster ops.
Kubernetes is not the right abstraction
for their developers.
9. ● Containers to give you a higher flexibility and portability/no lock-
in.
● An option to run on fully managed infrastructure,
but option to move back to to Kubernetes if you need.
Why can't we have both?
10. @ahmetb @theWilliamChia
Open source building blocks for creating
serverless experiences on Kubernetes.
https://knative.dev
Knative: open API for serverless on Kubernetes
11. @ahmetb @theWilliamChia
Open source building blocks for creating
serverless experiences on Kubernetes.
● an open API to describe serverless containers and
events
● FaaS like request-based autoscaling on Kubernetes
○ scale-to-zero when inactive
○ request-based activation (zero-to-N)
● event sources, event handling and delivery
https://knative.dev
Knative: open API for serverless on Kubernetes
13. @ahmetb @theWilliamChia
Why is Cloud Run interesting?
● Run any language, any binary, any library: because containers!
No language restrictions like Node.js etc.
● Pay-per-usage: You only pay when processing an HTTP request.
(If multiple requests overlap, you are not double-charged!)
● Auto-scale from zero to N (10,000s requests/sec) within seconds.
● Runs fully managed on Google infrastructure OR on Kubernetes.
14. @ahmetb @theWilliamChia
Serverless containers, where you want them
Cloud Run
• Your container runs on Google’s private infra.
• For developers and teams that don't want to
manage infrastructure and do operations.
• Pay only for what you use.
• Implements the open source Knative API.
Cloud Run on GKE
• Your app runs on on your Kubernetes
cluster, side by side with your other
workloads.
• For those already using Kubernetes, or want
access to lower-level features like GPUs.
• Same API, same CLI, same image format.
15. @ahmetb @theWilliamChia
What is Cloud Run good for?
● Containers that are request or event-driven
(i.e. no background processing)
● Going serverless without changing your code.
● Moving out of a containers infrastructure (i.e. Kubernetes)
for purposes like less management, better/fast autoscaling.
16. @ahmetb @theWilliamChia
Demo
legacy
app
container
image
Cloud Run
Cloud Run
on Google
Kubernetes
Engine
IBM Cloud™
Kubernetes
Service
modernize go serverless
on a fully managed
pay-per use
platform
bring serverless to
your Kubernetes
cluster with Knative
move to another
cloud provider.
Knative is portable
and vendor-neutral.