IP Library Granted Patent US 9,811,400
Granted Patent B2
US 9,811,400 · App. 14/970,944 · Granted Nov 7, 2017

End-to-end application tracking framework

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,811,400
App. No.
14/970,944
Granted
Nov 7, 2017
Kind
B2
Abstract

Novel tools and techniques for tracing application execution and performance. Some of the tools provide a framework for monitoring the execution and/or performance of applications in an execution chain. In some cases, the framework can accomplish this monitoring with a few simple calls to an application programming interface on an application server. In other cases, the framework can provide for the passing of traceability data in protocol-specific headers of existing inter-application (and/or intra-application) communication protocols.

Claims (52)

1. A method for establishing a framework for end-to-end traceability and performance monitoring of an execution chain, the method comprising:

maintaining an end-to-end execution chain for one or more application components, using traceability data, the traceability data including traceability data for each of the one or more application components of the end-to-end execution chain, the one or more application components comprising at least one of one or more request type application components or one or more callout type application components, a callout type application component being associated with a request type application component; and

generating a report comprising the end-to-end execution chain, the report listing an actual execution time attributable to each of the one or more application components in the end-to-end execution chain in processing each request by each request type application component, wherein the actual execution time for each request callout type application component is measured by a difference between a start time and a stop time of each callout type application component, and wherein the actual execution time for each request type application component is measured by adding a pre-callout processing time, a sum of any and all interval callout processing time, and a post-callout processing time, the pre-callout processing time being measured by measuring a difference between a start time of each request type application component and a start time of a first serial callout type application component associated with each request type application component, the post-callout processing time being measured by measuring a difference between a stop time of a last serial callout type application component and a stop time of each request type application component associated with each request type application component, and each of the interval callout processing time being measured by measuring a difference between the stop time of each serial callout type application component and the stop time of any subsequent serial callout type application component, wherein each serial callout type application component is selected from a longest duration parallel callout type application component of any set of parallel callout type application components that is collectively executed before a subsequent serial callout type application component.

2. The method of claim 1 , further comprising:

establishing a parent-child relationship between a callout record and a second request record that are stored in a database, the callout record indicating that the first application component has initiated an application callout to a second application component, the second request record indicating start of execution of the second application component.

3. The method of claim 2 , wherein establishing the parent-child relationship between the callout record and the second request record comprises assigning a Record Identifier (“ID”) of the callout record as a Parent ID of a first request record when generating and/or storing the second request record, wherein the first request record is stored in the database and indicates start of execution of the first application component.

4. The method of claim 3 , further comprising:

storing the first request record in the database by generating the first request record and storing the generated first request record in the database; and

storing the callout record in the database by generating the callout record and storing the generated callout record in the database.

5. The method of claim 1 , further comprising:

storing, in a database, a plurality of request records and a plurality of callout records.

6. The method of claim 5 , further comprising:

analyzing the stored request records and callout records to determine one or more request durations and one or more callout durations.

7. The method of claim 5 , further comprising:

analyzing the stored request records and callout records to identify a trace of execution between the first application component and the second application component.

8. An apparatus, comprising:

one or more non-transitory computer-readable storage media having encoded thereon one or more sets of instructions executable by one or more computers to perform one or more operations, the one or more sets of instructions collectively comprising:

instructions for maintaining an end-to-end execution chain for one or more application components, using traceability data, the traceability data including traceability data for each of the one or more application components of the end-to-end execution chain, the one or more application components comprising at least one of one or more request type application components or one or more callout type application components, a callout type application component being associated with a request type application component; and

instructions for generating a report comprising the end-to-end execution chain, the report listing an actual execution time attributable to each of the one or more application components in the end-to-end execution chain in processing each request by each request type application component, wherein the actual execution time for each request callout type application component is measured by a difference between a start time and a stop time of each callout type application component, and wherein the actual execution time for each request type application component is measured by adding a pre-callout processing time, a sum of any and all interval callout processing time, and a post-callout processing time, the pre-callout processing time being measured by measuring a difference between a start time of each request type application component and a start time of a first serial callout type application component associated with each request type application component, the post-callout processing time being measured by measuring a difference between a stop time of a last serial callout type application component and a stop time of each request type application component associated with each request type application component, and each of the interval callout processing time being measured by measuring a difference between the stop time of each serial callout type application component and the stop time of any subsequent serial callout type application component, wherein each serial callout type application component is selected from a longest duration parallel callout type application component of any set of parallel callout type application components that is collectively executed before a subsequent serial callout type application component.

9. The apparatus of claim 8 , wherein the first application component is a first application layer of a first application, and wherein the second application component is a second application layer of the first application.

10. The apparatus of claim 8 , wherein the first application component is a first application, and wherein the second application component is a second application.

11. The apparatus of claim 10 , wherein:

the one or more computer systems comprise a first computer system, on which the first application executes, and a second computer system, on which the second application executes;

the one or more sets of instructions comprise a first set of instructions executable by the first computer system and a second set of instructions executable by the second computer system;

the first set of instructions comprises:

instructions for generating traceability data for a first application component before the first application component passes application data to a second application component; and

instructions for passing the traceability data to the second application component with an auxiliary facility; and

the second set of instructions comprises:

instructions for receiving the traceability data at the second application component;

instructions for generating, with the second application component, a database record to indicate that the first application passed the message/data to the second application; and

instructions for storing the traceability data in the database record.

12. The apparatus of claim 11 , wherein the application data comprises a message from the first application component to the second application component.

13. The apparatus of claim 11 , wherein the database record is a request record, and wherein the traceability data comprises one or more identifiers selected from the group consisting of: a callout record identifier (“ID”), a correlation ID, and a user interface (“UI”) session ID.

14. The apparatus of claim 11 , wherein the database record is a callout record, and wherein the traceability data comprises one or more identifiers selected from the group consisting of: a request record identifier (“ID”), a correlation ID, and a user interface (“UI”) session ID.

15. The apparatus of claim 11 , wherein the auxiliary facility comprises a protocol-specific header of a protocol used to transmit the application data.

16. The apparatus of claim 15 , wherein the protocol specific header is selected from the group consisting of a hypertext transfer protocol (“HTTP”) header, a Simple Object Access Protocol (“SOAP”) header, an Information Bus header, and a Java Messaging Service (“JMS”) header.

17. The apparatus of claim 11 , wherein the instructions for passing the traceability data comprise instructions for placing the traceability data on a message queue.

18. The apparatus of claim 8 , wherein the first application component and the second application component execute on the same computer system.

19. A computer system, comprising:

one or more processors; and

one or more non-transitory computer-readable storage media having encoded thereon one or more sets of instructions executable by one or more computers to perform one or more operations, the one or more sets of instructions collectively comprising:

instructions for maintaining an end-to-end execution chain for one or more application components, using traceability data, the traceability data including traceability data for each of the one or more application components of the end-to-end execution chain, the one or more application components comprising at least one of one or more request type application components or one or more callout type application components, a callout type application component being associated with a request type application component; and

instructions for generating a report comprising the end-to-end execution chain, the report listing an actual execution time attributable to each of the one or more application components in the end-to-end execution chain in processing each request by each request type application component, wherein the actual execution time for each request callout type application component is measured by a difference between a start time and a stop time of each callout type application component, and wherein the actual execution time for each request type application component is measured by adding a pre-callout processing time, a sum of any and all interval callout processing time, and a post-callout processing time, the pre-callout processing time being measured by measuring a difference between a start time of each request type application component and a start time of a first serial callout type application component associated with each request type application component, the post-callout processing time being measured by measuring a difference between a stop time of a last serial callout type application component and a stop time of each request type application component associated with each request type application component, and each of the interval callout processing time being measured by measuring a difference between the stop time of each serial callout type application component and the stop time of any subsequent serial callout type application component, wherein each serial callout type application component is selected from a longest duration parallel callout type application component of any set of parallel callout type application components that is collectively executed before a subsequent serial callout type application component.

20. The computer system of claim 19 , wherein the one or more sets of instructions collectively further comprise:

instructions for assigning a correlation identifier to a first request record that is stored in a database to identify an instance of the application, the first request record indicating start of execution of the first application component;

instructions for assigning the correlation identifier to a callout record that is stored in the database, the callout record indicating that the first application component has initiated an application callout to a second application component; and

instructions for assigning the correlation identifier to a second request record that is stored in the database, the second request record indicating start of execution of the second application component.

21. The computer system of claim 19 , wherein the one or more sets of instructions collectively further comprise:

instructions for recording, in the first request record, a first begin time of execution of the first application component and a first end time of execution of the first application component;

instructions for recording, in the callout request record, a second begin time of the callout and a second end time of the callout;

instructions for recording, in the second request record, a third begin time of the second request and a third end time of the second request; and

instructions for calculating, based on one or more of the begin times and end times, durations of each of the initial request, the callout, and the request.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Mar 25, 2024
From: COMPUTERSHARE TRUST COMPANY, N.A, AS SUCCESSOR TO WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: QWEST COMMUNICATIONS INTERNATIONAL INC.
Reel/Frame 066885/0917 →
SECURITY AGREEMENT (FIRST LIEN) Recorded Mar 22, 2024
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 066874/0793 →
NOTES SECURITY AGREEMENT Recorded Jan 24, 2020
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 051692/0646 →
SECURITY INTEREST Recorded Nov 1, 2017
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 044652/0829 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2016
From: MALKIMAN, IGOR I.; POWIS, CHAUNCEY G.; BUNCH, TYSON MATTHEW
To: QWEST COMMUNICATIONS INTERNATIONAL INC.
Reel/Frame 037509/0990 →