IP Library Granted Patent US 11,032,145
Granted Patent B2
US 11,032,145 · App. 15/878,304 · Granted Jun 8, 2021

Methods and systems that provision applications across multiple computer systems

Inventors: Agila Govindaraju (Bangalore, IN); Ashish Dhar (Bangalore, IN); Ravi Kasha (Bangalore, IN); Mohammed Muneebuddin (Bangalore, IN); Akshata Sampagavi (Bangalore, IN)
Assignee: VMware, Inc.
H04L41/082G06F8/61G06Q10/0631H04L67/10H04L67/303
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 11,032,145
App. No.
15/878,304
Granted
Jun 8, 2021
Kind
B2
Abstract

The current document is directed to an automated-application-installation subsystem that provisions, installs, and configures applications across cloud-computing providers. The automated-application-installation subsystem employs an application blueprint to identify components to provisions, including component specifications and constraints, and to identify interdependencies between components. The automated-application-installation subsystem then determines a cost-effective provisioning of the identified components across available cloud-computing providers and installs the application according to the cost-effective provisioning. When less expensive, storage and computer-instruction-execution components of the application may be allocated from different cloud=computing providers.

Claims (88)

1. An automated-application subsystem of an automated-application-release-management system within a cloud-computing facility having multiple servers, data-storage devices, and one or more internal networks, the automated-application subsystem comprising:

an application-blueprint-generation subsystem that generates an application blueprint;

a resource-profile storage component that stores resource profiles, each resource profile describing computational resources that are allocable from computing facilities;

computational-resource processors that each retrieves resource profiles from the resource-profile storage component, filters the computational resources described in the retrieved resource profiles, and returns candidate computational resources to an application provisioning engine; and

the application-provisioning engine, to which an application blueprint is input, that requests candidate resources from the computational-resource processors, maps each computational resource specified in the application blueprint to a candidate resource and that uses the mapping to allocate computational resources for execution of the application described by the application blueprint.

2. The automated-application subsystem of claim 1 that is further incorporated in a workflow-based cloud-management system that additionally includes an infrastructure-management-and-administration subsystem and the workflow-execution engine.

3. The automated-application subsystem of claim 1 wherein the application blueprint generated by the application-blueprint-generation subsystem describes the computational resources and application components that together compose an executing application, including specifications of the computational resources and application components, constraints, characteristics, and dependencies of the computational resources and application components, and interdependencies among computational resources and application components.

4. The automated-application subsystem of claim 3

wherein each resource profile describes available computational resources of a particular resource class provided by a particular computing facility; and

wherein each resource profile includes one or more resource items that describes a particular type of computational resource of the resource class provided by the particular computing facility.

5. The automated-application subsystem of claim 3 wherein the computational-resource processors include one or more of:

a CPU/memory computational-resource processor;

a network processor; and

a storage processor.

6. The automated-application subsystem of claim 5

wherein a storage processor receives, in a request for candidate storage resources, specifications, constraints, characteristics, and dependencies for one or more storage resources; and

wherein the storage processor returns one or more candidate storage resources for each storage resource specified in the specifications.

7. The automated-application subsystem of claim 5 wherein a storage-resource specification includes one or more of:

an indication of a storage-device type;

an indication of a storage-device access mode;

an indication of the sizes of data-storage units provided by the data-storage device; and

an indication of data-storage features for high-availability, data redundancy, and data encryption.

8. The automated-application subsystem of claim 5 wherein a set of storage-resource characterizations includes one or more of:

an indication of an access failure rate;

an indication of a failure frequency;

an indication of support for data encryption; and

an indication of data persistency.

9. The automated-application subsystem of claim 5 wherein a set of storage-resource dependencies includes one or more of:

a number of application instances that access the storage resource;

locations of application instances that access the storage resource;

workload-types of application instances that access the storage resource;

an application type; and

an application version.

10. The automated-application subsystem of claim 5 wherein a set of storage-resource constraints includes one or more of:

an indication of a minimum storage-device capacity;

an indication of a minimum average data-reading rate;

an indication of a minimum average data-writing rate;

an indication of a minimum average access latency;

an indication of a maximum average access latency;

an indication of a maximum failure rate; and

an indication of a maximum failure frequency.

11. The automated-application subsystem of claim 3 wherein the application-provisioning engine, to which an application blueprint is input, maps each computational resource specified in the application blueprint to a candidate resource by:

considering possible mappings of computational resources specified in the application blueprint to candidate resources returned by the computational-resource processors;

for each of the considered possible mappings,

determining whether the mapping complies with inter-computing-resource constraints and dependencies included in the application blueprint,

mapping additional computational resources needed to interconnect computational resources in the mapping to candidate computational resources to generate a complete mapping, and

determining a cost for the complete mapping; and

selecting a lowest-cost complete mapping for provisioning the application.

12. The automated-application subsystem of claim 10 wherein the additional computational resources include network resources that securely interconnect virtual machines to remote data-storage facilities.

13. The automated-application subsystem of claim 1 wherein the mapping allocates processing and memory resources for an application instance from a first computing facility and allocates storage resources for the application instance from a second computing facility.

14. The automated-application subsystem of claim 1 further comprising:

a provider monitor that

monitors computing facilities from which computational resources are allocated to determine allocable resources currently provided by the computing facilities;

generates new resource profiles for newly identified computing facilities,

updates resource profiles for computing facilities for which resource profiles have been previously generated, and

maintains the newly generated and updated resource profiles in the resource-profile storage component.

15. A method, carried out by an automated-application subsystem of an automated-application-release-management system within a cloud-computing facility having multiple servers, data-storage devices, and one or more internal networks, that maps computational resources specified in an application blueprint to computational resources available from computing facilities, the method comprising:

receiving an application blueprint;

for each of one or more resource classes,

extracting specifications, characteristics, constraints, and dependencies for each computational resource of the resource class from the received application blueprint;

furnishing the extracting specifications, characteristics, constraints, and dependencies to a computational-resource processor that retrieves resource profiles from a resource-profile storage component, filters the computational resources described in the retrieved resource profiles using the extracted specifications, characteristics, constraints, and dependencies, and returns candidate computational resources;

mapping each computational resource specified in the application blueprint to a candidate resource; and

using the mapping to allocate computational resources for execution of the application described by the application blueprint.

16. The method of claim 15 wherein the application blueprint generated by the application-blueprint-generation subsystem describes the computational resources and application components that together compose an executing application, including specifications of the computational resources and application components, constraints, characteristics, and dependencies of the computational resources and application components, and interdependencies among computational resources and application components.

17. The method of claim 15 wherein mapping each computational resource specified in the application blueprint to a candidate resource further comprises:

considering possible mappings of computational resources specified in the application blueprint to candidate resources returned by the computational-resource processors;

for each of the considered possible mappings,

determining whether the mapping complies with inter-computing-resource constraints and dependencies included in the application blueprint,

mapping additional computational resources needed to interconnect computational resources in the mapping to candidate computational resources to generate a complete mapping, and

determining a cost for the complete mapping; and

selecting a lowest-cost complete mapping for provisioning the application.

18. The method of claim 17

wherein the mapping allocates processing and memory resources for an application instance from a first computing facility and allocates storage resources for the application instance from a second computing facility; and

wherein the additional computational resources include network resources that securely interconnect virtual machines to remote data-storage facilities.

19. A physical data-storage device that stores a sequence of computer instructions that, when executed by one or more processors within an automated-application subsystem within a cloud-computing facility having multiple servers, data-storage devices, and one or more internal networks, control the automated-application subsystem to:

receive an application blueprint;

for each of one or more resource classes,

extract specifications, characteristics, constraints, and dependencies for each computational resource of the resource class from the received application blueprint;

furnish the extracted specifications, characteristics, constraints, and dependencies to a computational-resource processor that retrieves resource profiles from a resource-profile storage component, filters the computational resources described in the retrieved resource profiles using the extracted specifications, characteristics, constraints, and dependencies, and returns candidate computational resources;

map each computational resource specified in the application blueprint to a candidate resource; and

use the mapping to allocate computational resources for execution of the application described by the application blueprint.

20. The physical data-storage device of claim 19 wherein the stored sequence of computer instructions further control the automated-application subsystem to:

consider possible mappings of computational resources specified in the application blueprint to candidate resources returned by the computational-resource processors;

for each of the considered possible mappings,

determine whether the mapping complies with inter-computing-resource constraints and dependencies included in the application blueprint,

map additional computational resources needed to interconnect computational resources in the mapping to candidate computational resources to generate a complete mapping, and

determine a cost for the complete mapping; and

select a lowest-cost complete mapping for provisioning the application.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2018
From: GOVINDARAJU, AGILA; DHAR, ASHISH; KASHA, RAVI; MUNEEBUDDIN, MOHAMMED; SAMPAGAVI, AKSHATA
To: VMWARE, INC.
Reel/Frame 044706/0430 →
Continuity (1)
Related Publication 20190229983A1 · Jul 25, 2019