IP Library Granted Patent US 7,870,568
Granted Patent B2
US 7,870,568 · App. 11/395,586 · Granted Jan 11, 2011

Adaptive shared computing infrastructure for application server-based deployments

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 7,870,568
App. No.
11/395,586
Granted
Jan 11, 2011
Kind
B2
Abstract

An adaptive system for dynamically provisioning a shared computing infrastructure among a plurality of software applications and a plurality of types of software application servers providing run-time environments for the software applications. The system includes computing engines assigned to execute instances of the software applications, clients accessing the computing engines to request and receive services from the software applications, and a broker device that dynamically allocates engines domains for executing the software applications. The broker device includes an optimization module for allocating the computing engines to the domains, and a configuration manager for configuring the engines. The configuration manager reconfigures a computing engine by halting a current instance of a first software application, and by loading and starting an instance of a second software application. The system is capable of reconfiguring software applications running in environments provided by different types of software application servers.

Claims (39)

1. A system for provisioning a shared computing infrastructure that supports a plurality of software applications and a plurality of types of software application servers, each type of software applications server creating a run-time environment for executing at least one of the plurality of software applications on a grid of computing resources, the system comprising:

at least one grid node, each grid node comprising at least one host computer;

a first type of software application server and a second type of software application server, wherein the first and second types of software application servers are software programs and are of different types;

two or more computing engines each assigned to execute an instance of one of the plurality of software applications in a run-time environment created by one of the plurality of types of software application servers on the at least one host computer of the at least one grid node;

two or more clients each accessing one of the two or more computing engines to execute the software application assigned to the one computing engine;

and a broker including:

an optimization module for periodically determining an optimal allocation of the plurality of software applications and software application servers among the two or more computing engines;

and a configuration manager, responsive to the determinations by the optimization module, for instructing one of the two or more computing engines to reconfigure its run-time environment, the configuration manager instructions causing a given computing engine to reconfigure by halting a current instance of a software application of a first type executing in a run-time environment created by the software application server of the first type, and by loading and starting an instance of a software application of a second type within a run-time environment created by the software application server of the second type on said given computing engine,

wherein the halting is to reallocate resources based on the optimal allocation among the two or more computing engines.

2. The system of claim 1 , wherein the broker further includes an engine allocation module for providing each of the two or more clients with an engine proxy for accessing its assigned computing engine.

3. The system of claim 1 , further comprising:

a router that routes service requests from the two or more clients to the two or more computing engines, the router being operative to balance at least one of a number of service requests initiated by the two or more clients and a service load resulting from the requests among the two or more computing engines.

4. The system of claim 3 , wherein the broker further includes:

a monitor for collecting statistical information from at least one of the two or more clients, the two or more engines and the router,

wherein the optimization module periodically determines the optimal allocation based on the statistical information collected by the monitor and a defined policy.

5. The system of claim 4 , wherein the optimization module further includes a policy manager for determining rules associated with the defined policy, and a rules engine for capturing the determined rules.

6. The system of claim 1 , wherein the broker further includes a software distribution module for distributing and loading instances of the two or more software application servers and instances of the two or more software applications on ones of the two or more computing engines.

7. The system of claim 6 , further comprising an archival database for storing components of the two or more software application servers and the two or more software applications for retrieval by the software distribution module.

8. The system of claim 5 , further comprising an administrative interface for performing at least one function selected from the group consisting of creating and editing software applications, selecting software application servers for software applications, creating and editing policies for software applications, testing software applications and generating reports based on the statistical information.

9. A method for provisioning a shared computing infrastructure that supports a plurality of software applications and a plurality of types of software application servers among two or more clients, each type of software application server creating a run-time environment for executing at least one of the plurality of software applications on a grid of computing resources, the method comprising the steps of:

providing a broker having a CPU and at least one grid node comprising at least one host computer having a CPU and a first type of software application server and a second type of software application server, each of the first and second types of software application servers are software programs and are of different types;

using the broker, assigning a each of two or more computing engines to execute an instance of one of the plurality of software applications in a run-time environment created by one of the plurality of types of software application servers on the at least one host computer of the at least one grid node, where the two or more clients each access one of the two or more computing engines to execute the software application assigned to the respective computing engine; and

periodically determining an optimal allocation of the plurality of software applications and software application servers among the two or more computing engines using an optimization module included in the broker;

using a configuration manager included in the broker, instructing one of the two or more computing engines to reconfigure its run-time environment in response to the determinations by the optimization module, the instructing step causing a given computing engine to reconfigure by halting a current instance of a software application of a first type executing in a run-time environment created by the software application server of the first type, and by loading and starting an instance of a software application of a second type within a run-time environment created by the software application server of the second type on said given computing engine

wherein the halting is to reallocate resources based on an optimal allocation among the two or more computing engines.

10. The method of claim 9 , further comprising the step of: providing at least one of the two or more clients, with an engine proxy for accessing one of the two or more computing engines.

11. The method of claim 9 , further comprising the steps of:

routing service requests from the two or more clients via a gateway router to the two or more computing engines, the gateway router being operative to balance at least one of a number of service requests and a service load among the two or more computing engines.

12. The method of claim 11 , further comprising the steps of collecting statistical information from at least one of the two or more clients, the two or more engines and the router, and

periodically determining the optimal allocation of the plurality of software applications and software application servers among the two or more computing engines, based on the collected statistical information and a defined policy.

13. The method of claim 12 , wherein the defined policy includes at least one of a minimum number of the two or more computing engines to be assigned to one of the plurality of software applications and a maximum number of the two or more computing engines to be assigned to one of the plurality of software applications.

14. The method of claim 13 , wherein the defined policy includes a policy schedule having one or more time of day policies.

15. The method of claim 9 , further comprising the steps of:

storing components of the two or more software application servers and the plurality of software applications in an archival database;

retrieving components from the archive database that define the software group consisting of service domains, web domains and data domains, the software application of the second type and the software application server of the second type, the retrieved components to be loaded by the one or more computing engines; and

registering the software application of the second type and the software application serve of the second type in association with a domain.

16. The method of claim 15 , wherein the domain has a domain type selected from the group consisting of service domains, web domains and data domains.

17. The system of claim 4 , wherein the optimization module determines the optimal allocation based further on priorities assigned to each of the plurality of software applications.

18. The method of claim 12 , wherein the optimal allocation is further based further on priorities assigned to each of the plurality of software applications.

Assignments (18)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
CHANGE OF NAME Recorded Feb 7, 2023
From: TIBCO SOFTWARE INC.
To: CLOUD SOFTWARE GROUP, INC.
Reel/Frame 062714/0634 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
RELEASE REEL 052115 / FRAME 0318 Recorded Oct 3, 2022
From: KKR LOAN ADMINISTRATION SERVICES LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 061588/0511 →
RELEASE (REEL 034536 / FRAME 0438) Recorded Sep 30, 2022
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 061574/0963 →
RELEASE (REEL 054275 / FRAME 0975) Recorded May 7, 2021
From: JPMORGAN CHASE BANK, N.A.
To: TIBCO SOFTWARE INC.
Reel/Frame 056176/0398 →
SECURITY AGREEMENT Recorded Nov 2, 2020
From: TIBCO SOFTWARE INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 054275/0975 →
SECURITY AGREEMENT Recorded Mar 6, 2020
From: TIBCO SOFTWARE INC.
To: KKR LOAN ADMINISTRATION SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 052115/0318 →
SECURITY INTEREST Recorded Dec 5, 2014
From: TIBCO SOFTWARE INC.; TIBCO KABIRA LLC; NETRICS.COM LLC
To: JPMORGAN CHASE BANK., N.A., AS COLLATERAL AGENT
Reel/Frame 034536/0438 →
NUNC PRO TUNC ASSIGNMENT Recorded Nov 11, 2014
From: TIBCO DATASYNAPSE LLC
To: TIBCO SOFTWARE INC.
Reel/Frame 034144/0831 →
CHANGE OF NAME Recorded Aug 28, 2013
From: TIBCO DATASYNAPSE, INC.
To: TIBCO DATASYNAPSE LLC
Reel/Frame 031106/0054 →
CHANGE OF NAME Recorded Aug 28, 2013
From: DATASYNAPSE, INC.
To: TIBCO DATASYNAPSE, INC.
Reel/Frame 031100/0494 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2006
From: BERNARDIN, JAMES; ISKOLD, ALEXANDER
To: DATASYNAPSE, INC.
Reel/Frame 017756/0231 →