# US 2020/0401454 A1 · Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2020/0401454 A1
- Document ID: US20200401454A1
- Status: Published application
- Kind: A1
- Application number: 17/013,479
- Filed: 2020-09-04
- Published: 2020-12-24
- Earliest claimed: 2007-03-30
- Assignees: ServiceNow, Inc.
- Applicants: ServiceNow, Inc.
- Inventors: Wai Ming Wong; Michael C. Hui
- Web page: https://patentgrep.com/patent/US20200401454A1

## CPC

- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5005: {to service a request}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5033: {considering data affinity}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5055: {considering software capabilities, i.e. software resources associated or available to the machine}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/5072: {Grid computing}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- H04L 47/70: Admission control; Resource allocation
- G06F 2209/5022: Workload threshold
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An application manager receives or defines a service specification for a first application that defines a set of required computing resources that are necessary to run each application component of the first application. A resource supply manager in communication with the application manager manages a plurality of computing resources in a shared computing environment. The application manager is operable to request the set of required computing resources from the computing resource supply manager, and wherein the resource supply manager determines the availability of the required computing resources within the shared computing environment according to resource allocation policies and allocates computing resources to the application manager, and wherein the application manager is operable manage allocation of the computing resources to the first application, the application manager operable to create and manage deployment of instances of each application component of the first application on the allocated computing resources.

## Claims

### Claim 1

A system, comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, are configured to cause the one or more processors to:
receive a request for computing resources for an application, wherein the request is received at a resource supply manager from an application manager based on resource requirements for the application, wherein the resource supply manager is configured to manage allocation for a plurality of computing resources in a distributed computing environment, and the requested computing resources are to be allocated from the plurality of computing resources;
responsive to the request, determine availability of the requested computing resources within the distributed computing environment; and
allocate a subset of the plurality of computing resources to the application manager for the application based at least in part on a service specification, wherein the subset of the computing resources is less than all of the requested computing resources using relaxed resource requirements received from the application manager based at least in part on an unavailability of the requested computing resources.

### Claim 2 (depends on 1)

The system of claim 1, wherein the service specification is received from the application manager and used by the application manager to generate the request.

### Claim 3 (depends on 1)

The system of claim 1 wherein the service specification defines a set of constraints for the plurality of computing resources.

### Claim 4 (depends on 3)

The system of claim 3, wherein the set of constraints define which computing resources of the plurality of computing resources are allocatable to the application manager to execute the application.

### Claim 5 (depends on 3)

The system of claim 3, wherein the request is based at least in part on the set of constraints in relation to constraints for another application of a plurality of applications managed by the application manager.

### Claim 6 (depends on 3)

The system of claim 3, wherein the set of constraints defines the requested computing resources to prevent the application from having a single point of failure.

### Claim 7 (depends on 1)

The system of claim 1, wherein the service specification defines a priority for one or more of a plurality of applications that includes the application and that is managed by the application manager.

### Claim 8 (depends on 1)

The system of claim 1, wherein the instructions are configured to cause the one or more processors to:
receive a replacement request for a replacement computing resource from the application manager when there is an instance of failure in the subset of the computing resources on which the application is running; and
allocating the replacement computing resource to cause the application manager to restart at least a portion of the application that has failed on the replacement computing resource.

### Claim 9 (depends on 1)

The system of claim 1, wherein allocating the subset of the plurality of computing resources comprises:
determining that a full set of the requested computing resources are not available, and
allocating the subset in response to the determination that the full set of requested computing resources are not available and in response to a subsequent request from the application manager, wherein the service specification defines the relaxed resource requirements when the full set is unavailable.

### Claim 10 (depends on 9)

The system of claim 9, wherein the full set of the requested computing resources are not available due to constraints specified in the service specification.

### Claim 11

A method, comprising:
receiving a service specification for a first application of a plurality of applications at an application manager implemented using one or more processors, wherein the service specification defines a set of computing resources of a plurality of computing resources of a shared computing environment that are to run each application component of the first application, and wherein the application manager is configured to manage allocations of the plurality of computing resources from a resource supply, manager to the plurality of applications;
requesting, by the application manager, the set of computing resources from the resource supply manager;
receiving, at the application manager from the resource supply manager, an indication of allocated computing resources of the plurality of computing resources allocated to the first application, wherein the allocated computing resources include fewer resources than are included in the set of computing resources based at least in part on respective availability statuses of the set of computing resources determined by the resource supply manager using resource allocation policies and the service specification indicating an allowable reduction in allocated resources from the set of computing resources to the allocated computing resources; and
deploying and managing instances of each application component of the first application on the allocated computing resources using the application manager.

### Claim 12 (depends on 11)

The method of claim 11, wherein the plurality of applications comprises heterogeneous types of applications.

### Claim 13 (depends on 11)

The method of claim 11, wherein the service specification also defines a set of constraints for the plurality of computing resources, and wherein the application manager is configured to account for the set of constraints when requesting the set of computing resources from the resource supply manager.

### Claim 14 (depends on 13)

The method of claim 13, wherein the set of constraints defines which computing resources of the plurality of computing resources can or cannot be allocated to the application manager to run the application components of the first application.

### Claim 15 (depends on 13)

The method of claim 13, wherein the application manager is configured to account for the set of constraints of the first application in relation to constraints of a second application of the plurality of applications when requesting the set of computing resources from the resource supply manager.

### Claim 16 (depends on 13)

The method of claim 13, wherein the set of constraints defines the set of computing resources to prevent the first application from having a single point of failure.

### Claim 17 (depends on 11)

The method of claim 11, wherein the service specification defines a priority for one or more of the plurality of applications, and the allocation of the plurality of computing resources to the plurality of applications is based at least in part on the priority.

### Claim 18 (depends on 11)

The method of claim 11, wherein deploying and managing instances of each application component of the first application comprises:
monitoring a status of the allocated computing resources on which each application component is running; and
in response to an instance of failure in a failed allocated computing resource of the allocated computing resources, restarting the application component that has failed on the failed allocated computing resource.

### Claim 19 (depends on 11)

The method of claim 11, wherein deploying and managing instances of each application component of the first application comprises:
monitoring a status of the allocated computing resources on which each application component is running;
in response to an instance of failure in a failed allocated computing resource of the allocated computing resources, requesting a replacement computing resource from the resource supply manager; and
restarting the application component that has failed on the replacement computing resource.

### Claim 20

A tangible; non-transitory, and computer-readable medium storing instructions, that when executed by one or more processors are configured to cause the one or more processors to:
receive, at an application manager, a service specification for an application of a plurality of applications that defines a set of computing resources that are to run each application component of the application, wherein the application manager is implemented using one or more processors and is configured to manage the plurality of applications each having one or more application components in a shared computing environment;
transmit a request, from the application manager to a resource supply manager, for the set of computing resources from the resource supply manager;
receive, at the application manager and from the resource supply manager, an indication that the set of computing resources is unavailable based on resource allocation policies;
in response to receiving the indication, transmit a subsequent request, from the application manager to the resource supply manager, for a relaxed set of computing resources that comprises only a portion of the set of the computing resources;
receive; at the application manager from the resource supply manager; an allocation of the portion of the set of computing resources to the application; and
deploy and manage instances of each application component of the application on the portion of the set of computing resources.
