Increase the robustness, stability, and quality of your services by verifying the systemic behaviors.
Software services are a cornerstone of our daily lives, and we experience an increase in the number of outages and malfunctions. As software engineers, we have to balance the rise in complexity in our systems with their stability and robustness. In this workshop, you can explore the stability patterns and anti-patterns and how the Chaos Engineering discipline can help uncover the unknowns with your software services, allowing you to increase your services’ resilience, stability, and quality.
In this hands-on workshop, we will explore how to increase the robustness of your software services and verify it using Chaos Engineering. The workshop has a mix of individual, pair, and group exercises, where we will explore the theory interactively. It also has plenty of practical exercises, including coding different examples to explore different stability patterns.
You will learn how to apply different stability patterns, create and run chaos engineering experiments, and leverage observability to proactively detect if the expected stability of your software services is drifting. By the end of the workshop, you will be able to apply the stability patterns to your services, as well as run your first chaos engineering experiments to increase your awareness of systemic behavior.
This workshop is suitable for anyone who designs, builds, and operates software services and wants to increase the stability and quality of the software.
What is this workshop about
Software applications and services are ubiquitous in our daily lives. We take them for granted, and we all experience frustration when one of those services is unstable or unusable. The mesh of software services is a complex system beyond any single person’s mental model. Can we build stability into this mesh of software services while adding business value?
This workshop is designed with complexity in mind, and rather than trying to tame it, we will embrace it. We will explore the principles of Chaos Engineering, how to design chaos engineering experiments and the stability patterns that can increase the robustness of your software services and applications. The workshop is biased towards practical exercises, and it includes crafted moments to explore your own context and how the patterns and practices can help you design more reliable and stable systems. The workshop is grounded in different bodies of knowledge, such as the Dynamic Safety Model, which provides insights into how our mindset needs to shift to build robust software services that are part of a more extensive and complex web of services.
Whether you are a seasoned professional or have only a couple of years in the IT industry, you can join this workshop. We are all learners, and if you have already experienced unstable software systems, this workshop can help you acquire new skills to improve their quality.
Learning goals
- Understanding the difference between complex and linear systems and how it affects how we design our software systems
- Discover and discuss stability patterns to enhance software quality and robustness
- Implement stability patterns for real-life events that affect the quality of software services
- Design a chaos engineering experiment by applying the chaos engineering principles
- Recognize the implications of the Dynamic Safety Model and the Economic Pillars of Complexity to the way that we build stability into our software systems
- Understanding how to combine the different principles, patterns, and practices into your daily workflow to increase the stability and quality of your systems
What do I need to know?
You need to know how to code software, especially with different components communicating with each other. The workshop welcomes folks with varying tenures in the IT industry, and curiosity is the thing that is needed for the session!
What do I need to bring?
Bring your laptop with your favorite IDE, programming language, and framework configured and ready to go. Also, install and configure Docker. We will spend some time coding different examples of stability patterns in the workshop, and we want to minimize the time configuring your environment. A few days before the workshop, you will receive instructions on configuring some Docker containers to support the practical exercises.
Audience
Anyone with experience designing, building, and operating software. Your title might be something along the lines of:
- Software developer or engineering
- Software testers
- Architect of a different flavor (software, domain, solution, or enterprise)
- SRE or DevOps engineer
And most likely I missed a bunch of them. You get the gist!