Many tools for analyzing distributed systems propagate contexts along the execution paths of requests, tasks, and jobs, in order to correlate events across process, component and machine boundaries. To propagate contexts, developers must instrument the system by making small but non-trivial sourcecode modifications. However, a lack of well-defined abstractions for context propagation has led to a fragmented landscape of poorly supported, siloed tracing tools that lack interoperability, and organizations report drawn-out struggles to deploy tracing tools.
In this project we advocate for system instrumentation to be a one-time task, reusable, independent of any tracing tool, and that developing, deploying, and updating tracing tools should be possible without revisiting the underlying context propagation mechanisms. We propose two main abstractions that separate the concerns of tracing tool developers from those of system developers: execution flow scoped variables and opaque baggage contexts.
The Tracing Plane is a layered architecture for context propagation that bridges these abstractions, by providing a general-purpose intermediary context that can transparently support a wide range of data types and tracing tools simultaneously. The Tracing Plane serves as the “narrow waist” upon which different tracing tools can be built, analogous to the role of the IP layer in networking.
For more information, see the GitHub organization.
This is an active research project and we will be publishing an academic paper in 2017.