SlideShare una empresa de Scribd logo
1 de 229
Descargar para leer sin conexión
Patterns and Practices
for building resilient
serverless applications
presented by Yan Cui
@theburningmonk
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
“the capacity to recover quickly from difficulties; toughness.”
resilience
/rɪˈzɪlɪəns/
noun
@theburningmonk theburningmonk.com
“the capacity to recover quickly from difficulties; toughness.”
resilience
/rɪˈzɪlɪəns/
noun
it’s not about
preventing failures!
everything fails, all the time
@theburningmonk theburningmonk.com
we need to build applications that can withstand failures
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
don’t run your application on one server…
@theburningmonk theburningmonk.com
entire data centers can
go down…
@theburningmonk theburningmonk.com
run your application in multiple AZs and regions
@theburningmonk theburningmonk.com
Failures on load: exhaustion of resources
@theburningmonk theburningmonk.com
Failures on load: exhaustion of resources
@theburningmonk theburningmonk.com
latency
reqs/s
Failures on load: exhaustion of resources
CPU saturation
@theburningmonk theburningmonk.com
Failures in distributed systems
Service A Service B Service C
user
@theburningmonk theburningmonk.com
Failures in distributed systems
Service A Service B Service C
user
@theburningmonk theburningmonk.com
Failures in distributed systems
Service A Service B Service C
user
HTTP 502
@theburningmonk theburningmonk.com
Failures in distributed systems
Service A Service B Service C
user
You suck!
@theburningmonk theburningmonk.com
microservices death stars circa 2015
Yan Cui
http://theburningmonk.com
@theburningmonk
AWS user for 10 years
Yan Cui
http://theburningmonk.com
@theburningmonk
http://bit.ly/yubl-serverless
Yan Cui
http://theburningmonk.com
@theburningmonk
Developer Advocate @
Yan Cui
http://theburningmonk.com
@theburningmonk
Independent Consultant
advisetraining delivery
by Uwe Friedrichsen
@theburningmonk theburningmonk.com
Lambda execution environment
@theburningmonk theburningmonk.com
Serverless - multiple AZ’s out of the box
Total resources created:
1 API Gateway
1 Lambda
@theburningmonk theburningmonk.com
Serverless - multiple AZ’s out of the box
Total resources created:
1 API Gateway
1 Lambda
don’t pay for idle
redundant resources!
@theburningmonk theburningmonk.com
Load balancing
@theburningmonk theburningmonk.com
Data replication in different AZ’s
DynamoDB
Global Tables
@theburningmonk theburningmonk.com
There are throttling everywhere!
@theburningmonk theburningmonk.com
Beware of timeout mismatch
API Gateway

Integration timeout 

Default: 29s
Lambda

Timeout
Max: 15 minutes
@theburningmonk theburningmonk.com
Beware of timeout mismatch
Lambda

Timeout
Max: 15 minutes
SQS

Visibility timeout

Default: 30s
Min: 0s
Max: 12 hours
@theburningmonk theburningmonk.com
Beware of timeout mismatch
Lambda

Timeout
Max: 15 minutes
SQS

Visibility timeout

Default: 30s
Min: 0s
Max: 12 hours
set VisibilityTimeout to
6x Lambda timeout
@theburningmonk theburningmonk.com
Offload computing operations to queues
@theburningmonk theburningmonk.com
Offload computing operations to queues
@theburningmonk theburningmonk.com
Offload computing operations to queues
better absorb
downstream problems
@theburningmonk theburningmonk.com
Offload computing operations to queues
need way to replay
DLQ events
https://www.npmjs.com/package/lumigo-cli
@theburningmonk theburningmonk.com
Offload computing operations to queues
great for fire-and-forget tasks
@theburningmonk theburningmonk.com
“what if the client is waiting for a response?”
@theburningmonk theburningmonk.com
“Decoupled Invocation”
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx <null>
… … …
task results
not ready…
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx <null>
… … …
task results
not ready…
202
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx <null>
… … …
task results
reporting for duty!
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx <null>
… … …
task results
working hard…
not ready…
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx <null>
… … …
task results
202
working hard…
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx { … }
… … …
task results
done!
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx { … }
… … …
task results
done!
@theburningmonk theburningmonk.com
task id created at result
xxx xxx <null>
xxx xxx { … }
… … …
task results
200
{ … }
@theburningmonk theburningmonk.com
wait…
@theburningmonk theburningmonk.com
a distributed
transaction!
@theburningmonk theburningmonk.com
a distributed
transaction!
needs rollback
@theburningmonk theburningmonk.com
no distributed
transactions
@theburningmonk theburningmonk.com
do the work here
@theburningmonk theburningmonk.com
retry-until-success
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
24 hours data retention
@theburningmonk theburningmonk.com
24 hours data retention
need alerting to ensure
issue are addressed quickly
@theburningmonk theburningmonk.com
retry-until-success
needs to deal with
poinson messages
@theburningmonk theburningmonk.com
what if you can’t avoid distributed transactions?
@theburningmonk theburningmonk.com
The Saga pattern
A pattern for managing failures where each action
has a compensating action for rollback
@theburningmonk theburningmonk.com
The Saga pattern
https://www.youtube.com/watch?v=xDuwrtwYHu8
@theburningmonk theburningmonk.com
The Saga pattern
Begin transaction
Start book hotel request
End book hotel request
Start book flight request
End book flight request
Start book car rental request
End book car rental request
End transaction
@theburningmonk theburningmonk.com
The Saga pattern
model both actions and
compensating actions as
Lambda functions
@theburningmonk theburningmonk.com
The Saga pattern
use Step Functions as the
coordinator for the saga
@theburningmonk theburningmonk.com
The Saga pattern
Input
@theburningmonk theburningmonk.com
The Saga pattern
@theburningmonk theburningmonk.com
The Saga pattern
@theburningmonk theburningmonk.com
The Saga pattern
@theburningmonk theburningmonk.com
retry-until-success
needs to deal with
poinson messages
Mind the poison message
@theburningmonk theburningmonk.com
Mind the poison message
@theburningmonk theburningmonk.com
Mind the poison message
@theburningmonk theburningmonk.com
Mind the poison message
@theburningmonk theburningmonk.com
Mind the poison message
6, 3, 1, 1, 1, 1, …
@theburningmonk theburningmonk.com
Mind the poison message
6, 3, 1, 1, 1, 1, …
only count the “same” batch
@theburningmonk theburningmonk.com
Mind the poison message
@theburningmonk theburningmonk.com
Mind the poison message
have to fetch
from the stream
@theburningmonk theburningmonk.com
Mind the poison message
have to fetch
from the stream
do it before they expire
from the stream!
@theburningmonk theburningmonk.com
how do you prevent building up an insurmountable backlog?
@theburningmonk theburningmonk.com
Load shedding
implement load shedding
prioritize newer messages with
a better chance to succeed
@theburningmonk theburningmonk.com
Load shedding
excess load is sent to DLQ
@theburningmonk theburningmonk.com
Load shedding
process with a delay
@theburningmonk theburningmonk.com
Mind the partial failures
LambdaSQS
@theburningmonk theburningmonk.com
Mind the partial failures
LambdaSQS Poller
@theburningmonk theburningmonk.com
LambdaSQS Poller
Mind the partial failures
Delete
@theburningmonk theburningmonk.com
Mind the partial failures
LambdaSQS Poller
Error
@theburningmonk theburningmonk.com
Mind the partial failures
LambdaSQS Poller
Error
DLQ
@theburningmonk theburningmonk.com
Mind the partial failures
LambdaSQS Poller
Error
DLQ
batch fails as a unit
https://lumigo.io/blog/sqs-and-lambda-the-missing-guide-on-failure-modes
Mind the partial failures
@theburningmonk theburningmonk.com
Mind the partial failures
@theburningmonk theburningmonk.com
Mind the partial failures
@theburningmonk theburningmonk.com
Mind the partial failures
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
retry
retry
retry
retry
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
Mind the retry storm
Service A
@theburningmonk theburningmonk.com
retry storm
@theburningmonk theburningmonk.com
circuit breaker pattern
After X consecutive timeouts, trip the circuit
@theburningmonk theburningmonk.com
circuit breaker pattern
After X consecutive timeouts, trip the circuit
When circuit is open, fail fast
@theburningmonk theburningmonk.com
circuit breaker pattern
When circuit is open, fail fast
but, allow 1 request through every Y mins
After X consecutive timeouts, trip the circuit
@theburningmonk theburningmonk.com
circuit breaker pattern
When circuit is open, fail fast
but, allow 1 request through every Y mins
If request succeeds, close the circuit
After X consecutive timeouts, trip the circuit
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
where do I keep the state of the circuit?
@theburningmonk theburningmonk.com
in-memory
Service A
isOpen: false
isOpen: false
isOpen: false
isOpen: false
@theburningmonk theburningmonk.com
in-memory
Service A
isOpen: true
isOpen: false
isOpen: true
isOpen: false
@theburningmonk theburningmonk.com
in-memory
PROS
simplicity
@theburningmonk theburningmonk.com
in-memory
PROS
simplicity
no dependency on external service
requires another circuit
breaker to protect…
cost & maintenance
overhead (IAM, infra, etc.)
@theburningmonk theburningmonk.com
in-memory
PROS
simplicity
no dependency on external service
CONS
takes longer & more requests to stop all traffic
@theburningmonk theburningmonk.com
in-memory
PROS
simplicity
no dependency on external service
CONS
takes longer & more requests to stop all traffic
new containers would generate more traffic
@theburningmonk theburningmonk.com
external service
Service AisOpen: false
@theburningmonk theburningmonk.com
external service
Service AisOpen: true
@theburningmonk theburningmonk.com
external service
Service AisOpen: true
@theburningmonk theburningmonk.com
external service
PROS
minimizes no. of total requests to trip circuit
new containers respect collective decision
CONS
complexity
dependency on an external service
@theburningmonk theburningmonk.com
which approach should I use?
@theburningmonk theburningmonk.com
which approach should I use?
It depends. Maybe start with the simplest solution first?
@theburningmonk theburningmonk.com
Lambda autoscaling
Burst concurrency limits:

3000 – US West (Oregon), US East (N.
Virginia), Europe (Ireland), 1000 – Asia Pacific
(Tokyo), Europe (Frankfurt), 500 – Other
Regions
Burst: 500 new instances / each minute

@theburningmonk theburningmonk.com
Lambda autoscaling
Burst concurrency limits:

3000 – US West (Oregon), US East (N.
Virginia), Europe (Ireland), 1000 – Asia Pacific
(Tokyo), Europe (Frankfurt), 500 – Other
Regions
Burst: 500 new instances / each minute

Standard burst concurrency limits when over the
provisioned capacity


@theburningmonk theburningmonk.com
Lambda autoscaling
Burst concurrency limits:

3000 – US West (Oregon), US East (N.
Virginia), Europe (Ireland), 1000 – Asia Pacific
(Tokyo), Europe (Frankfurt), 500 – Other
Regions
Burst: 500 new instances / each minute

Adjustable provisioned capacity based on
CloudWatch metrics
Standard burst concurrency limits when over the
provisioned capacity


@theburningmonk theburningmonk.com
Lambda limitations & throttling
Concurrent executions: 1000*

Timeout: 15 minutes

Burst concurrency: 500 - 3000

Burst: 500 new instances / minute
* Can be increased with support ticket
@theburningmonk theburningmonk.com
Lambda limitations & throttling
good for spikey
traffic, up to a point
Concurrent executions: 1000*

Timeout: 15 minutes

Burst concurrency: 500 - 3000

Burst: 500 new instances / minute
* Can be increased with support ticket
@theburningmonk theburningmonk.com
“what if my traffic is more spiky than that?”
@theburningmonk theburningmonk.com
Scenario: predictable spikes
Holidays, weekends,

celebrations

(Black Friday)
Planned launch of

resources

(new series available)
Sport events
@theburningmonk theburningmonk.com
Scenario: predictable spikes
scheduled auto-scaling
@theburningmonk theburningmonk.com
Scenario: predictable spikes
scheduled auto-scaling
the burst limits still
apply, factor the timing
into account
@theburningmonk theburningmonk.com
Scenario: predictable spikes
@theburningmonk theburningmonk.com
Scenario: unpredictable spikes
Traffic generated by user
actions



Jennifer Aniston’s first post
@theburningmonk theburningmonk.com
“if Lambda scaling is the problem…”
@theburningmonk theburningmonk.com
Client only needs an acknowledgement
https://lumigo.io/blog/the-why-when-and-how-of-api-gateway-service-proxies
@theburningmonk theburningmonk.com
multi-region, active-active
@theburningmonk theburningmonk.com
us-east-1
API Gateway Lambda DynamoDBRoute53
@theburningmonk theburningmonk.com
eu-west-1
us-east-1
us-west-1
@theburningmonk theburningmonk.com
eu-west-1
us-east-1
us-west-1
GlobalTable
@theburningmonk theburningmonk.com
eu-west-1
us-east-1
us-west-1
GlobalTable
@theburningmonk theburningmonk.com
eu-central-1
us-east-1
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
SNS
SNS
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
eu-central-1
us-east-1
SNS
SNS
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
eu-central-1
us-east-1
SNS
SNS
https://lumigo.io/blog/amazon-builders-library-in-focus-5-static-stability-using-availability-zones
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
eu-central-1
us-east-1
SNS
SNS
Ddedupe
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
us-east-1
SNS
eu-central-1
SNS
eu-central-1
SQS Lambda DynamoDB Lambda API Gateway
Global Table
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
us-east-1
SNS
eu-central-1
SNS
eu-central-1
SQS Lambda DynamoDB Lambda API Gateway
Global Table
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
us-east-1
SNS
eu-central-1
SNS
eu-central-1
SQS Lambda DynamoDB Lambda API Gateway
Global Table
@theburningmonk theburningmonk.com
us-east-1
SQS Lambda DynamoDB Lambda API Gateway
us-east-1
SNS
eu-central-1
SNS
eu-central-1
SQS Lambda DynamoDB Lambda API Gateway
Global Table
@theburningmonk theburningmonk.com
Multi-region architecture - benefits & tradeoffs
Protection against

regional failures
Higher complexity Very hard to test
CHAOS ENGINEERING
MUST KILL SERVERS!
RAWR!!
RAWR!!
@theburningmonk theburningmonk.com
“the discipline of experimenting on a system in order to build confidence in the
system’s capability to withstand turbulent conditions in production”
principlesofchaos.org
@theburningmonk theburningmonk.com
“You don't choose the moment, the moment chooses you!
You only choose how prepared you are when it does.”
Fire Chief Mike Burtch
@theburningmonk theburningmonk.com
identify weaknesses before they manifest in system-wide, aberrant behaviors
GOAL
@theburningmonk theburningmonk.com
learn about the system’s behavior by observing it during a controlled experiments
HOW
@theburningmonk theburningmonk.com
learn about the system’s behavior by observing it during a controlled experiments
HOW
game days
failure injection
@theburningmonk theburningmonk.com
MUST KILL SERVERS!
RAWR!!
RAWR!!
ahhhhhhh!!!!
HELP!!!
OMG!!!
F***!!!
@theburningmonk theburningmonk.com
phew!
@theburningmonk theburningmonk.com
STEP 1.
define steady state
i.e. “what does normal look like”
@theburningmonk theburningmonk.com
STEP 2.
hypothesis that steady state continues in control and experimental group
e.g. “the system stays up if a server dies”
@theburningmonk theburningmonk.com
STEP 3.
inject realistic failures
e.g. “slow response from 3rd-party service”
@theburningmonk theburningmonk.com
STEP 4.
try to disprove hypothesis
i.e. “look for difference between control and experimental group”
DON’T START
EXPERIMENTS
IN PRODUCTION
@theburningmonk theburningmonk.com
identify weaknesses before they manifest in system-wide, aberrant behaviors
GOAL
@theburningmonk theburningmonk.com
“Corporation X lost millions due to a
chaos experiment went wrong and
destroyed key infrastructure,
resulting in hours of downtime and
unrecoverable data loss.”
@theburningmonk theburningmonk.com
Chaos Engineering doesn't cause problems. It reveals them.
Nora Jones
CONTAINMENT
CONTAINMENT
run experiments during office hours
CONTAINMENT
run experiments during office hours
let others know what you’re doing, no surprises
CONTAINMENT
run experiments during office hours
let others know what you’re doing, no surprises
avoid important dates
CONTAINMENT
run experiments during office hours
let others know what you’re doing, no surprises
avoid important dates
make the smallest change possible
CONTAINMENT
run experiments during office hours
let others know what you’re doing, no surprises
avoid important dates
make the smallest change possible
have a rollback plan before you start
DON’T START
EXPERIMENTS
IN PRODUCTION
by Russ Miles @russmiles
source https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
@theburningmonk theburningmonk.com
chaos monkey kills an
EC2 instance
latency monkey induces
artificial delay in APIs
chaos gorilla kills an AWS
Availability Zone
chaos kong kills an entire
AWS region
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
there are no servers to kill!
SERVERLESS
by Russ Miles @russmiles
source https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
by Russ Miles @russmiles
source https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
@theburningmonk theburningmonk.com
improperly tuned timeouts
@theburningmonk theburningmonk.com
missing error handling
@theburningmonk theburningmonk.com
missing fallbacks
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
“what if DynamoDB has an elevated error rate?”
@theburningmonk theburningmonk.com
hypothesis: the AWS SDK retries would handle it
DEMO TIME!
@theburningmonk theburningmonk.com
result: function times out after 6s
(hypothesis is disproved)
@theburningmonk theburningmonk.com
TIL: the js DynamoDB client defaults to 10 retries
with base delay of 50ms
@theburningmonk theburningmonk.com
TIL: the js DynamoDB client defaults to 10 retries
with base delay of 50ms
delay = Math.random() * (Math.pow(2, retryCount) * base)
this is Marc Brooker’s
fav formula!
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
action: set max retry count + fallback
DEMO TIME!
@theburningmonk theburningmonk.com
outcome: a more resilient system
@theburningmonk theburningmonk.com
“what if service X has elevated latency?”
@theburningmonk theburningmonk.com
hypothesis: our try-catch would handle it
DEMO TIME!
@theburningmonk theburningmonk.com
result: function times out after 6s
(hypothesis is disproved)
@theburningmonk theburningmonk.com
TIL: most HTTP client libraries have default timeout of 60s.
API Gateway has an integration timeout of 29s.
Most Lambda functions default to timeout of 3-6s.
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
https://bit.ly/2Wvfort
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
DEMO TIME!
@theburningmonk theburningmonk.com
outcome: a more resilient system
recap
everything fails, all the time
@theburningmonk theburningmonk.com
“the capacity to recover quickly from difficulties; toughness.”
resilience
/rɪˈzɪlɪəns/
noun
@theburningmonk theburningmonk.com
Serverless - multiple AZ’s out of the box
Total resources created:
1 API Gateway
1 Lambda
@theburningmonk theburningmonk.com
Beware of timeouts
API Gateway

Integration timeout 

Default: 29s
Lambda

Timeout
Max: 15 minutes
SQS

Visibility timeout

Default: 30s
Min: 0s
Max: 12 hours
@theburningmonk theburningmonk.com
Offload computing operations to queues
@theburningmonk theburningmonk.com
“Decoupled Invocation”
@theburningmonk theburningmonk.com
no distributed
transactions
@theburningmonk theburningmonk.com
retry-until-success
@theburningmonk theburningmonk.com
@theburningmonk theburningmonk.com
retry-until-success
needs to deal with
poinson messages
@theburningmonk theburningmonk.com
Mind the poison message
6, 3, 1, 1, 1, 1, …
only count the “same” batch
@theburningmonk theburningmonk.com
Load shedding
implement load shedding
prioritize newer messages with
a better chance to succeed
@theburningmonk theburningmonk.com
circuit breaker pattern
When circuit is open, fail fast
but, allow 1 request through every Y mins
If request succeeds, close the circuit
After X consecutive timeouts, trip the circuit
@theburningmonk theburningmonk.com
The Saga pattern
A pattern for managing failures where each action
has a compensating action for rollback
@theburningmonk theburningmonk.com
Mind the partial failures
@theburningmonk theburningmonk.com
Lambda autoscaling
Burst concurrency limits:

3000 – US West (Oregon), US East (N.
Virginia), Europe (Ireland), 1000 – Asia Pacific
(Tokyo), Europe (Frankfurt), 500 – Other
Regions
Burst: 500 new instances / each minute

Adjustable provisioned capacity based on
CloudWatch metrics
Standard burst concurrency limits when over the
provisioned capacity


@theburningmonk theburningmonk.com
Scenario: predictable spikes
scheduled auto-scaling
the burst limits still
apply, factor the timing
into account
@theburningmonk theburningmonk.com
eu-west-1
us-east-1
us-west-1
GlobalTable
@theburningmonk theburningmonk.com
“the discipline of experimenting on a system in order to build confidence in the
system’s capability to withstand turbulent conditions in production”
principlesofchaos.org
by Russ Miles @russmiles
source https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
by Russ Miles @russmiles
source https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
@theburningmonk theburningmonk.com
https://theburningmonk.com/hire-me
AdviseTraining Delivery
“Fundamentally, Yan has improved our team by increasing our
ability to derive value from AWS and Lambda in particular.”
Nick Blair
Tech Lead
@theburningmonk theburningmonk.com
lambdabestpractice.com bit.ly/complete-guide-to-aws-step-functions
20% off my courses
aws-delhi-may2020
@theburningmonk
theburningmonk.com
github.com/theburningmonk

Más contenido relacionado

Similar a Building Resilient Serverless Apps with the Circuit Breaker Pattern

Patterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfPatterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfYan Cui
 
How to build observability into a serverless application
How to build observability into a serverless applicationHow to build observability into a serverless application
How to build observability into a serverless applicationYan Cui
 
Essential open source tools for serverless developers
Essential open source tools for serverless developersEssential open source tools for serverless developers
Essential open source tools for serverless developersYan Cui
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsYan Cui
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverlessYan Cui
 
Serverless a superpower for frontend developers
Serverless a superpower for frontend developersServerless a superpower for frontend developers
Serverless a superpower for frontend developersYan Cui
 
Serverless gives you wings
Serverless gives you wingsServerless gives you wings
Serverless gives you wingsYan Cui
 
Common mistakes in serverless adoption
Common mistakes in serverless adoptionCommon mistakes in serverless adoption
Common mistakes in serverless adoptionYan Cui
 
Build social network in 4 weeks
Build social network in 4 weeksBuild social network in 4 weeks
Build social network in 4 weeksYan Cui
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsYan Cui
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsYan Cui
 
Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspectiveYan Cui
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLYan Cui
 
Debunking serverless myths
Debunking serverless mythsDebunking serverless myths
Debunking serverless mythsYan Cui
 
How to bring chaos engineering to serverless
How to bring chaos engineering to serverlessHow to bring chaos engineering to serverless
How to bring chaos engineering to serverlessYan Cui
 
Build a social network in 4 weeks with Serverless and GraphQL
Build a social network in 4 weeks with Serverless and GraphQLBuild a social network in 4 weeks with Serverless and GraphQL
Build a social network in 4 weeks with Serverless and GraphQLYan Cui
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverlessYan Cui
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLYan Cui
 
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28Amazon Web Services
 
JAX 2017 talk: Orchestration of microservices
JAX 2017 talk: Orchestration of microservicesJAX 2017 talk: Orchestration of microservices
JAX 2017 talk: Orchestration of microservicesBernd Ruecker
 

Similar a Building Resilient Serverless Apps with the Circuit Breaker Pattern (20)

Patterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfPatterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdf
 
How to build observability into a serverless application
How to build observability into a serverless applicationHow to build observability into a serverless application
How to build observability into a serverless application
 
Essential open source tools for serverless developers
Essential open source tools for serverless developersEssential open source tools for serverless developers
Essential open source tools for serverless developers
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 steps
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
Serverless a superpower for frontend developers
Serverless a superpower for frontend developersServerless a superpower for frontend developers
Serverless a superpower for frontend developers
 
Serverless gives you wings
Serverless gives you wingsServerless gives you wings
Serverless gives you wings
 
Common mistakes in serverless adoption
Common mistakes in serverless adoptionCommon mistakes in serverless adoption
Common mistakes in serverless adoption
 
Build social network in 4 weeks
Build social network in 4 weeksBuild social network in 4 weeks
Build social network in 4 weeks
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 steps
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 steps
 
Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspective
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQL
 
Debunking serverless myths
Debunking serverless mythsDebunking serverless myths
Debunking serverless myths
 
How to bring chaos engineering to serverless
How to bring chaos engineering to serverlessHow to bring chaos engineering to serverless
How to bring chaos engineering to serverless
 
Build a social network in 4 weeks with Serverless and GraphQL
Build a social network in 4 weeks with Serverless and GraphQLBuild a social network in 4 weeks with Serverless and GraphQL
Build a social network in 4 weeks with Serverless and GraphQL
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQL
 
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
 
JAX 2017 talk: Orchestration of microservices
JAX 2017 talk: Orchestration of microservicesJAX 2017 talk: Orchestration of microservices
JAX 2017 talk: Orchestration of microservices
 

Más de Yan Cui

How to win the game of trade-offs
How to win the game of trade-offsHow to win the game of trade-offs
How to win the game of trade-offsYan Cui
 
How to choose the right messaging service
How to choose the right messaging serviceHow to choose the right messaging service
How to choose the right messaging serviceYan Cui
 
How to choose the right messaging service for your workload
How to choose the right messaging service for your workloadHow to choose the right messaging service for your workload
How to choose the right messaging service for your workloadYan Cui
 
Lambda and DynamoDB best practices
Lambda and DynamoDB best practicesLambda and DynamoDB best practices
Lambda and DynamoDB best practicesYan Cui
 
Lessons from running AppSync in prod
Lessons from running AppSync in prodLessons from running AppSync in prod
Lessons from running AppSync in prodYan Cui
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
 
How serverless changes the cost paradigm
How serverless changes the cost paradigmHow serverless changes the cost paradigm
How serverless changes the cost paradigmYan Cui
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncYan Cui
 
FinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyFinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyYan Cui
 
How to improve lambda cold starts
How to improve lambda cold startsHow to improve lambda cold starts
How to improve lambda cold startsYan Cui
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020Yan Cui
 
A chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayA chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayYan Cui
 
How to debug slow lambda response times
How to debug slow lambda response timesHow to debug slow lambda response times
How to debug slow lambda response timesYan Cui
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020Yan Cui
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
 
Debugging Lambda timeouts
Debugging Lambda timeoutsDebugging Lambda timeouts
Debugging Lambda timeoutsYan Cui
 
Debugging AWS Lambda Performance Issues
Debugging AWS Lambda Performance  IssuesDebugging AWS Lambda Performance  Issues
Debugging AWS Lambda Performance IssuesYan Cui
 
Serverless Security: Defence Against the Dark Arts
Serverless Security: Defence Against the Dark ArtsServerless Security: Defence Against the Dark Arts
Serverless Security: Defence Against the Dark ArtsYan Cui
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020Yan Cui
 
Mastering AWS Organizations with Infrastructure as code
Mastering AWS Organizations with Infrastructure as codeMastering AWS Organizations with Infrastructure as code
Mastering AWS Organizations with Infrastructure as codeYan Cui
 

Más de Yan Cui (20)

How to win the game of trade-offs
How to win the game of trade-offsHow to win the game of trade-offs
How to win the game of trade-offs
 
How to choose the right messaging service
How to choose the right messaging serviceHow to choose the right messaging service
How to choose the right messaging service
 
How to choose the right messaging service for your workload
How to choose the right messaging service for your workloadHow to choose the right messaging service for your workload
How to choose the right messaging service for your workload
 
Lambda and DynamoDB best practices
Lambda and DynamoDB best practicesLambda and DynamoDB best practices
Lambda and DynamoDB best practices
 
Lessons from running AppSync in prod
Lessons from running AppSync in prodLessons from running AppSync in prod
Lessons from running AppSync in prod
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
 
How serverless changes the cost paradigm
How serverless changes the cost paradigmHow serverless changes the cost paradigm
How serverless changes the cost paradigm
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSync
 
FinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyFinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economy
 
How to improve lambda cold starts
How to improve lambda cold startsHow to improve lambda cold starts
How to improve lambda cold starts
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020
 
A chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayA chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage away
 
How to debug slow lambda response times
How to debug slow lambda response timesHow to debug slow lambda response times
How to debug slow lambda response times
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
 
Debugging Lambda timeouts
Debugging Lambda timeoutsDebugging Lambda timeouts
Debugging Lambda timeouts
 
Debugging AWS Lambda Performance Issues
Debugging AWS Lambda Performance  IssuesDebugging AWS Lambda Performance  Issues
Debugging AWS Lambda Performance Issues
 
Serverless Security: Defence Against the Dark Arts
Serverless Security: Defence Against the Dark ArtsServerless Security: Defence Against the Dark Arts
Serverless Security: Defence Against the Dark Arts
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020
 
Mastering AWS Organizations with Infrastructure as code
Mastering AWS Organizations with Infrastructure as codeMastering AWS Organizations with Infrastructure as code
Mastering AWS Organizations with Infrastructure as code
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Building Resilient Serverless Apps with the Circuit Breaker Pattern