SlideShare uma empresa Scribd logo
1 de 81
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

Application Resilience Patterns
Application Resilience PatternsApplication Resilience Patterns
Application Resilience Patterns
Kiran Sama
 
Hadoop REST API Security with Apache Knox Gateway
Hadoop REST API Security with Apache Knox GatewayHadoop REST API Security with Apache Knox Gateway
Hadoop REST API Security with Apache Knox Gateway
DataWorks Summit
 

Mais procurados (20)

Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Application Resilience Patterns
Application Resilience PatternsApplication Resilience Patterns
Application Resilience Patterns
 
Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - Verisign
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
Microservices Decomposition Patterns
Microservices Decomposition PatternsMicroservices Decomposition Patterns
Microservices Decomposition Patterns
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in Practice
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
Resilience4J
Resilience4J Resilience4J
Resilience4J
 
Kubernetes a comprehensive overview
Kubernetes   a comprehensive overviewKubernetes   a comprehensive overview
Kubernetes a comprehensive overview
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Kafka 101
Kafka 101Kafka 101
Kafka 101
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
CAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain SyndromeCAP Theorem and Split Brain Syndrome
CAP Theorem and Split Brain Syndrome
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - Observability
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 
Hadoop REST API Security with Apache Knox Gateway
Hadoop REST API Security with Apache Knox GatewayHadoop REST API Security with Apache Knox Gateway
Hadoop REST API Security with Apache Knox Gateway
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 

Semelhante a Patterns of resilience

Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service Design
Uwe Friedrichsen
 

Semelhante a 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
 
Production-ready Software
Production-ready SoftwareProduction-ready Software
Production-ready Software
 
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
 
Resilient Functional Service Design
Resilient Functional Service DesignResilient Functional Service Design
Resilient Functional Service Design
 
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
 

Mais de Uwe Friedrichsen

Timeless design in a cloud-native world
Timeless design in a cloud-native worldTimeless design in a cloud-native world
Timeless design in a cloud-native world
Uwe Friedrichsen
 
Deep learning - a primer
Deep learning - a primerDeep learning - a primer
Deep learning - a primer
Uwe Friedrichsen
 
Real-world consistency explained
Real-world consistency explainedReal-world consistency explained
Real-world consistency explained
Uwe Friedrichsen
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
Uwe 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 microservices
Uwe 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 context
Uwe 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 IT
Uwe Friedrichsen
 

Mais de Uwe Friedrichsen (20)

Timeless design in a cloud-native world
Timeless design in a cloud-native worldTimeless design in a cloud-native world
Timeless design in a cloud-native world
 
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
 

Último

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Último (20)

WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

Patterns of resilience