Chapter 13. Beyond Distributed Tracing

At the very beginning of this book, in the Introduction, we argued that most applications today are distributed in some fashion, whether as simple client-server applications or more general architectures like microservices. Distributed architectures give clear benefits, especially with scalability, reliability, and maintainability. The biggest drawback, however, is that distributed architectures break traditional methods of profiling, debugging, and monitoring. Such methods were designed to capture information in a component- or machine-centric way (because they were designed when applications only ran on a single machine). By contrast, in distributed architectures, we care about end-to-end executions of requests across multiple components and machines. Traditional methods aren’t enough for distributed architectures because they lack visibility: they weren’t designed to be able to correlate and combine events across multiple components and machines.

This is the point of distributed tracing—to meet the profiling, debugging, and monitoring needs of modern, distributed architectures. Distributed tracing is designed for distributed architectures and addresses the key challenges of incoherence, inconsistency, and decentralization that we described in the Introduction. With distributed tracing, you gain visibility across your entire stack. Distributed tracing gives you a way to profile, debug, and monitor our distributed applications, where previously ...

Get Distributed Tracing in Practice now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.