1.Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing environments.
In some environments, different components of a distributed application reside and different computer systems and interoperate to implement the functionality of the distributed application. Some distributed applications are relatively simple, perhaps having one component at each of two different computer systems. As such, configuring these components to interoperate is also reasonably simply.
However, other distributed applications can be larger, relatively more complex, and highly inter-connected as well as diverse in their implementations and configurations. For example, a distributed application can have components at tens or event hundreds of different computer systems. The flexibility of configuration models that can be used with each component is also relatively extensive. The combination of the number of components and the complexity of their configuration can lead to challenges when attempting to identify and resolve configuration issues for the distributed application. The challenges can be even more difficult when a distributed application is hosted on a sophisticated server product, which supports powerful configuration features, such as, for example, multi-level configuration hierarchy, configuration locking, and delegation.
Some systems provide little, if any assistance, to an application owner when errors occur. Other systems to produce error messages, providing an application developer at least some information when an error occurs. However, even when they exist, these types of error messages are typically not adequate for resolving errors. For example, these types of errors messages may relate only to small number of (or even a single) component(s) of a distributed application. Thus, an application owner must individually active each component to see runtime errors for the component. Accordingly, troubleshooting multiple inter-connected application components is generally a challenging experience.