Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app...

93
© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates. Adrian Cockcroft AWS VP Cloud Architecture Strategy @adrianco May 21st, 2020 Modern App Development Serverless-First

Transcript of Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app...

Page 1: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Adrian Cockcroft

AWS VP Cloud Architecture Strategy

@adrianco

May 21st, 2020

Modern App

DevelopmentServerless-First

Page 2: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless app development isn’t an

incremental change, it’s a complete reset in

terms of the speed and cost and scalability

of what can be built…

Page 3: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

How long does it really

take to build a new application

from scratch?

Page 4: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Several teams

of ~four people

Non-profit organization

with a problem

Monday, 8 AM

Here’s a set of

problems. Pick

one and build a

solution by 8 PM

this evening…

“+ =

AWS re:Invent

Non-profit Hackathon for Social Good

Page 5: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Several teams

of ~four people

Non-profit organization

with a problem

Monday, 8 AM

Here’s a set of

problems. Pick

one and build a

solution by 8 PM

this evening…

“+ =

AWS re:Invent

Non-profit Hackathon for Social Good

Where would you start?

Page 6: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Every team used

AWS Lambda 1 Less than

a day total2

Extremely functional

and scalable prototypes4Many team

members first time

using AWS Lambda

3

2016 AWS re:Invent Hackathon

A “lightbulb moment”

Page 7: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

“The plural of

anecdote is not data”

But after telling the

hackathon story, other

people shared their stories…

Page 8: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

20 people 9 months 2 months left

+ =Poor

Progress

Story:

Conventional development disaster

Page 9: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

2 months left

Progress

Friday

Lunchbreak

Story:

Conventional Development Disaster

Page 10: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

2 months left

Progress

Friday

Lunchbreak

AWS Lambda

Serverless

From frustration, an idea…

Page 11: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

2 months left

Progress

Friday

AWS Lambda

Serverless

Home

SaturdaySundayMonday

Serverless development

Page 12: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

2 months left

Progress

AWS Lambda

Serverless

Office

Monday

PROJECT

COMPLETED!

Serverless development

Page 13: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Team finally agrees

it works and is secure

Serverless deployment discussion…

2 months left

Progress

AWS Lambda

Serverless

Office

Monday

Page 14: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Shipped

application

1 month early

Serverless deployment

Page 15: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

We have this small but

critical app running on

an IBM Mainframe.

We would like

to re-write it.

It looks like this.

Story: Serverless sizing discussion

Page 16: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

Story: Serverless sizing discussion

Okay, I think we

can build that

with serverless in

about two weeks…

That is much faster

than we expected!

! ! ! !But how much would it

cost to run? Mainframe

is $1 million a year.

Page 17: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

Story: Serverless sizing discussion

How often does

everything happen?Like this.

Page 18: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

Story: Serverless sizing discussion

WHAT??That’s ridiculous…

That looks like less

than a million functions

a month, so you get

the CPU for free.

Page 19: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

Story: Serverless sizing discussion

About 15 GBHow much storage?

Page 20: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS

Solutions

Architect Customer

Story: Serverless sizing discussion

You get the first 25 GB of

DynamoDB for free as well.

Continuous backups with

point-in-time recovery will

cost $6 a month though…

Can you make this look

like it costs more?

We will look

stupid if we go

to management

with a business

case like this…

Page 21: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

running

$1,000,000 per

year

Cost to run today

Lambda FunctionsServerless

2 weeks of work

to build and test

Less than 1 million

executions per month

Runs in the free tier, a few

$ for storage, API calls, etc.

in the free tier

https://medium.com/@gary.crook/ibm-mainframe-to-microservices-on-aws-lambda-done-in-60-seconds-6d07024c23d3

https://aws.amazon.com/blogs/apn/automated-refactoring-of-a-u-s-department-of-defense-mainframe-to-aws/

Story: Small but critical

IBM Mainframe app sizing exercise

Page 22: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Lots of corporate IT apps are very low

utilization spiky workloads. Complex

business event handling logic and workflow.

Page 23: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Ideal to re-write as serverless!

Lots of corporate IT apps are very low

utilization spiky workloads. Complex

business event handling logic and workflow.

Page 24: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

What is different

about serverless?

Page 25: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

REST JSON

Fast binary encodings

Splitting

Monoliths

Page 26: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Splitting

Monoliths

Page 27: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Page 28: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Page 29: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Page 30: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

Page 31: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

to Functions

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Standard building block

services provide standardized

platform capabilities that no

longer need to be built into

the monolith

Page 32: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to Functions

Business logic

Events connect building blocks

Page 33: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to Functions

Page 34: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to Functions

Page 35: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to Functionsephemeral

functions

Page 36: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

to

functions

ephemeral

Page 37: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

to

functions

ephemeral

Amazon API

Gateway

Amazon

SQS

Page 38: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

to

functions

ephemeral

Amazon API

Gateway

Amazon

Kinesis

Amazon

DynamoDB

Page 39: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Microservices

to

functions

ephemeral

Amazon API

Gateway

Amazon SNS

Amazon S3

Page 40: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

Kinesis

Amazon API

Gateway

Amazon SNS

Amazon S3

Amazon

DynamoDB

Amazon

SQS

Microservices

to Functionsephemeral

functions

When the system is

idle, it shuts down and

costs nothing to run

Page 41: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

So WHY is it so fast to

write a serverless app?An analogy…

Page 42: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

What is the

user need?

Page 43: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

What is the

problem you are

trying to solve?

Make a model spaceship

quickly and cheaply

Page 44: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Design a prototype

Traditional Development

Page 45: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Carve from

modelling clay

Traditional Development

Page 46: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Make molds

Traditional Development

Page 47: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Produce injection molded parts

Traditional Development

Page 48: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Assemble parts

Traditional Development

Page 49: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Sell finished toy

Traditional Development

Page 50: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Design

a prototype

Carve from

modelling clayMake molds Produce injection

molded parts

Assemble

parts

Sell finished

toy

Traditional Development

Page 51: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Big bag of blocks Instructions A few hours

Rapid Development

Page 52: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

A finished toy

Rapid Development

Page 53: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Lacks fine detail

Recognizable, but not exactly

what was asked for

Easy to modify and extend

Rapid Development

Page 54: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Take a group of Lego bricks…

…and form a new custom brick

A more specialized common component

Optimization

Page 55: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Full custom design

Months of work

Custom components may be

fragile and need to be debugged

and integrated

Too many detailed choices

Long decision cycles

Traditional

Building blocks assembly

Hours of work

Standard reliable components

scale and are well understood

and interoperable

Need to adjust requirements to

fit the patterns available

Constraints tend to reduce debate

and speed up decisions

Rapid Development

Page 56: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Custom code and services

Lots of choices of frameworks

and API mechanisms

Where needed, optimize serverless

applications by also building services

using containers to solve for anything

serverless doesn’t do well… yet.

Serverless events and functions

Standardized choices

Combine building blocks including:

AWS Lambda

API Gateway, EventBridge

Amazon SNS, SQS

Amazon DynamoDB

AWS Step Functions

Containers Serverless

Page 57: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Note: See re:Invent 2019 SVS343

So…why doesn’t everyone

use serverless first?Objections and limitations

Page 58: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

There are answers to all of these…

Language support

Scalability, resilience

Startup and network latency

Databases/storage interfacing

Security

State handling, event processing

Limited run duration

Complex configs

Patterns, portability Too hard to get started

Objections summary

Page 59: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS supported languages:

Java, Go, PowerShell, Node.js,

C#, Python, and Ruby

C++ example BYOL Runtime API

Third-party language support:

JVM based—Clojure, Scala etc.

Rust, PHP, Erlang, Elixir,

COBOL, FORTRAN... etc.

Objection

My favorite programming language

isn’t supported by AWS Lambda

Page 60: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS Lambda DEFAULT

concurrent execution limit

increased from 100 to 3,000 CPUs

Virginia, Oregon, Dublin

(500–1,000 elsewhere) 100 3,000

Since launch

https://docs.aws.amazon.com/lambda/latest/dg/scaling.html Serverless at Scale re:Invent 2019 SVS335

Objection

Serverless

doesn’t scale

Page 61: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless

doesn’t scale

Request increase

to AWS Lambda

concurrent execution limit

100 3,000

Objection

Limit can be increased to tens of thousands of

CPU’s all running your workload at once!

Page 62: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Startup latency

is too high

La

ten

cy

Years of performance tuning

Objection

Page 63: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Startup latency

is too high

Provisioned concurrency lets

you pre-initialize functions

Up to

300in 1–2

minutes

Then

500per

minute

NEW

10,000 in less than 20

minutes

Useful for “flash-sale” workloads

ObjectionLa

ten

cy

Years of performance tuning

Page 64: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Objection

Network setup

takes too long

It used to be slow

to attach a function

to a VPC network FIXED

September 2019

Now secure access to private

VPC networks isn’t an issue

Page 65: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Routing traffic to

Lambda is expensive

Reduced cost/faster

transforms, throttles

API

Gateway

Note: See re:Invent 2019 NET413, MOB307, MOB402

Simpler, high

throughput

ALB to Lambda

path based routing

Provides rich query

language to support

more work in fewer calls

AppSync

GraphQL

Objection

Page 66: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless isn’t secure

Every function

runs in its own

virtual machine

Initialized Lambdas

are only reused for

the same account

Initialized functions

are re-cycled after

a few hours

Minimal

attack surface

NO

open ports

NO long running

services to get infected

Objection

Page 67: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Objection

Lambda doesn’t

handle state

AWS Step Functions

provides a Lambda

based state machine

Flows can run

for a year

Visualization of

business logic

https://aws.amazon.com/getting-started/tutorials/create-a-serverless-workflow-step-functions-lambda/

Page 68: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Step Functions

is a toy

Based on

Amazon Simple Workflow

SWF used throughout

Amazon for many years

Very reliable

and scalable

AWS Step Functions Express

Workflows supports over

100,000 events per second!

Step rates

over 4000/s

NEW

Cost/step

$0.000025

Since launch

Objection

Page 69: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Need to run

for longer

AWS Lambda’s

max duration increased

5 min 15 min

2018

Objection

Page 70: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Need to run

for longer

AWS Lambda’s

max duration

5 min 15 min

Since launch

Use AWS Batch or Fargate to create serverless containers

for long running jobs

Objection

Page 71: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Current GPU hardware isn’t designed to be initialized

quickly and shared across many virtual machines so

it’s not a good fit for serverless workloads

Use AWS Batch or AWS Fargate to create serverless containers

that access specific instance types

Objection

Need to run

on a GPU

Page 72: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS Lambda can’t do sophisticated event processing

Amazon Kinesis Data Streams,

SQS FIFO, SNS Dead Letter Queue1 AWS Lambda

Destinations2

EventBridge schema registry and

discovery. One to many fan-out4Detailed controls for streamed

events and async events3

Note: See re:Invent 2019 API304, API315, API320, SVS308, SVS317

NEW

Objection

Page 73: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS Lambda doesn’t handle

SQL databases well

Per function concurrency limits to

prevent Lambda from overrunning

SQL database interfaces

RDS Proxy for serverless connection pooling and failover, using

AWS Secrets Manager to keep credentials out of application code

NEW

Objection

Note: See re:Invent 2019 DAT316, DAT317

Page 74: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

It’s hard to configure AWS Lambda

for complex production use cases

AWS Systems Manager

Parameter Store

AWS Lambda

environment variables

for feature flags

KMS for encryption

and integration with

Secrets Manager—no

hard-coded credentials

Objection

Page 75: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS Lambda Layers

for common code

2018

Stacks up in

reusable modules

Objection

It’s hard to configure AWS Lambda

for complex production use cases

Page 76: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless apps

aren’t portable

week on

AWS Lambda 1

MONTHS to build

portable with containers2

Time spent

arguing about

Kubernetes features

Time spent

building

serverless app

TWICE

AWS Lambda Other cloud serverless

Objection

Page 77: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Portable Open-Source tools

Amplify, Architect, Chalice, Claudia,js

Dawson, DEEP, Flogo, Lambada

Python-Lambda, Shep, Sparta, Zappa

Other serverless frameworks

Triggermesh for Istio/Knative/K8s

Kubeless, OpenFaaS, etc.

Azure Functions, Google Functions

https://aws.amazon.com/blogs/opensource/24-open-source-tools-for-the-serverless-developer-part-1/

Objection

Serverless apps

aren’t portable

Page 78: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AWS X-Ray Integration trace maps

CloudWatch Service Lens

CloudWatch Synthetics canary test

CloudWatch Contributor Insights

Third-party tools for serverless:

Datadog, I0pipe, SignalFX,

New Relic, Thundra, Epsagon,

Dashbird, AppDynamics, etc.

Objection

My debug tools don’t know how to monitor Lambda

Page 79: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless Architectural Patterns and Best Practices – re:Invent 2019 ARC307

Patterns blog: https://www.jeremydaly.com/serverless-microservice-patterns-for-aws/

Circuit Breaker, REST, GraphQL, WebHook, Fan-out, Streaming, Strangler

Lambda Power Tuning Test, Resilience – re:Invent 2019 SVS407

Objection

Where are the serverless patterns?

Page 80: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Too hard to

get started

AWS Serverless Application Model—

simple templating for common cases

including IAM roles management 1 AWS CDK support

for serverless applications2

SAM CLI—lots of new features in

2019. Local support for testing

with Docker Containers4Serverless framework and

Terraform support3NEW

https://aws.amazon.com/blogs/compute/improving-the-getting-started-experience-with-aws-lambda/

Objection

Third-party

Page 81: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

https://aws.amazon.com/serverless/serverlessrepo/

Objection

I can’t find or share pre-built serverless functions

Page 82: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates. © 2020, Amazon Web Services, Inc. or its Affiliates.

Serverless application

AircraftMLJerry Hargrove

@awsgeek

Page 83: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

What’s this?

Page 84: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

AircraftML

a serverless bot

Page 85: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

It started with

a BIG idea…Airbus

a380

...and a bit of code

Page 86: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

...and a little bit of code

It started with

a BIG idea…

def handler(event, context):

labels = recognition.detect_labels(image)

return parse_labels(labels)

Airbus

a380

Page 87: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Amazon

S3

Amazon API

GatewayAmazon

SageMaker

Amazon

Rekognition

Amazon

SNS

It EVOLVEDover time…

Amazon

SQS

...and a bit of code

...and a little

MORE code

Page 88: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

A

MODERNcloud application

Amazon

S3

Amazon API

GatewayAmazon

SageMaker

Amazon

Rekognition

Amazon

EventBridge

AWS Step

Functions

AWS Secrets

Manager

Page 89: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Orchestrated with

AWS Step Functions

Business logic in Lambda

Error

conditions

Control flow in Step Functions

Looping Branching

Page 90: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Built entirely

with the

AWS CDK

# Step 5 - classify aircraft

classify_aircraft_job = aws_stepfunctions.Task( self,

'Classify aircraft',

task = sft.InvokeFunction(classify_aircraft_func))

# Step 4 - Scan for tail numbers

detect_tailnumber_job = sf.Task( self,

'Detect tailnumber',

task = sft.InvokeFunction(detect_tailnumber_func))

detect_tailnumber_job.next(classify_aircraft_job)

# Step 3 - Crop aircraft from image

crop_aircraft_job = sf.Task( self,

'Crop aircraft',

task = sft.InvokeFunction(crop_image_func))

crop_aircraft_job.next(detect_tailnumber_job)

Page 91: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Language support

Scalability

Startup and network latency

Databases/storage interfacing

Security

State handling, event processing

Limited run duration

Complex configs

Portability Too hard to get started

Objections summary

There are answers to all of these…

Page 92: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Bottom line—

Serverless is the fastest way

to build a modern application

If you object, let us know what

we should work on next!

Page 93: Modern App Development · © 2020, Amazon Web Services, Inc. or its Affiliates. Serverless app development isn’t an incremental change, it’s a complete reset in terms of the speed

© 2020, Amazon Web Services, Inc. or its Affiliates.

Thank you!

Adrian Cockcroft

@adrianco

AWS VP Cloud Architecture Strategy