The Importance of Tracing in Software Engineering
Software engineering involves the specialized use of tracing, which is the recording of requests as they flow through an application. This information is used for troubleshooting and debugging, and may also be used by system administrators, technical-support personnel, or monitoring tools to diagnose common problems. This is a cross-cutting concern that is increasingly important for both traditional and distributed applications. To be effective, tracing must accurately capture all of the operations and activities within an application.
When applied to applications and services, tracing records the entire request activity across all services. This information includes name, start and end timestamps, and other metadata. In addition, tracing places spans in the proper order for a distributed application. It is often difficult to determine the root cause of a failure in distributed applications, as there are more points of failure. This results in slower diagnosis and lower SLAs.
Unlike monitoring, tracing is a reusable, distributed, and highly scalable system. When you deploy a microservice architecture, you’ll need to create multiple traces to collect detailed information about the performance of each service. This means that the same application can run across many locations, different servers, and different environments. Without the ability to track these requests, they can’t be easily troubleshooted. Instead, you’ll need to create a centralized tracing application to collect this information.