An introduction to distributed tracing and Zipkin