Distributed Tracing With Spring Cloud Sleuth and Zipkin

In the case of a single giant application that does everything, which we usually refer to as a monolith, tracing the incoming request within the application is easy. We can follow the logs and then figure out how the request is being handled. There is nothing else we have to look at but the application logs themselves. 

Over time, monoliths have become difficult to scale, to serve a large number of requests as well as delivering new features to the customer with the growing size of the codebase. This leads to breaking down the monolith into microservice, which helps in scaling individual components and also helps to deliver faster.