A transaction trace is a GPS system for web performance: it paints a rich picture of the flow of a web request through your code.
So, why doesn’t everybody trace? I believe there are two reasons:
- Complex instrumentation: Adding in-app tracing instrumentation is more involved than calling
logger.info()
for logging orstatsD_client.incr()
for metrics. - Vender lockin: You aren’t committing to a vendor when you log and record metrics: you can easily swap out different services to aggregate your logs and store your metrics. Even though APM vendor tracing libraries are remarkably similar, there hasn’t been a vendor-neutral standard for tracing. Adding complex, vendor-specific instrumentation can feel like a deeper commitment than one desires.
OpenTracing, a vender-neutral tracing API
Enter OpenTracing, a vendor-neutral open standard for distributed tracing. OpenTracing loosens the chains on tracing instrumentation: if we trace our method calls via OpenTracing APIs, we can swap out our tracing vendors just like logging and metrics!
Read more at Scout