Slide 1

Slide 1 text

SCALE YOUR NODE APPLICATION... ...FORGET THE INFRASTRUCTURE Matt Williams Evangelist @ Datadog [email protected] @technovangelist

Slide 2

Slide 2 text

IMAGINE THIS...

Slide 3

Slide 3 text

YOU HAVE BUILT AN APP (using node of course)

Slide 4

Slide 4 text

IT'S AMAZING

Slide 5

Slide 5 text

PEOPLE NOTICE

Slide 6

Slide 6 text

IT GETS POPULAR

Slide 7

Slide 7 text

AND NOT HOW IT SCALES BUT YOU FOCUSED ON THE APP

Slide 8

Slide 8 text

HOW DO YOU FIX THIS? Do Less Tweak & Tune Throw Hardware at it Refactor Rearchitect

Slide 9

Slide 9 text

NEXT TIME AROUND...

Slide 10

Slide 10 text

YOU BUILD AN APP (using node of course)

Slide 11

Slide 11 text

You have spent as much time on the app as on the infrastructure THIS TIME IS DIFFERENT

Slide 12

Slide 12 text

YOU STARTED WITH AN EXTENSIBLE PLATFORM

Slide 13

Slide 13 text

YOU HAVE CM READY to scale up and out

Slide 14

Slide 14 text

AND THE APPLICATION IS AMAZING...

Slide 15

Slide 15 text

FOR ALL 3 USERS WHO SHOWED UP

Slide 16

Slide 16 text

t2.large t2.xl t2.2xl m4.large m4.2xl c4.large r4.large 1 67 135 270.72 77.76 310.32 72 95.76 2 135 271 541 155 621 144 192 3 203 406 812 233 931 216 287

Slide 17

Slide 17 text

SO LETS LOOK AT AN ALTERNATIVE

Slide 18

Slide 18 text

SERVERLESS

Slide 19

Slide 19 text

AWS Lambda Azure Functions Google Cloud Functions IBM OpenWhisk SERVERLESS PLATFORMS

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

SERVERLESS ...AS FAR AS YOU ARE CONCERNED

Slide 23

Slide 23 text

WHAT IS LAMBDA? Your executable code No restrictions Priced based on: execution time quantity memory

Slide 24

Slide 24 text

LAMBDA FREE PLAN/MONTH           

Slide 25

Slide 25 text

RUN THE NUMBERS Run a Lambda function every 5 minutes s/m 1s 5s 10s 128 3,200,000 370 74 37 256 1,600,000 185 37 18 512 800,000 93 18 9 1024 400,000 46 9 5 1536 266,666 31 6 3 0.0025 cents / second thereafter for 1.5G

Slide 26

Slide 26 text

GETTING STARTED WITH LAMBDA

Slide 27

Slide 27 text

HOW TO CREATE A LAMBDA FUNCTION 1. Write the code 2. Setup on AWS 3. Debug

Slide 28

Slide 28 text

LAMBDA DEMO

Slide 29

Slide 29 text

FRAMEWORKS

Slide 30

Slide 30 text

NATIVE GOTCHAS Lambda runs on an Amazon Linux container... ...and your dev box is probably not Amazon Linux... ...so native NPM modules are problematic

Slide 31

Slide 31 text

NATIVE NPM 1. Launch Amazon Linux ec2 2. Use a node version manager 3. Install node 4.3 4. Install the native modules you need 5. Package the modules and dl to your box 6. Deploy

Slide 32

Slide 32 text

BUILDING THE DEMO WITH NODE-LAMBDA Four files: 1. package.json 2. .env 3. event.json 4. index.js

Slide 33

Slide 33 text

LAMBDA BEST PRACTICES Minimize startup Core logic into module Monitor Delete old functions

Slide 34

Slide 34 text

MONITORING 101 the tl;dr version

Slide 35

Slide 35 text

COLLECTING DATA IS CHEAP

Slide 36

Slide 36 text

COLLECTING DATA IS CHEAP NOT HAVING IT WHEN YOU NEED IT IS EXPENSIVE

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

THE FRAMEWORK

Slide 39

Slide 39 text

THE FRAMEWORK

Slide 40

Slide 40 text

THE FRAMEWORK

Slide 41

Slide 41 text

THE FRAMEWORK

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

MONITORING LAMBDA

Slide 46

Slide 46 text

WHAT ARE THE LAMBDA METRICS aws.lambda.duration, min, max, sum aws.lambda.errors aws.lambda.invocations aws.lambda.throttles

Slide 47

Slide 47 text

3 OPTIONS FOR MONITORING LAMBDA 1. Add a custom metric to CloudWatch 2. Add metric directly to monitoring application 3. Add a line to the CloudWatch logs

Slide 48

Slide 48 text

HOW WE DO IT Add a line to the CloudWatch logs:          !"

Slide 49

Slide 49 text

MONITORING EXAMPLE

Slide 50

Slide 50 text

MONITORING EXAMPLE

Slide 51

Slide 51 text

MONITORING EXAMPLE

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

MATT WILLIAMS EVANGELIST @ DATADOG [email protected] | @TECHNOVANGELIST