Enterprises and organizations expose their business information and functionality on the web through software applications, usually referred to as “web applications”. Web applications provide great opportunities for an organization. The web applications use the Internet technologies and infrastructures. These applications are generally event-driven software programs which react to hypertext transfer protocol (HTTP) requests from the client. The applications are generally executed on application servers coupled to back-end systems.
FIG. 1 shows an exemplary data center 100 that is utilized for executing web applications. Clients 110 submit requests (e.g., HTTP requests) to web servers 120 through a network 170. A load balancer 160 distributes the requests between the servers 120 to balance the load. A web server 120 dynamically generates a presentation, for example, using servlets, or extensible markup language (XML), extensible style-sheet language (XSL), and the likes. Application servers 130 are often responsible for deploying and running the business logic layer and for interacting with and integrating various enterprise-wide resources, such as web servers 120 and back-end systems 150. The back-end systems 150 may include, for example, a database server and a legacy system. Typically, the back-systems 150 operate and respond to requests sent from the clients 110 and forwarded by the application servers 130.
As an example, the web application executed by the data center 100 is a finance application (such as used to access a bank account) through which a user of a client 110 requests to view the account's balance. Typically, the client 110 generates a HTTP request that triggers a SQL query with input values of at least the account number of the user. In that case, the HTTP request will typically include the account number and the requested action. The SQL query, generated based on that input in the URL's field, may be:select balance from Accounts where Account_Number=<input account number>
An application server 130 processes the incoming HTTP request and forwards the SQL query to one of the back-end systems 150 (e.g., a database server) that maintains the account's balance of the user. That is, the back-end system executes the SQL query generated in response to the HTTP request, and thereafter replies with the balance value which is presented to the user using a web server 120. Transactions executed by the application server 130 will be referred hereinafter as “front-end transactions”, while transactions proceed by the back-end systems 150 will be referred hereinafter as “back-end transactions.”
In the related art there are many tools to monitor and control the operation and performance of data centers in order to prevent situations of, for example, unpredictable levels of service and uncontrolled user experience. Typically, such tools pertain to determine if front-end transactions are processed properly and to monitor the operation of the back-end systems 150 as stand-alone systems. As a result, the existing tools cannot correlate between front-end and back-end transactions, and therefore a root cause of low performance transactions in the data center cannot be detected. For example, a request to check an account balance cannot be performed due to a malfunction or a delayed response of an application server, a web server, a back-end system, or the network connected a client to a web server or an application server to a back-end system.
Therefore, it would be advantageous to provide a solution for correlating between front-end and back-end transactions executed in a data center.