SlideShare a Scribd company logo
1 of 81
Download to read offline
Patterns of Resilience
A small pattern language

Uwe Friedrichsen – codecentric AG – 2014-2016
@ufried
Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com
Resilience? Never heard of it …
re•sil•ience (rɪˈzɪl yəns) also re•sil′ien•cy, n.

1.  the power or ability to return to the original form, position,
etc., after being bent, compressed, or stretched; elasticity.
2.  ability to recover readily from illness, depression, adversity,
or the like; buoyancy.

Random House Kernerman Webster's College Dictionary, © 2010 K Dictionaries Ltd.
Copyright 2005, 1997, 1991 by Random House, Inc. All rights reserved.


http://www.thefreedictionary.com/resilience
What’s all the fuss about?
It‘s all about production!
Business
Production
Availability
Availability ≔ 
MTTF
MTTF + MTTR
MTTF: Mean Time To Failure
MTTR: Mean Time To Recovery
How can I maximize availability?
Traditional stability approach
Availability ≔ 
MTTF
MTTF + MTTR
Maximize MTTF
reliability

degree to which a system, product or component
performs specified functions
under specified conditions for a specified period of time

ISO/IEC 25010:2011(en)


https://www.iso.org/obp/ui/#iso:std:iso-iec:25010:ed-1:v1:en
Underlying assumption
What’s the problem?
(Almost) every system is a distributed system

Chas Emerick
The Eight Fallacies of Distributed Computing

1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn't change
6. There is one administrator
7. Transport cost is zero
8. The network is homogeneous

Peter Deutsch

https://blogs.oracle.com/jag/resource/Fallacies.html
A distributed system is one in which the failure
of a computer you didn't even know existed
can render your own computer unusable.

Leslie Lamport
Failures in todays complex, distributed and
interconnected systems are not the exception.

•  They are the normal case

•  They are not predictable
… and it’s getting “worse”


•  Cloud-based systems
•  Microservices
•  Zero Downtime
•  IoT & Mobile
•  Social

à Ever-increasing complexity and connectivity
Do not try to avoid failures. Embrace them.
Resilience approach
Availability ≔ 
MTTF
MTTF + MTTR
Minimize MTTR
resilience (IT)

the ability of a system to handle unexpected situations
-  without the user noticing it (best case)
-  with a graceful degradation of service (worst case)
Designing for resilience
A small pattern language
Isolation
Isolation
•  System must not fail as a whole
•  Split system in parts and isolate parts against each other
•  Avoid cascading failures
•  Requires set of measures to implement
Isolation
Bulkheads
Bulkheads

•  Core isolation pattern
•  a.k.a. “failure units” or “units of mitigation”
•  Used as units of redundancy (and thus, also as units of scalability)
•  Pure design issue
Isolation
Bulkheads
Complete
Parameter
Checking
Complete Parameter Checking

•  As obvious as it sounds, yet often neglected
•  Protection from broken/malicious calls (and return values)
•  Pay attention to Postel’s law
•  Consider specific data types
Complete Parameter Checking
// How to design request parameters
// Worst variant – requires tons of checks
String buySomething(Map<String, String> params);
// Still a bad variant – still a lot of checks required
String buySomething(String customerId, String productId, int count);
// Much better – only null checks required
PurchaseStatus buySomething(Customer buyer, Article product, Quantity count);
Isolation
Bulkheads
Complete
Parameter
Checking
Loose Coupling
Loose Coupling

•  Complements isolation
•  Reduce coupling between failure units
•  Avoid cascading failures
•  Different approaches and patterns available
Isolation
Bulkheads
Loose Coupling
Complete
Parameter
Checking
Asynchronous
Communication
Asynchronous Communication

•  Decouples sender from receiver
•  Sender does not need to wait for receiver’s response
•  Useful to prevent cascading failures due to failing/latent resources
•  Breaks up the call stack paradigm
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Complete
Parameter
Checking
Location
Transparency
Location Transparency

•  Decouples sender from receiver
•  Sender does not need to know receiver’s concrete location
•  Useful to implement redundancy and failover transparently
•  Usually implemented using dispatchers or mappers
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
 Location
Transparency
Complete
Parameter
Checking
Event-Driven
Event-Driven

•  Popular asynchronous communication style
•  Without broker location dependency is reversed
•  With broker location transparency is easily achieved
•  Very different from request-response paradigm
Request/response
(Sender depends on receiver)
Lookup
Sender
Receiver
Request/
Response
// from sender
receiver = lookup()
// from sender
result =
receiver.call()
Event-driven
without broker
(Receiver depends on sender)
// from sender
queue.send(msg)
// from receiver
queue =
sender.subscribe()
msg = queue.receive()
Subscribe
Sender
Receiver
Send
Receive
Event-driven
with broker
(Sender and receiver decoupled)
// from sender
broker = lookup()
broker.send(msg)
// from receiver
queue =
broker.subscribe()
msg = queue.receive()
Subscribe
Sender
Receiver
Send
Broker
Receive
Lookup
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Location
Transparency
Complete
Parameter
Checking
Stateless
Stateless

•  Supports location transparency (amongst other patterns)
•  Service relocation is hard with state
•  Service failover is hard with state
•  Very fundamental resilience and scalability pattern
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Location
Transparency
Stateless
Complete
Parameter
Checking
Relaxed
Temporal
Constraints
Relaxed Temporal Constraints

•  Strict consistency requires tight coupling of the involved nodes
•  Any single failure immediately compromises availability
•  Use a more relaxed consistency model to reduce coupling
•  The real world is not ACID, it is BASE (at best)!
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Idempotency
Idempotency

•  Non-idempotency is complicated to handle in distributed systems
•  (Usually) increases coupling between participating parties
•  Use idempotent actions to reduce coupling between nodes
•  Very fundamental resilience and scalability pattern
Unique request token (schematic)
// Client/Sender part
// Create request with unique request token (e.g., via UUID)
token = createUniqueToken()
request = createRequest(token, payload)
// Send request until successful
while (!successful)
send(request, timeout) // Do not forget failure handling
// Server/Receiver part
// Receive request
request = receive()
// Process request only if token is unknown
if (!lookup(request.token)) // needs to implemented in a CAS way to be safe
process(request)
store(token) // Store token for lookup (can be garbage collected eventually)
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Self-Containment
Self-Containment

•  Services are self-contained deployment units
•  No dependencies to other runtime infrastructure components
•  Reduces coupling at deployment time
•  Improves isolation and flexibility
Use a framework …
Spring Boot
Dropwizard
Jackson
…
Metrics
… or do it yourself
Isolation
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Latency Control
Latency control

•  Complements isolation
•  Detection and handling of non-timely responses
•  Avoid cascading temporal failures
•  Different approaches and patterns available
Isolation
Latency Control
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Timeouts
Timeouts

•  Preserve responsiveness independent of downstream latency
•  Measure response time of downstream calls
•  Stop waiting after a pre-determined timeout
•  Take alternate action if timeout was reached
Timeouts with standard library means
// Wrap blocking action in a Callable
Callable<MyActionResult> myAction = <My Blocking Action>
// Use a simple ExecutorService to run the action in its own thread
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<MyActionResult> future = executor.submit(myAction);
MyActionResult result = null;
// Use Future.get() method to limit time to wait for completion
try {
result = future.get(TIMEOUT, TIMEUNIT);
// Action completed in a timely manner – process results
} catch (TimeoutException e) {
// Handle timeout (e.g., schedule retry, escalate, alternate action, …)
} catch (...) {
// Handle other exceptions that can be thrown by Future.get()
} finally {
// Make sure the callable is stopped even in case of a timeout
future.cancel(true);
}
Isolation
Latency Control
Timeouts
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Circuit Breaker
Circuit Breaker

•  Probably most often cited resilience pattern
•  Extension of the timeout pattern
•  Takes downstream unit offline if calls fail multiple times
•  Specific variant of the fail fast pattern
// Hystrix “Hello world”
public class HelloCommand extends HystrixCommand<String> {
private static final String COMMAND_GROUP = ”Hello”; // Not important here
private final String name;
// Request parameters are passed in as constructor parameters
public HelloCommand(String name) {
super(HystrixCommandGroupKey.Factory.asKey(COMMAND_GROUP));
this.name = name;
}
@Override
protected String run() throws Exception {
// Usually here would be the resource call that needs to be guarded
return "Hello, " + name;
}
}
// Usage of a Hystrix command – synchronous variant
@Test
public void shouldGreetWorld() {
String result = new HelloCommand("World").execute();
assertEquals("Hello, World", result);
}
Source: https://github.com/Netflix/Hystrix/wiki/How-it-Works
Isolation
Latency Control
Circuit Breaker
Timeouts
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Fail Fast
Fail Fast

•  “If you know you’re going to fail, you better fail fast”
•  Avoid foreseeable failures
•  Usually implemented by adding checks in front of costly actions
•  Enhances probability of not failing
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Fan out &
quickest reply
Fan out & quickest reply

•  Send request to multiple workers
•  Use quickest reply and discard all other responses
•  Reduces probability of latent responses
•  Tradeoff is “waste” of resources
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Bounded Queues
Fan out &
quickest reply
Bounded Queues

•  Limit request queue sizes in front of highly utilized resources
•  Avoids latency due to overloaded resources
•  Introduces pushback on the callers
•  Another variant of the fail fast pattern
Bounded Queue Example
// Executor service runs with up to 6 worker threads simultaneously
// When thread pool is exhausted, up to 4 tasks will be queued -
// additional tasks are rejected triggering the PushbackHandler
final int POOL_SIZE = 6;
final int QUEUE_SIZE = 4;
// Set up a thread pool executor with a bounded queue and a PushbackHandler
ExecutorService executor =
new ThreadPoolExecutor(POOL_SIZE, POOL_SIZE, // Core pool size, max pool size
0, TimeUnit.SECONDS, // Timeout for unused threads
new ArrayBlockingQueue(QUEUE_SIZE),
new PushbackHandler);
// PushbackHandler - implements the desired pushback behavior
public class PushbackHandler implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
// Implement your pushback behavior here
}
}
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Shed Load
Shed Load

•  Upstream isolation pattern
•  Avoid becoming overloaded due to too many requests
•  Install a gatekeeper in front of the resource
•  Shed requests based on resource load
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Shed Load
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Complete
Parameter
Checking
Supervision
Supervision

•  Provides failure handling beyond the means of a single failure unit
•  Detect unit failures
•  Provide means for error escalation
•  Different approaches and patterns available
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Shed Load
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Supervision
Complete
Parameter
Checking
Monitor
Monitor

•  Observe unit behavior and interactions from the outside
•  Automatically respond to detected failures
•  Part of the system – complex failure handling strategies possible
•  Outside the system – more robust against system level failures
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Shed Load
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Supervision
Monitor
Complete
Parameter
Checking
Error Handler
Error Handler

•  Units often don’t have enough time or information to handle errors
•  Separate business logic and error handling
•  Business logic just focuses on getting the task done (quickly)
•  Error handler has sufficient time and information to handle errors
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Shed Load
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Supervision
Monitor
Error Handler
Complete
Parameter
Checking
Escalation
Escalation

•  Units often don’t have enough time or information to handle errors
•  Escalation peer with more time and information needed
•  Often multi-level hierarchies
•  Pure design issue
Escalation implementation
using Worker/Supervisor
W
Flow / Process
W
 W
W
 W
 W
 W
W
S
 S
 S
S
S
Escalation
Isolation
Latency Control
Fail Fast
Circuit Breaker
Timeouts
Fan out &
quickest reply
Bounded Queues
Shed Load
Bulkheads
Loose Coupling
Asynchronous
Communication
Event-Driven
Idempotency
Self-Containment
Relaxed
Temporal
Constraints
Location
Transparency
Stateless
Supervision
Monitor
Complete
Parameter
Checking
Error Handler
Escalation
… and there is more


•  Recovery & mitigation patterns
•  More supervision patterns
•  Architectural patterns
•  Anti-fragility patterns
•  Fault treatment & prevention patterns


A rich pattern family
Wrap-up

•  Today’s systems are distributed ...
•  … and it’s getting “worse”
•  Failures are the normal case
•  Failures are not predictable
•  Resilient software design needed
•  Rich pattern language
•  Isolation is a good starting point
Do not avoid failures. Embrace them!
@ufried
Uwe Friedrichsen | uwe.friedrichsen@codecentric.de | http://slideshare.net/ufried | http://ufried.tumblr.com
Patterns of resilience

More Related Content

What's hot

Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developersconfluent
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service DesignUwe Friedrichsen
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitecturePaul Mooney
 
Event-driven microservices
Event-driven microservicesEvent-driven microservices
Event-driven microservicesAndrew Schofield
 
Event Driven Microservices architecture
Event Driven Microservices architectureEvent Driven Microservices architecture
Event Driven Microservices architectureNikhilBarthwal4
 
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®confluent
 
Microservices
MicroservicesMicroservices
MicroservicesSmartBear
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
Resilient microservices
Resilient microservicesResilient microservices
Resilient microservicesMaxim Shelest
 
Writing Scalable Software in Java
Writing Scalable Software in JavaWriting Scalable Software in Java
Writing Scalable Software in JavaRuben Badaró
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureAbdelghani Azri
 
Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...Chris Richardson
 
Introduction to azure cosmos db
Introduction to azure cosmos dbIntroduction to azure cosmos db
Introduction to azure cosmos dbRatan Parai
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Circuit Breaker Pattern
Circuit Breaker PatternCircuit Breaker Pattern
Circuit Breaker PatternVikash Kodati
 
Scalable and Available, Patterns for Success
Scalable and Available, Patterns for SuccessScalable and Available, Patterns for Success
Scalable and Available, Patterns for SuccessDerek Collison
 

What's hot (20)

Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready Software
 
Apache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and DevelopersApache Kafka Fundamentals for Architects, Admins and Developers
Apache Kafka Fundamentals for Architects, Admins and Developers
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java Developers
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service Design
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Event-driven microservices
Event-driven microservicesEvent-driven microservices
Event-driven microservices
 
Event Driven Microservices architecture
Event Driven Microservices architectureEvent Driven Microservices architecture
Event Driven Microservices architecture
 
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
 
Microservices
MicroservicesMicroservices
Microservices
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
Resilience4J
Resilience4J Resilience4J
Resilience4J
 
Resilient microservices
Resilient microservicesResilient microservices
Resilient microservices
 
Writing Scalable Software in Java
Writing Scalable Software in JavaWriting Scalable Software in Java
Writing Scalable Software in Java
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...
 
Introduction to azure cosmos db
Introduction to azure cosmos dbIntroduction to azure cosmos db
Introduction to azure cosmos db
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Circuit Breaker Pattern
Circuit Breaker PatternCircuit Breaker Pattern
Circuit Breaker Pattern
 
Scalable and Available, Patterns for Success
Scalable and Available, Patterns for SuccessScalable and Available, Patterns for Success
Scalable and Available, Patterns for Success
 

Similar to Patterns of resilience

Why resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesWhy resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesUwe Friedrichsen
 
Resisting to The Shocks
Resisting to The ShocksResisting to The Shocks
Resisting to The ShocksStefano Fago
 
Azure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesAzure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesIvo Andreev
 
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + Retry
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + RetryCircuit breakers - Using Spring-Boot + Hystrix + Dashboard + Retry
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + RetryBruno Henrique Rother
 
Software Availability by Resiliency
Software Availability by ResiliencySoftware Availability by Resiliency
Software Availability by ResiliencyReza Samei
 
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...confluent
 
Latency Control And Supervision In Resilience Design Patterns
Latency Control And Supervision In Resilience Design Patterns Latency Control And Supervision In Resilience Design Patterns
Latency Control And Supervision In Resilience Design Patterns Tu Pham
 
Microservices - stress-free and without increased heart attack risk
Microservices - stress-free and without increased heart attack riskMicroservices - stress-free and without increased heart attack risk
Microservices - stress-free and without increased heart attack riskUwe Friedrichsen
 
Performance Issue? Machine Learning to the rescue!
Performance Issue? Machine Learning to the rescue!Performance Issue? Machine Learning to the rescue!
Performance Issue? Machine Learning to the rescue!Maarten Smeets
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016Matthias Noback
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliencyMasashi Narumoto
 
Rapid pruning of search space through hierarchical matching
Rapid pruning of search space through hierarchical matchingRapid pruning of search space through hierarchical matching
Rapid pruning of search space through hierarchical matchinglucenerevolution
 
Subverting Machine Learning Detections for fun and profit
Subverting Machine Learning Detections for fun and profitSubverting Machine Learning Detections for fun and profit
Subverting Machine Learning Detections for fun and profitRam Shankar Siva Kumar
 
Microservices Gone Wrong!
Microservices Gone Wrong!Microservices Gone Wrong!
Microservices Gone Wrong!Bert Ertman
 
Fault tolerant presentation
Fault tolerant presentationFault tolerant presentation
Fault tolerant presentationskadyan1
 
Service Stampede: Surviving a Thousand Services
Service Stampede: Surviving a Thousand ServicesService Stampede: Surviving a Thousand Services
Service Stampede: Surviving a Thousand ServicesAnil Gursel
 
Architectural Patterns of Resilient Distributed Systems
 Architectural Patterns of Resilient Distributed Systems Architectural Patterns of Resilient Distributed Systems
Architectural Patterns of Resilient Distributed SystemsInes Sombra
 

Similar to Patterns of resilience (20)

Why resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudesWhy resilience - A primer at varying flight altitudes
Why resilience - A primer at varying flight altitudes
 
Resisting to The Shocks
Resisting to The ShocksResisting to The Shocks
Resisting to The Shocks
 
Azure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challengesAzure architecture design patterns - proven solutions to common challenges
Azure architecture design patterns - proven solutions to common challenges
 
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + Retry
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + RetryCircuit breakers - Using Spring-Boot + Hystrix + Dashboard + Retry
Circuit breakers - Using Spring-Boot + Hystrix + Dashboard + Retry
 
Software Availability by Resiliency
Software Availability by ResiliencySoftware Availability by Resiliency
Software Availability by Resiliency
 
Fantastic Elastic
Fantastic ElasticFantastic Elastic
Fantastic Elastic
 
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
Hard Truths About Streaming and Eventing (Dan Rosanova, Microsoft) Kafka Summ...
 
Latency Control And Supervision In Resilience Design Patterns
Latency Control And Supervision In Resilience Design Patterns Latency Control And Supervision In Resilience Design Patterns
Latency Control And Supervision In Resilience Design Patterns
 
Microservices - stress-free and without increased heart attack risk
Microservices - stress-free and without increased heart attack riskMicroservices - stress-free and without increased heart attack risk
Microservices - stress-free and without increased heart attack risk
 
Performance Issue? Machine Learning to the rescue!
Performance Issue? Machine Learning to the rescue!Performance Issue? Machine Learning to the rescue!
Performance Issue? Machine Learning to the rescue!
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016
 
Chapter05 new
Chapter05 newChapter05 new
Chapter05 new
 
Designing apps for resiliency
Designing apps for resiliencyDesigning apps for resiliency
Designing apps for resiliency
 
Rapid pruning of search space through hierarchical matching
Rapid pruning of search space through hierarchical matchingRapid pruning of search space through hierarchical matching
Rapid pruning of search space through hierarchical matching
 
Subverting Machine Learning Detections for fun and profit
Subverting Machine Learning Detections for fun and profitSubverting Machine Learning Detections for fun and profit
Subverting Machine Learning Detections for fun and profit
 
Devops for Developers
Devops for DevelopersDevops for Developers
Devops for Developers
 
Microservices Gone Wrong!
Microservices Gone Wrong!Microservices Gone Wrong!
Microservices Gone Wrong!
 
Fault tolerant presentation
Fault tolerant presentationFault tolerant presentation
Fault tolerant presentation
 
Service Stampede: Surviving a Thousand Services
Service Stampede: Surviving a Thousand ServicesService Stampede: Surviving a Thousand Services
Service Stampede: Surviving a Thousand Services
 
Architectural Patterns of Resilient Distributed Systems
 Architectural Patterns of Resilient Distributed Systems Architectural Patterns of Resilient Distributed Systems
Architectural Patterns of Resilient Distributed Systems
 

More from Uwe Friedrichsen

The hitchhiker's guide for the confused developer
The hitchhiker's guide for the confused developerThe hitchhiker's guide for the confused developer
The hitchhiker's guide for the confused developerUwe Friedrichsen
 
Digitization solutions - A new breed of software
Digitization solutions - A new breed of softwareDigitization solutions - A new breed of software
Digitization solutions - A new breed of softwareUwe Friedrichsen
 
Real-world consistency explained
Real-world consistency explainedReal-world consistency explained
Real-world consistency explainedUwe Friedrichsen
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsUwe Friedrichsen
 
The truth about "You build it, you run it!"
The truth about "You build it, you run it!"The truth about "You build it, you run it!"
The truth about "You build it, you run it!"Uwe Friedrichsen
 
The promises and perils of microservices
The promises and perils of microservicesThe promises and perils of microservices
The promises and perils of microservicesUwe Friedrichsen
 
DevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextDevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextUwe Friedrichsen
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architecturesUwe Friedrichsen
 
Conway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITConway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITUwe Friedrichsen
 
Modern times - architectures for a Next Generation of IT
Modern times - architectures for a Next Generation of ITModern times - architectures for a Next Generation of IT
Modern times - architectures for a Next Generation of ITUwe Friedrichsen
 
The Next Generation (of) IT
The Next Generation (of) ITThe Next Generation (of) IT
The Next Generation (of) ITUwe Friedrichsen
 
Dr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismDr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismUwe Friedrichsen
 
How to survive in a BASE world
How to survive in a BASE worldHow to survive in a BASE world
How to survive in a BASE worldUwe Friedrichsen
 

More from Uwe Friedrichsen (20)

Deep learning - a primer
Deep learning - a primerDeep learning - a primer
Deep learning - a primer
 
Life after microservices
Life after microservicesLife after microservices
Life after microservices
 
The hitchhiker's guide for the confused developer
The hitchhiker's guide for the confused developerThe hitchhiker's guide for the confused developer
The hitchhiker's guide for the confused developer
 
Digitization solutions - A new breed of software
Digitization solutions - A new breed of softwareDigitization solutions - A new breed of software
Digitization solutions - A new breed of software
 
Real-world consistency explained
Real-world consistency explainedReal-world consistency explained
Real-world consistency explained
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
The truth about "You build it, you run it!"
The truth about "You build it, you run it!"The truth about "You build it, you run it!"
The truth about "You build it, you run it!"
 
The promises and perils of microservices
The promises and perils of microservicesThe promises and perils of microservices
The promises and perils of microservices
 
Watch your communication
Watch your communicationWatch your communication
Watch your communication
 
Life, IT and everything
Life, IT and everythingLife, IT and everything
Life, IT and everything
 
DevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader contextDevOps is not enough - Embedding DevOps in a broader context
DevOps is not enough - Embedding DevOps in a broader context
 
Towards complex adaptive architectures
Towards complex adaptive architecturesTowards complex adaptive architectures
Towards complex adaptive architectures
 
Conway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective ITConway's law revisited - Architectures for an effective IT
Conway's law revisited - Architectures for an effective IT
 
Modern times - architectures for a Next Generation of IT
Modern times - architectures for a Next Generation of ITModern times - architectures for a Next Generation of IT
Modern times - architectures for a Next Generation of IT
 
The Next Generation (of) IT
The Next Generation (of) ITThe Next Generation (of) IT
The Next Generation (of) IT
 
No stress with state
No stress with stateNo stress with state
No stress with state
 
Resilience with Hystrix
Resilience with HystrixResilience with Hystrix
Resilience with Hystrix
 
Self healing data
Self healing dataSelf healing data
Self healing data
 
Dr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinismDr. Hectic and Mr. Hype - surviving the economic darwinism
Dr. Hectic and Mr. Hype - surviving the economic darwinism
 
How to survive in a BASE world
How to survive in a BASE worldHow to survive in a BASE world
How to survive in a BASE world
 

Recently uploaded

JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxRTS corp
 

Recently uploaded (20)

JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Advantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptxAdvantages of Cargo Cloud Solutions.pptx
Advantages of Cargo Cloud Solutions.pptx
 

Patterns of resilience