Five years evolution of open-source distributed tracing
8 min read
It has been 5 years since I have started working on open-source (OSS) distributed tracing projects. It is certainly a long time and in this article I would like to summarize what I have learned and…
2016: The beginning with Hawkular and Zipkin

For me it all started in June 2016 when I submitted my first pull request to the Hawkular APM project. Many of you probably don't know the project so let me give you a quick introduction. Hawkular APM is a performance monitoring tool. It is a "lightweight" Java EE application deployed on Wildfly and it heavily uses JMS, Infinispan and Elasticsearch as a storage backend. The major differentiator between Zipkin and other similar tools is that the project focuses more on data aggregation. For instance it provides service metrics visualisations, flow diagrams, ability to compare two services (e.g. canary deployment) and much more.

The project also provided native and OpenTracing based instrumentation libraries. Building instrumentation clients is an enormous effort, there are a lot of languages, frameworks and application runtimes to support. Hence we have started looking at existing solutions, more about this in the Zipkin section.

For me the Hawkular project was quite a short party and the project was sunset in mid 2017 for several reasons. To make a long story short, we had decided to join forces with Jaeger Tracing project which seemed like a better fit for the Kubernetes ecosystem that we were pursuing.

2016: Zipkin

In 2016 Zipkin was the only robust OSS tracing tool with a solid and proven ecosystem. The project was open-sourced in 2012 by Twitter. The original version was written in Scala and later in 2016 rewritten to Java (Spring Boot). The design of the system was inspired by Google's Dapper paper released in 2010.

The ecosystem was robust, it had a lot of instrumentation libraries, just to name a few: brave, zipkin-js, zipkin-ruby, zipkin-go and many more. The beauty of the Zipkin project was its technical excellence in Java, simple and stable data model, its own B3 context propagation (it stands for Big Brother Bird, the original Zipkin name at Twitter) and great API level documentation. All these aspects…
Pavol Loffay
Read full article