Slide 1

Slide 1 text

GOING SERVERLESS EVENT-DRIVEN ARCHITECTURE WITHOUT THE INFRASTRUCTURE Greg Shackles Principal Engineer, Olo @gshackles gregshackles.com

Slide 2

Slide 2 text

EVOLUTION OF ENVIRONMENT ABSTRACTIONS Virtual Machines Containers Functions INFRASTRUCTURE HOST OS HYPERVISOR GUEST OS GUEST OS GUEST OS LIBS LIBS LIBS APP 1 APP 2 APP 3 INFRASTRUCTURE OS CONTAINER ENGINE LIBS LIBS LIBS APP 1 APP 2 APP 3

Slide 3

Slide 3 text

ALL ABOARD THE HYPE TRAIN

Slide 4

Slide 4 text

Utilization Time Load Capacity UNDER UTILIZED OVER UTILIZED

Slide 5

Slide 5 text

FUNCTIONS WHAT ARE THEY? ▸ Stateless, event-driven operations ▸ No infrastructure to manage ▸ Scales on its own ▸ Only pay for time spent running

Slide 6

Slide 6 text

IT IS SERVERLESS THE SAME WAY WIFI IS WIRELESS. Gojko Adzic WHAT’S IN A NAME? https://gojko.net/2016/08/27/serverless.html

Slide 7

Slide 7 text

LET’S TALK ABOUT THESE EVENTS SOUND TOO SIMPLE FOR REAL APPS?

Slide 8

Slide 8 text

WHAT CAN TRIGGER A FUNCTION? EVENT SOURCES ▸ File uploaded ▸ Database changed ▸ Schedule ▸ Email received ▸ HTTP endpoint called ▸ Manual invocation ▸ …and so on

Slide 9

Slide 9 text

WHAT CAN TRIGGER A FUNCTION? AWS LAMBDA ▸ S3 ▸ DynamoDB ▸ Kinesis ▸ API Gateway ▸ Alexa ▸ SNS ▸ CloudWatch ▸ Schedule ▸ …and more

Slide 10

Slide 10 text

WHAT CAN TRIGGER A FUNCTION? AZURE FUNCTIONS ▸ Blob Storage ▸ Event Hub ▸ Webhook ▸ GitHub webhook ▸ Queue ▸ ServiceBus Queue ▸ ServiceBus Topic ▸ Timer ▸ …and more

Slide 11

Slide 11 text

EXAMPLE USE CASES

Slide 12

Slide 12 text

IMAGE RESIZING

Slide 13

Slide 13 text

DATA WAREHOUSE ETL

Slide 14

Slide 14 text

MOBILE BACKEND FOR SOCIAL MEDIA APP

Slide 15

Slide 15 text

FUNCTION ENVIRONMENT AWS LAMBDA ▸ Amazon Linux AMI 2015.09 ▸ 5 minute execution time limit ▸ Languages ▸ JavaScript ▸ Java ▸ Python

Slide 16

Slide 16 text

FUNCTION ENVIRONMENT AZURE FUNCTIONS ▸ Runs on WebJobs (Windows Server 2012) ▸ No execution time limit ▸ Languages ▸ JavaScript ▸ C# ▸ F# ▸ Python ▸ PHP ▸ Bash ▸ Batch ▸ PowerShell

Slide 17

Slide 17 text

PRICING COMPARISON (MONTHLY) AWS LAMBDA ▸ Free ▸ 1M executions ▸ 400,000 GB-s ▸ Additional ▸ $0.20 / 1M executions ▸ $0.00001667 per GB-s AZURE FUNCTIONS ▸ Free ▸ 1M executions ▸ 400,000 GB-s ▸ Additional ▸ $0.20 / 1M executions ▸ $0.000008 per GB-s

Slide 18

Slide 18 text

PRICING EXAMPLE 256MB memory, 3 million executions, 1s per execution 3M * 1s * 256MB/1024 = 750,000 GB-s 750,000 GB-s - 400,000 free = 350,000 GB-s 350,000 * $0.00001667 = $5.83 AWS LAMBDA AZURE FUNCTIONS Compute 3M - 1M free = 2M requests 2M * $0.2 = $0.40 Request Monthly Total: $6.23 3M * 1s * 256MB/1024 = 750,000 GB-s 750,000 GB-s - 400,000 free = 350,000 GB-s 350,000 * $0.000008 = $2.80 Compute 3M - 1M free = 2M requests 2M * $0.2 = $0.40 Request Monthly Total: $3.20

Slide 19

Slide 19 text

REAL WORLD CASE STUDIES

Slide 20

Slide 20 text

https://fmlnerd.com/2016/08/16/30k-page-views-for-0-21-a-serverless-story/

Slide 21

Slide 21 text

http://benchling.engineering/crispr-aws-lambda/

Slide 22

Slide 22 text

IT’S NOT JUST AMAZON AND MICROSOFT EVERYBODY’S DOING IT IBM OpenWhisk …and others

Slide 23

Slide 23 text

LET’S WRITE SOME FUNCTIONS

Slide 24

Slide 24 text

QUESTIONS? Greg Shackles Principal Engineer, Olo @gshackles gregshackles.com