An interesting article on codacy blog from rtfpessoa. A typical system now is microservices-oriented, distributed and event-driven, and following its flow of information is a complicated endeavor. Moreover, instrumenting such a system to trace the flow of information has, at least historically, been an intricate task.
In this article authors take a look at patterns and tools to implement Distributed Tracing. It is written in Scala tools as examples, but all of the concepts apply to many other languages, for which you can find similar tooling.
Distributed tracing, also called distributed request tracing, is a method used to profile and monitor applications, especially those built using a microservices architecture. In a system each request is assigned a unique ID- (usually injected into the headers). This transaction is normally called a trace.
The article then dives deeply into:
- Motivation, How and What to trace
- Distributed Tracing in Scala
- OpenTracing Implementations
Zipkin and Jaeger are the most well-known open source solutions providing a very good interface for displaying the data sent by your apps.
OpenTracing provides a great specification that allows you to program against a very well-defined API instead of a concrete implementation. Excellent!
[Read More]