erica windisch - goto conference · the 12 factor app i. codebase one codebase tracked in revision...

38
The Truth Behind Serverless CTO & Co-founder, IOpipe Erica Windisch

Upload: others

Post on 22-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

The Truth Behind Serverless

CTO & Co-founder, IOpipe

Erica Windisch

Page 2: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 3: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 4: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 5: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 6: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 7: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 8: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 9: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Maybe all you need are some circles

ServerlessCultureDon’t build, when you can buy. Build as little as necessary.

Build with the minimum operational complexity.

Page 10: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 11: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 12: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 13: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

The 12 Factor AppI. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Config Store config in the environment IV. Backing services Treat backing services as attached resources V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless processes

VII. Port binding Export services via port binding VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity Keep development, staging, and production as similar as possible XI. Logs Treat logs as event streams XII. Admin processes Run admin/management tasks as one-off processes

Page 14: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 15: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

$ docker run —rm -it debian …# insmod veth.ko insmod: ERROR: could not insert module veth.ko: Operation not permitted # whoamiroot

Page 16: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Amazon’s “Serverless (functions) Manifesto”✤ Function are the unit of deployment and scaling. ✤ No machines, VMs, or containers visible in the programming model. ✤ Permanent storage lives elsewhere. ✤ Scales per request; Users cannot over- or under-provision capacity. ✤ Never pay for idle (no cold servers/containers or their costs). ✤ Implicitly fault-tolerant because functions can run anywhere. ✤ BYOC - Bring Your Own Code. ✤ Metrics and logging are a universal right.

Page 17: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies
Page 18: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

75 GB storage limit for all functions

Page 19: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

5 minute maximum duration

Page 20: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

~20ms for “hello world”

Page 21: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

128MB to 3GB memory

Page 22: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

1000 containers max (by default)

Page 23: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Functions lazy-loaded from s3

Page 24: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Containers + processes long-lived, automatically scaled and garbage-collected.

4.5 minutes to 4.5 hours

Page 25: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

non-root user

Page 26: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

/ read-only /tmp 512MB max

function mounted to /var/task

Page 27: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Pauses / unpauses containers between events

Page 28: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Pay only when processing an event.

Page 29: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

@ewindisch @IOpipes

Demo Slide

Click to add text

Page 30: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Serverless is…

event-driven distributed

scalable

Page 31: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

It’s all about the events.

Page 32: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Events are always immutable.

Page 33: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Event processing can and should be immutable.

Page 34: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Event processing should be fast & low-latency.

Page 35: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

(it’s turtles all the way down)

Events generate events.

Page 36: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

A function is… a nanoservice

Many nanoservices compose a microservice.

Page 37: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

a single microservice could be written in many languages.

(implemented in multiple nanoservices)

Page 38: Erica Windisch - GOTO Conference · The 12 Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies

Erica Windisch CTO & Founder IOpipe, Inc.

@ewindisch

www.iopipe.com