
This course walks you through instrumenting a real Spring Boot application with OpenTelemetry, starting from a plain, untraced app and ending with a fully traced multi-service system exporting to Jaeger. Rather than covering tracing in the abstract, you build it hands-on, step by step: enabling zero-code auto-instrumentation via the OTel Java agent, standing up Jaeger as a tracing backend, and verifying every step by inspecting real traces — first in the UI, then programmatically via Jaeger's API.
As systems move to microservices, understanding what happens to a request as it crosses service boundaries becomes essential — logs and metrics alone can't answer "why was this specific request slow, and where did the time actually go?" This course solves that gap by teaching you to reason about traces at the code level, not just the dashboard level: how spans are created and nested, why Context/Scope matters for parent-child relationships, when to rely on the agent's automatic instrumentation versus writing manual spans (via the OTel API or the @WithSpan annotation), and how trace context propagates automatically across HTTP calls between independent services. By the end, you'll be able to add meaningful, well-structured tracing to your own Spring Boot services and debug distributed request flows with confidence.