Design Patterns for Distributed Systems
Published by O'Reilly Media, Inc.
5 patterns for managing complexity and improving resiliency
Programmable cloud platforms and readily available open source components are fuelling the development of distributed and complex architectures. While these architectures allow platforms to scale rapidly, they bring in the operational complexity associated with distributed and complex applications. This added complexity demands higher investments in operational safeguards including resilience, observability, and traceability. The cost of reducing failure or surviving it can be tremendous when the underlying system is a collection of multiple complex processes.
Join expert Priyank Gupta to discover low-level coding patterns you can adopt to bake resilience into your low-level design. You’ll experiment with five resilience patterns that can help prevent or contain failures before they cascade across systems and that also allow the system to self-regulate to recovery or to gracefully handle failure without causing a complete outage.
What you’ll learn and how you can apply it
By the end of this live online course, you’ll understand:
- Various low level resilience patterns suitable for monolithic as well as distributed applications
- How to apply these patterns in applications in a cloud agnostic way
And you’ll be able to:
- Understand and spot things that will impact application resilience
- Make services and applications more resilient to prevent, isolate or survive failures
This live event is for you because...
- You’re a developer, lead, or an architect who engages in building systems at scale
- You work with complex or distributed applications that need to demonstrate resilience at code level as well as in design
- You want to build depth in foundational engineering and patterns for distributed systems
Prerequisites
- Familiarity with basic programming constructs
- An understanding of Java 8 constructs
Recommended preparation:
- Read “Stability Patterns” (chapter 5 in Release It, second edition)
Recommended follow-up:
- Finish Release It, second edition (book)
- Read Designing Distributed Systems (book)
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Overview (10 minutes)
- Presentation: The importance of resilience
- Situations where patterns can help.
- How resilience can be built at both an architectural and code level
Bulkhead pattern (30 minutes)
- Presentation: Overview of Bulkhead Pattern - A quick overview of the pattern and looking at a sample implementation
- Simulation - Effect of failure in system without bulkhead pattern
- Simulation - Resilience traits of a system with bulkhead enabled
- Presentation - Various approaches in context of scale and constraints
- Exercise: Identify architectural scenarios where bulkheads are a fit
- Q&A
Break (5 minutes)
Backpressure (30 minutes)
- Presentation: Overview of Backpressure Pattern - A quick overview of the pattern and looking at various ways to build ability to backpressure.
- Simulation - Effect of load on a system without backpressure
- Simulation - Load regulation with backpressure in place.
- Presentation - Various approaches in context of scale and constraints
- Exercise: Identify architectural scenarios where backpressure is a fit
- Q&A
Circuit breaker (30 minutes)
- Presentation: Overview of Circuit breaker Pattern - A quick overview of the pattern and looking at a sample implementation
- Simulation - Effect of failure in system without circuit breakers
- Simulation - Load regulation and fallback with circuit breakers in place
- Presentation - Various approaches in context of scale and constraints
- Exercise: Identify architectural scenarios where circuit breakers are a fit
- Q&A
Break (5 minutes)
Graceful degradation (30 minutes)
- Presentation: Extending circuit breakers to enable graceful degradation - A quick overview of the pattern and looking at a sample implementation
- Simulation - Effect of denial of service in absence of graceful degradation
- Simulation - Alternative execution path with graceful degradation in place
- Presentation - Various approaches in context of scale and constraints
- Exercise: Identify architectural scenarios where graceful degradation can work
Rate limiting (30 minutes)
- Presentation: Overview of Rate limiting Pattern - A quick overview of the pattern and looking at a sample implementation
- Simulation - Reviewing downsides of unthrottled execution
- Simulation - Using throttling or rate limiting to improve system resilience
- Presentation - Various approaches in context of scale and constraints
- Exercise: Identify architectural scenarios where using a rate limiter will improve system stability
Q&A, feedback and poll(10 minutes)
Your Instructor
Priyank Gupta
Priyank Gupta is a distributed systems engineer and an architect at Sahaj Software. Prior to that, Priyank was a lead consultant at ThoughtWorks. Priyank is an avid blogger who often talks about the patterns for distributed systems. A strong FOSS proponent and contributor, Priyank is a committer on Clamp Orchestrator (a microservices orchestration framework written in Go) as well as a huge proponent of modular monoliths & evolutionary architectures. He has contributed to several open source frameworks across the last 7 years. He has worked across a breadth of technologies and business domains and has grounded experience in building platforms that have scaled to millions of concurrent users and generate billions of dollars in revenues.