When Bob's customers use his application, they are essentially playing telephone with his microservices. Like back-end debugging, the problem with Telephone is that observers don't know what happened between the initial request/phrase and the response/final phrase. Observability is a set of tools and techniques for understanding what is happening inside of a system by gathering data as it runs.Ī helpful analogy here is the game Telephone. When the back-end is also a microservice architecture, the problem is compounded. The customer does not respond though, which means even if Bob tried reproducing the error, its effectiveness would be limited.Īs we can see, bugs that involve both the front and back-end are extremely difficult to debug because Bob needs insight across an entire network. If he were lucky, Bob would find a log entry pointing to the problem, but that is not the case here.Īfter investigating the logs, Bob tries to reproduce the error himself and asks the customer for more details about what they did in the browser. These logs are hard to read at best, and their quality depends on the person who set them up. Next, Bob checks his services' logs, hoping to find a 4xx or 5xx response that will point to the bug. Unfortunately for Bob, all the services are up. In a large application with many services, this can be a daunting task, but fortunately for Bob, there are only four. In this case, the customer could not check out and filed a complaint with Bob.įirst, Bob might ping each of the services to verify that they're still up. The application uses a microservices architecture, so when a customer checks out, requests get sent to the Authenticate, Inventory, Payment, and Shipping services.īut systems break. Imagine you run a small e-commerce application, Bob's Shop. But first, let’s start with an example of debugging modern applications. In this case study, we will describe how we designed and built Retrospect, along with some of the technical challenges we encountered. It abstracts away the complexity of distributed tracing and session replay, so developers can spend more time fixing bugs than finding them. Retrospect is an open-source full-stack observability tool. ![]() We cannot guarantee systems will work as expected, but we can help you fix them faster. This in tandem with distributed tracing speeds up the debugging process for modern applications. Fortunately, tools like session recording can give developers an exact reproduction of the user session rather than relying on user feedback. ![]() Developers need tools that can account for the interaction between front-end UI and back-end services. While distributed tracing simplifies back-end debugging, the number of ways a customer can break applications from the browser has increased exponentially. ![]() Although tracing does not give an exact answer, it does narrow the field of investigation. By applying distributed tracing, developers can see how requests move through their system, revealing why a transaction did not go as expected. When applications live on separate machines, developers need a single tool that can tell them where to start looking. ![]() However, these systems become more complex and decentralized every year, increasing the difficulty of tracking down bugs. What matters is how quickly developers can identify and repair the problem. It could be the code in a microservice, the machine it lives on, or the network it connects to. Distributed systems will inevitably fail.
0 Comments
Leave a Reply. |