Transcript
Page 1: SQS ingress for AWS Lambda

for

AWS LAMBDAAWS LAMBDA

SQS ingressSQS ingress

Page 2: SQS ingress for AWS Lambda

hi, I’m Yan Cui

Page 3: SQS ingress for AWS Lambda
Page 4: SQS ingress for AWS Lambda

AWS user since 2009

Page 5: SQS ingress for AWS Lambda
Page 6: SQS ingress for AWS Lambda
Page 7: SQS ingress for AWS Lambda

can I haz SQS as ingress source?

Page 8: SQS ingress for AWS Lambda

DO ITwe canDO IT

ourselves!

Page 9: SQS ingress for AWS Lambda
Page 10: SQS ingress for AWS Lambda
Page 11: SQS ingress for AWS Lambda

retried 3 times

dead letter queue

configurable

dead letter queue

Page 12: SQS ingress for AWS Lambda

retried 3 times

dead letter queue

one invocation per message

configurable

dead letter queue

no. of pollers

Page 13: SQS ingress for AWS Lambda

retried 3 times

dead letter queue

one invocation per message

highest parallelism!

configurable

dead letter queue

no. of pollers

Page 14: SQS ingress for AWS Lambda

retried 3 times

dead letter queue

one invocation per message

consider impact on downstream systems consider Lambda throttling

which is per region, so otherfunctions can get throttled too

configurable

dead letter queue

no. of pollers

Page 15: SQS ingress for AWS Lambda
Page 16: SQS ingress for AWS Lambda

retried until success/expiry

NO dead letter queue

configurable

dead letter queue

Page 17: SQS ingress for AWS Lambda

retried until success/expiry

NO dead letter queue

configurable

dead letter queue

Page 18: SQS ingress for AWS Lambda

retried until success/expiry

NO dead letter queue

one invocation per shard

configurable

dead letter queue

no. of pollers

Page 19: SQS ingress for AWS Lambda

retried until success/expiry

NO dead letter queue

one invocation per shard

charged by shard hour + reqs

configurable

dead letter queue

no. of pollers

charged by reqs

Page 20: SQS ingress for AWS Lambda

retried until success/expiry configurable

NO dead letter queue dead letter queue

one invocation per shard no. of pollers

charged by shard hour + reqs charged by reqs

high baseline cost (1 shard) butorder of magnitude cheaper at scale

Page 21: SQS ingress for AWS Lambda

1 msg/s for a month (1K msgs)

1 x 60s x 60m x 24hr x 30days @ $0.4 per mil

= $1.0368

1 x 60s x 60m x 24hr x 30days @ $0.014 per mil+ 24hrs x 30days x $0.015 per hr

= $10.836

Page 22: SQS ingress for AWS Lambda

1000 msg/s for a month (1K msgs)

1000 x 60s x 60m x 24hr x 30days @ $0.4 per mil

= $1036.80

1000 x 60s x 60m x 24hr x 30days @ $0.014 per mil+ 24hrs x 30days x $0.015 per hr

= $47.088

Page 23: SQS ingress for AWS Lambda

“none of them is the right choice

for every situation”

Page 24: SQS ingress for AWS Lambda

SQS is right choice sometimes, no?

“none of them is the right choice

for every situation”

Page 25: SQS ingress for AWS Lambda

cron jobslevel 1

Page 26: SQS ingress for AWS Lambda

every X mins

Page 27: SQS ingress for AWS Lambda

simple cheap

Page 28: SQS ingress for AWS Lambda

simple cheap

good for predictable traffic

Page 29: SQS ingress for AWS Lambda

unpredictable traffic leads to unpredictable latency

Page 30: SQS ingress for AWS Lambda

unpredictable traffic leads to unpredictable latency

manual scaling

Page 31: SQS ingress for AWS Lambda

recursive functions

level 2

Page 32: SQS ingress for AWS Lambda

poll (long polling)

process

recurse

Page 33: SQS ingress for AWS Lambda
Page 34: SQS ingress for AWS Lambda

POLL

long polling

Page 35: SQS ingress for AWS Lambda

PROCESS

Page 36: SQS ingress for AWS Lambda

RECURSE

Page 37: SQS ingress for AWS Lambda

predictable latency even when traffic is unpredictable

Page 38: SQS ingress for AWS Lambda

unhandled exception kills loop

Page 39: SQS ingress for AWS Lambda

unhandled exception kills loop

cost

Page 40: SQS ingress for AWS Lambda
Page 41: SQS ingress for AWS Lambda

autoscalinglevel 3

Page 42: SQS ingress for AWS Lambda

poll (long polling)

process

continue?

recurseyes

stopno

Page 43: SQS ingress for AWS Lambda

token last_heartbeat

my_loop_1 2017-05-17 20:47:32.142

my_loop_2 2017-05-17 20:47:29.923

… …

passed to a recursive function at the start

Page 44: SQS ingress for AWS Lambda

every X mins

look for dead loops

Page 45: SQS ingress for AWS Lambda

every X mins

look for dead loops

recurse

start

Page 46: SQS ingress for AWS Lambda

too many messages

Page 47: SQS ingress for AWS Lambda

too many messages

add token

Page 48: SQS ingress for AWS Lambda

too many messagesrecurse

start

add token

Page 49: SQS ingress for AWS Lambda

http://bit.ly/2npomX6

Page 50: SQS ingress for AWS Lambda

DE moDE mo

show me the

Page 51: SQS ingress for AWS Lambda

@theburningmonktheburningmonk.comgithub.com/theburningmonk

Page 52: SQS ingress for AWS Lambda

Process SQS with Lambda

part 1 : http://bit.ly/2rvXYdW

part 2 : http://bit.ly/2pY0Grj

Page 53: SQS ingress for AWS Lambda

QUESTIONS?


Top Related