Build Systems that Drive Business
Sep 30–Oct 1, 2018: Training
Oct 1–3, 2018: Tutorials & Conference
New York, NY

Tracing polyglot systems: An OpenTracing tutorial

Yuri Shkuro (Uber Technologies), Prithvi Raj (Uber), Won Jun Jang (Uber)
9:00am–12:30pm Monday, October 1, 2018
Monitoring, Observability, and Performance
Location: Sutton South/Regent Parlor Level: Intermediate
Secondary topics:  Systems Monitoring & Orchestration
Average rating: *****
(5.00, 2 ratings)

Prerequisite knowledge

  • Experience working on a live system in production
  • Familiarity with making changes to both sides of an internal HTTP request or RPC call (e.g., a web client and the service it communicates or a client and server pair in a microservice-to-microservice RPC)

Materials or downloads needed in advance

  • A laptop (Windows 10, Linux, or macOS) with at least 8 GB of RAM and a current version of Docker (Docker for Mac or Windows or the latest deb/rpm) installed
  • A development environment set up for at least one of the following languages: Go, Java, Python, Node.js, or C#
  • Jaeger binaries and project dependencies: see

What you'll learn

  • Learn how to implement distributed tracing in the development and operations of your applications in the programming language of your choice


Modern applications have evolved from single-threaded monoliths to concurrent, asynchronous, distributed, polyglot microservices. Those who build them are beginning to understand the role and importance of distributed tracing. After all, it’s the most direct way to understand how and why complex systems misbehave, by visualizing transactions as they go through a system, crossing process boundaries. Every organization that’s adopted microservices at scale has had to deploy a distributed tracing solution—first with Dapper at Google, then with Zipkin at Twitter, and now with various open source and commercial tracing solutions at many other technology companies.

As our industry migrates to microservice-based applications, distributed tracing will become the table stakes for visibility into production systems; thus, developers must learn how to integrate and deploy tracing technology effectively.

Priyanka Sharma and Yuri Shkuro take you from zero to implementing useful traces with OpenTracing, in the programming language of your choice, walking you through visualizing the critical path for transactions with microservices, enabling debugging, latency monitoring, and overall performance gains.

The goal throughout is to demystify distributed tracing and convey best practices through interactive lessons, placing a special focus on source code instrumentation and integration strategies, as historically those have been the most daunting aspect of distributed tracing for newcomers.

Topics include:

  • Choosing OpenTracing over other solutions
  • The types of data that can be shared with tracing
  • The components of a tracing system
  • Viewing trace data
  • Using trace data to identify potential problems
Photo of Yuri Shkuro

Yuri Shkuro

Uber Technologies

Yuri Shkuro is a software engineer at Uber, working on distributed tracing, reliability, and performance. Yuri is the coauthor of the OpenTracing standard (a CNCF project) and the creator of Jaeger, Uber’s open source distributed tracing system (also a CNCF project).

Prithvi Raj


Prithvi Raj is an observability engineer working on Uber’s distributed tracing system, Jaeger.

Photo of Won Jun Jang

Won Jun Jang


Won Jun Jang is an observability engineer at Uber Technologies, working on distributed tracing, monitoring, and performance. In his spare time, he gets lectured by his life coach to write a more interesting Bio to sell himself better.