Published 2024-10-03 by Daniel Bark
Bug free code is not enough
Let’s say that you write an amazing piece of software with zero bugs. You probably used Rust of Typescript with Effect.
Or Haskell? No not Haskell. Now I went to far.
You handle everything that can go wrong in your program gracefully and make a decision on how to recover. Your program cannot crash or end up in undefined behavior.
Why not enough?
What I haven’t mentioned yet about this app is that it interfaces with both a database and an external AI provider via API (because this is what we all do now). This means that sometimes you have to access services through a layer of networking. And networks can fail.
Even though your code is rock solid it does not mean your service is holistically resilient. Here are some things you did not account for if your only focus was bug free code:
- Retry policies to recover from transient issues
- Duplicates across multiple physical locations to mitigate the risk of localized failures
- Proactive observability with real time alerts and robust logging
- Scaling strategies
- Rate limiting
- Backups
I just wanted to highlight that there is a lot more than what is visible in the application code that makes up a resilient app infrastructure.
Creating robust systems is not easy. If it was, we would all be doing it.
Thanks for reading and stay safe out there.
Written by Daniel Bark
← Back to blog