A TRACE TO REMEMBER: COMPOSITIONAL TRACING
summary
Shows concrete tracing code for Scala: uses OpenTelemetry Java SDK with a tracer provider, Zipkin/Jaeger exporters and span processors to emit spans with traceID/spanID, and demonstrates that HTTP propagators serialize context for cross‑process linking. Implicit thread‑local propagation works for simple sequential code but fails with futures/async; manual propagation by passing parent spans works and is improved by wrapping spans in Resource and using Kleisli-based explicit propagation (cats‑effect) so nested traces appear correctly in the UI.
AI-written summary · about
chapters (29)
- 0:00Introduction
- 0:27About me
- 1:13Goals
- 2:12Observability
- 3:04Why do we need observability
- 4:46Monitoring vs observability
- 6:00How to make systems observable
- 8:13Logs and matrices
- 10:11Distributed systems
- 12:03Debugging distributed systems
- 14:06What is a trace
- 17:23What is exporter
- 17:39Open Telemetry
- 19:05Tracer Interface
- 19:57Span Interface
- 20:35Span Context
- 21:31Scala Example
- 23:29Challenges
- 24:34Context Propagation
- 25:25Cross System Propagation
- 27:38Implicit Propagation
- 32:25Synchronous Code
- 33:25Manual Propagation
- 33:51User Registration Service
- 34:54User Registration Code
- 37:02Creating a Trace
- 43:58Safe Route Safe Reciprocal
- 51:20Effect Class
- 52:34Final Thoughts
related talks
48mKeep your sanity with compositional tracing
47mI'm Tracing You!
49mDistributed Tracing: How the Pros Debug Concurrent and Distributed Systems
37mObservability, Distributed Tracing & the Complex World
45mLatency tracing in distributed Java applications
16mPragmatic execution tracing
21mContext Propagation in OpenTelemetry: Beyond “Hello World” Examples
57mDistributed Tracing: How the Pros Debug Concurrent and Distributed Systems
