Distributed Microservice Tracing Systems : Open-source tracing implementation for distributed Microservices build in Spring framework
Mengistu, Daniel Mekonnen (2020)
Mengistu, Daniel Mekonnen
2020
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2020052614198
https://urn.fi/URN:NBN:fi:amk-2020052614198
Tiivistelmä
Monolithic service architectures for enterprise and large backend applications are becoming rare. The monoliths are being replaced with distributed microservice architectures, where the backend application is distributed in an ecosystem of small and specific services. Company x that assigned this research started to convert legacy codes to microservice. The conversion has brought challenges in finding the source of latency as the number of microservices increase, and the objective of this study is to find these sources of latency.
In microservice architecture, requests often span multiple services. Each service handles a request by performing one or more operations across multiple locations. Each of those services in microservice are dependent on each other directly or indirectly.
This research investigated open sources vender neutral distributed request tracing libraries, namely Brave and Spring Cloud Sleuth. Furthermore, Zipkin and Jaeger, distributed request trace data analyzing, and visualization open source systems were also investigated.
An exemplary microservice architecture was built resembling the microservice architecture in Company x. It is instrumented with tracing libraries, and tracing data are collected and stored in the local storage. Later, data on the collected traces was analyzed and queried for visualization.
It was discovered that the distributed tracing systems are efficient in finding out the source of failure or latency by introducing failure and delay in the service. Zipkin, compared to Jaeger, has been around for quite a long time and has instrumentation library for many languages. However, Jaeger has gained popularity for its easy integration with the latest technologies. e.g. Kubernetes and has large community. Its compatibility with Zipkin instrumentation libraries makes it a preferable distributed tracing library.
In microservice architecture, requests often span multiple services. Each service handles a request by performing one or more operations across multiple locations. Each of those services in microservice are dependent on each other directly or indirectly.
This research investigated open sources vender neutral distributed request tracing libraries, namely Brave and Spring Cloud Sleuth. Furthermore, Zipkin and Jaeger, distributed request trace data analyzing, and visualization open source systems were also investigated.
An exemplary microservice architecture was built resembling the microservice architecture in Company x. It is instrumented with tracing libraries, and tracing data are collected and stored in the local storage. Later, data on the collected traces was analyzed and queried for visualization.
It was discovered that the distributed tracing systems are efficient in finding out the source of failure or latency by introducing failure and delay in the service. Zipkin, compared to Jaeger, has been around for quite a long time and has instrumentation library for many languages. However, Jaeger has gained popularity for its easy integration with the latest technologies. e.g. Kubernetes and has large community. Its compatibility with Zipkin instrumentation libraries makes it a preferable distributed tracing library.