Slide 1

Slide 1 text

Mete Atamel Developer Advocate at Google @meteatamel atamel.dev speakerdeck.com/meteatamel Introduction to Google Cloud Serverless

Slide 2

Slide 2 text

Operational Model No Infra Management Managed Security Pay only for usage Programming Model Service-based Event-driven Stateless Serverless

Slide 3

Slide 3 text

The serverless landscape in Google Cloud Cloud Run Run HTTP or run-to-completion containers Cloud Functions Run HTTP and event-triggered functions Cloud Build Serverless CI/CD Build & Run Cloud Workflows Service orchestration Cloud Tasks HTTP task queue Eventarc Route events from source to destination Cloud Scheduler Cron for the cloud Orchestrate Cloud Pub/Sub Publish/subscribe events to/from topics API Gateway API routing and management VPC Access Serverless networking Connect App Engine Run web applications in a fully managed environment Serverless 1.0 Serverless 2.0

Slide 4

Slide 4 text

Proprietary + Confidential Virtual Machine OS Application Runtime Application Virtual Hardware Container OS Application Runtime Application Virtual Hardware Functions Functions Application OS Application Runtime Application Virtual Hardware Functions Function OS Application Runtime Application Virtual Hardware Functions Compute Engine Kubernetes Engine App Engine Cloud Functions Serverless Zone Container OS Application Runtime Application Virtual Hardware Functions Cloud Run

Slide 5

Slide 5 text

5 Serverless Functions Single-purpose autoscaled functions Deploy from source. Autoscales up and down. Based on OSS Functions Framework Run locally or in the cloud easily Triggered by HTTP or CloudEvents Sync with HTTP, async with OSS CloudEvents Supports popular languages Node.js, Python, Go, Java, PHP, Ruby, .NET Autoscaled, Concurrency, Auto HTTPS/TLS, IAM/Org Policy Cloud Functions func helloWorld() Eventarc Pub/Sub https:// Source code Trigger with events from Google Cloud and 3rd party providers Trigger with a message to a queue Trigger with a request Cloud Scheduler Trigger on a schedule

Slide 6

Slide 6 text

1. Certain versions of certain languages are supported ● Node.js 8, 10, 12, 14, 16, 18, 20 (preview) ● Python 3.7, 3.8, 3.9, 3.10, 3.11 ● Go 1.11, 1.13, 1.16, 1.18, 1.19, 1.20 ● Java 11, 17 ● .NET Core 3.1, .NET 6 ● PHP 7.4, 8.1, 8.2 ● Ruby 2.6, 2.7, 3.0, 3.2 2. One HTTP path / event per function Limitations

Slide 7

Slide 7 text

What to do when Cloud Functions is not enough? Create your own runtime with containers!

Slide 8

Slide 8 text

Containers Any language Any library You get to build your own runtime .js .rb .go .py .sh … 0 1 0 1 0 0 1 1 1

Slide 9

Slide 9 text

Serverless containers with Knative and Cloud Run Cloud Run Serverless containers, fully managed, no cluster Cloud Run on GKE/Anthos Serverless containers on GKE/Anthos in Google Cloud Knative everywhere Serverless containers on everywhere you run Kubernetes

Slide 10

Slide 10 text

Cloud Run Serverless Containers Deploy source, Dockerfile or images Uses OSS buildbacks and Cloud Build, integrates with Artifact Registry or Docker Hub Autoscaled HTTP services Web apps, APIs & internal apps Parallel background & batch jobs with Cloud Run jobs No cluster management Based on Knative, portable to Kubernetes Autoscaled, Concurrency, Auto HTTPS/TLS, IAM/Org Policy const express = require('express'); const app = express(); https:// Source code / Dockerfile Trigger with Eventarc / PubSub / Scheduler Trigger with a HTTP/gRPC/Websocket Container Image Cloud Run services async function main() { ... } Source code / Dockerfile Trigger on a schedule Container Image Trigger via API Cloud Run jobs

Slide 11

Slide 11 text

Proprietary + Confidential Container contract & resources ● Listen on 0.0.0.0 on port $PORT (default 8080) ● HTTP server must start < 4 min (timeout → 504) ● Request time < 5 min (default → 5 min, up to 60 min) ● Stateless (in-memory file system) ● Computation only within request (Unless always-CPU is enabled) ● 1 vCPU per container instance (configurable to 8 vCPU) ● 256 MiB of memory up to a max of 8 GiB (configurable to 32 GiB) ● 80 concurrent requests per container (configurable to 1000) ● 100 max containers by default (configurable 1-1000, support overridable) ● Sandboxed by gVisor ● Ability to listen on multiple paths

Slide 12

Slide 12 text

Concurrency + min instances = Much improved cold start concurrency = 1 concurrency = 80 (default) - 1000 (max) Cloud Functions (gen1) Cloud Functions (gen2) Cloud Run

Slide 13

Slide 13 text

Proprietary + Confidential 13 Cloud Scheduler Use Cloud Scheduler to setup a cron job in the cloud based on a schedule Cron in the Cloud Cloud Scheduler Cloud Run job Cloud Run Cloud Run service Cloud Run Serverless function Cloud Function Pub/Sub topic Pub/Sub Workflows HTTP Workflows App Engine HTTP App Engine …

Slide 14

Slide 14 text

Thank you! Mete Atamel Developer Advocate at Google @meteatamel atamel.dev speakerdeck.com/meteatamel github.com/meteatamel/cloud-code-custom-templates github.com/GoogleCloudPlatform/jobs-demos/tree/main/screenshot Feedback? bit.ly/atamel