Why "Simple" is Better for System Reliability: Simplicity as a Feature

Complexity is the enemy of uptime. Discover why boring technology and simple architectures are the secrets to 99.99% availability.

J
Jesus Paz
2 min read

There is a natural tendency in engineering to build Complex Things. We add layers of abstraction. We introduce message queues. We split monoliths into microservices. We add AI.

But if you look at the most reliable systems in the world (e.g., the software running a pacemaker, or the Erlang code running a telecom switch), they share one trait: Radical Simplicity.

Cluster Uptime is built on this philosophy. Here is why “Boring” software is better software.

Gall’s Law

John Gall, a systems theorist, stated:

“A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work.”

When we design monitoring systems, we often over-engineer.

  • “We need Kafka to ingest the metrics.”
  • “We need a Graph Database to store dependencies.”

But what if Kafka goes down? What if the Graph DB locks up? Now your monitoring system is more complex than the app it monitors.

The Problem with Deep Dependency Trees

Every dependency is a point of failure. If your monitoring agent depends on:

  1. Python 3.11
  2. requests library
  3. OpenSSL
  4. A specific libc version

Then an OS update that breaks libc kills your monitoring. Cluster Uptime’s Go Agent has 0 external dependencies. You can delete every library on the OS, and it will still run. That is resilience through simplicity.

Mean Time to Recovery (MTTR)

Simple systems are easier to fix.

  • Complex System: “The Kubernetes operator failed to reconcile the CRD because the Etcd quorum was lost.” (Debug time: 4 hours).
  • Simple System: “The binary crashed.” -> systemctl restart. (Debug time: 2 seconds).

When the house is on fire, you want a fire extinguisher, not a computerized fire suppression system that requires a firmware update.

Case Study: The Monolith vs. Microservices

We often see companies migrate to microservices and see their uptime drop. Why? Because network calls are flaky.

  • Function Call: 100% Reliability. 0ms Latency.
  • Network Call: 99.9% Reliability. 50ms Latency.

If you chain 10 microservices to render a page, your theoretical availability is 0.999 ^ 10 = 99.0%. You just lost a “Nine” by adding complexity.

Conclusion

Don’t add complexity to look smart. Remove complexity to be reliable. Cluster Uptime is simple, boring, and rock solid. Just how we like it.

👨‍💻

Jesus Paz

Founder

Read Next

Join 1,000+ FinOps and platform leaders

Get uptime monitoring and incident response tactics delivered weekly.