Skip to main content

Command Palette

Search for a command to run...

What Does It Really Mean for Software to Be Reliable?

Updated
•2 min read•View as Markdown
What Does It Really Mean for Software to Be Reliable?
A
AI Platform Engineer | System Design

We throw the word "reliable" around a lot in tech. But what does it actually mean when we're talking about software?

Simply put, a reliable system is one that keeps doing what it's supposed to do, even when things go wrong. Hardware breaks, users make mistakes, bugs slip through. A reliable system handles all of that without falling apart.

Here's a quick way to think about it. A reliable app should:

  • Do what the user actually expects it to do

  • Handle mistakes without crashing, users will always do unexpected things

  • Perform well enough for the job it's built for

  • Keep unauthorized people out

So reliability basically means, as the book Designing Data-Intensive Applications puts it: "continuing to work correctly, even when things go wrong."

Now, the things that can go wrong are called faults. And systems that can handle faults without breaking are called fault-tolerant or resilient.

Here's something interesting though, a fault is not the same as a failure. A fault is when one part of your system misbehaves. A failure is when the whole system stops working for your users. The goal is to stop faults from turning into failures.

And here's the counterintuitive part: one of the best ways to build fault tolerance is to actually trigger faults on purpose — deliberately breaking things in a controlled environment so your system learns to handle them. Netflix actually built a tool called Chaos Monkey that does exactly this — it randomly kills processes in their system to make sure everything still holds up.

The takeaway? Don't just hope nothing goes wrong. Build for when it does.