Preempting System Issues

Preempting System Issues

Author: BJ Burns and Will Gant July 13, 2023 Duration: 40:07

Simple systems fail simply. Complex systems also fail simply, but their interconnectedness with other systems makes mitigating failures much more complex. Past a certain level of complexity, system failures are an emergent property of the system – that is, the set of system parts has a set of failure cases that the individual parts do not have by themselves. This means that it is more difficult to predict what can go wrong with a system. At some level, prediction is nearly impossible. However, you can predict many of the things that are likely to cause problems, simply by engaging in a few fairly simple thought exercises, you can greatly reduce the number of unexpected problems that your system encounters.

While it can be tempting to wait until a problem occurs to try to mitigate it, this is unwise in a production system that other people are dependent on. A system failure usually costs money at a minimum, and the problems can be far more severe than that. As a result, it's common for software services to include a Service Level Agreement or SLA, that dictates expectations about the frequency of system outages, response times, and time expected to complete work. Even if your system is engineered so that it doesn't completely fall over when a problem occurs, it can still violate an SLA and cost money. The consumers of your application probably have their own clients who have their own expectations. SLAs tend to bleed inward from clients to the services that they use and then to the services that those services use.

In contrast to SLAs, systemic problems, including both errors and latency tend to bleed outward from one service to its clients and then to the clients of that service. As a result, when you are thinking about how to find potential systemic problems, it's often best to think of these problems from two different angles. That is, you need to consider how errors and latency will bleed out as a result of a problem, while also considering how SLAs bleed in to put more stringent expectations on your system than you might expect. In effect, you are dealing with a balance between tolerance for errors and difficulty in error mitigation. Depending on how critical your system is to your clients, these expectations will vary.

You can't prevent every problem in a system, but you can usually prevent a large percentage of them by planning ahead. However, until you've encountered enough unexpected problems, it can be difficult to envision how something can go wrong, or even have a realistic thought process for thinking about what can go wrong. However, if you go through the thought exercises we've outlined here, then you have a good chance of preventing most of the problems that will plague a complicated application. While this doesn't fix everything, it can give you enough breathing room to fix the truly unusual problems that you'll occasionally encounter.

The post Preempting System Issues appeared first on Complete Developer Podcast.


Hosted on Acast. See acast.com/privacy for more information.


BJ Burns and Will Gant host the Complete Developer Podcast, a conversation that goes far beyond just writing code. These two seasoned developers built this show from a simple idea: that a career in tech is about more than the latest framework or language syntax. It's about the entire ecosystem you navigate, from the logic on your screen to the dynamics of the business meetings and the long-term path of your career. Each episode feels like pulling up a chair in the break room with colleagues who get it, discussing the real, often unspoken, parts of the job. You'll hear them tackle the intersection of technology, business strategy, and professional growth, making sense of how these pieces fit together in a practical, everyday way. This podcast digs into the questions that don't always have a clear answer in a manual-how to communicate effectively with non-technical teams, ways to approach career advancement, or how to balance deep technical work with the broader goals of a company. It's a resource for anyone who writes code but lives in a much bigger world, offering perspective and discussion that aims to make the whole journey a bit more comprehensible and a lot more manageable. Tune in for thoughtful, grounded talks that treat development as the multifaceted profession it truly is.
Author: Language: English Episodes: 100

Complete Developer Podcast
Podcast Episodes
Time Management Mistakes [not-audio_url] [/not-audio_url]

Duration: 52:42
Have you ever wanted to write a book, start a business, learn a new skill, learn to play a musical instrument, change careers, or simply become world class at something you like to do? Did you try for a bit, only to real…
Being A Good Follower [not-audio_url] [/not-audio_url]

Duration: 49:47
We hear a lot about how to be a good leader, but rarely about how to be a good follower. If we are all leading then who is following? Following isn't about blindly agreeing with leadership but instead is the ability to w…
Creating A Nightly Routine [not-audio_url] [/not-audio_url]

Duration: 59:13
Many people will tell you the importance of a morning routine, however without a nightly routine our evenings are all over the place and we are left with sleepless nights, but not in Seattle. To improve sleep and rest we…
Integration Code Smells [not-audio_url] [/not-audio_url]

Duration: 49:25
Integration points in complex systems have a tendency to surprise you, usually in an unpleasant fashion. While it takes a while to discover the underlying antipatterns that caused the system to have problems, there are c…
Add Value On Your First Day [not-audio_url] [/not-audio_url]

Duration: 55:33
So you got a new job and you are starting in a couple of days. You are probably both excited and anxious. What will the first day be like? If you are like many people, your first day at a new job will be something that h…
Millionaire Mindset [not-audio_url] [/not-audio_url]

Duration: 1:02:44
The millionaire mindset is a common phrase in the hustle culture of people who are working hard to better themselves and make their world a better place. But what exactly does it mean?Read more ›The post Millionaire Mind…
Today Is The Day To Stop Procrastinating [not-audio_url] [/not-audio_url]

Duration: 50:21
Procrastination is an insidious venom that slowly eats away at us by making us think we have plenty of time to do the things we need to do but may not want to do. Today is the day to stop procrastinating!Read more ›The p…
10 Rules To Be A Good Engineer [not-audio_url] [/not-audio_url]

Duration: 48:44
You write code and solve problems, but are you a good engineer? Are there things you can do to improve yourself and be a better developer? What does it take to be a good software developer?Read more ›The post 10 Rules To…
Downsides of Self Employement [not-audio_url] [/not-audio_url]

Duration: 43:31
Lots of developers are self-employed. While many are happy, there are some pitfalls to the process that can trip up the unwary. From taxes, to interpersonal relationships, being self-employed will teach you a lot of thin…
Layoff Resilience [not-audio_url] [/not-audio_url]

Duration: 53:03
There is definitely a cycle to the financial system. Things get easier for a while, and then things get harder. While we don't want to delve into the reasons too deeply, there's a pretty good chance that some rough times…