Chapter 52. Holistic Approach to Product Reliability
Kristine Chen and Bart Ponurkiewicz
You’ve made it.
Through redundancy, you removed all single points of failure. The services are properly monitored and alerts are configured. Your recovery strategies are tested regularly to ensure that your on-call team can react on a moment’s notice. You’ve carefully looked at your requests and announced achievable SLOs.
Job well done! Or is it? To ensure your product success, you have to take a holistic approach, end to end, from user interaction to the bytes on the disk. The typical front-end–back-end split isn’t that simple anymore. There are layers and layers of abstractions. Your web service is a front end to your clients; it sends requests to your processing back ends, which are really just front ends for other services such as cache and storage servers. Turtles all the way down.
And we’re only stacking more turtles on top: client-side applications. They come in various shapes and sizes, from progressive web applications up to apps running natively on smart devices. These apps have their back ends too: shared libraries, databases, and local storage. Reliable clients are now more important than ever, because more than 3.5 billion smart devices are currently used worldwide.