# US 10,320,892 B2 · Rolling capacity upgrade control

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

- Number: US 10,320,892 B2
- Document ID: US10320892B2
- Status: Granted
- Kind: B2
- Application number: 14/588,653
- Filed: 2015-01-02
- Published: 2016-07-07
- Granted: 2019-06-11
- Earliest claimed: 2015-01-02
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Bradley S. Smith; Kalyan K. Kona; Sundaravadivelan Paranthaman; Ankur Jauhari
- Web page: https://patentgrep.com/patent/US10320892B2

## CPC

- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5061: {Partitioning or combining of resources}
- H04L 41/0896: Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities (flow or congestion control using dynamic resource allocation, e.g. in-call renegotiation, H04L47/76)
- H04L 41/5041: characterised by the time relationship between creation and deployment of a service
- H04L 67/1004: Server selection for load balancing
- G06F 16/2448: {for particular applications; for extensibility, e.g. user defined types}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- H04L 41/5096: {wherein the managed service relates to distributed or central networked applications}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In order to upgrade a source farm to a target farm, the target farm is created with an initial increment of resource capacity that is a fraction of a final resource capacity of the target farm. A corresponding increment of the databases attached to the source farm are then switched from the source farm to the target farm. The resource capacity at the source farm, that was used to service the moved databases, is then removed from the source farm and added to the target farm, and another increment of the databases are switched from the source farm to the target farm. This continues until a full capacity of resources is deployed at the target farm, and the databases are fully moved from the source farm to the target farm.

## Claims

### Claim 1

A computing system for controlling deployment of computing resources, the computing system comprising:
a processor; and
memory storing instructions executable by the processor, wherein the instructions, when executed by the processor, configure the computing system to provide:
a goal processing component configured to identify a resource capacity goal corresponding to a source server farm;
an upgrade controller configured to:
receive an upgrade request input indicative of a request to deploy computing resources in a target server farm, and
based on an incremental indicator that indicates an increment of the source server farm to be upgraded at a given time, identify a fixed increment of the computing resources to be deployed in the target server farm, wherein the fixed increment of the computing resources is identified independently of a workload level on the source server farm and is less than a final resource capacity of the target server farm;
a resource capacity reassignment component configured to:
in response to a call from the upgrade controller, remove the fixed increment of computing resources from the source server farm, including one or more virtual machines on the source server farm, by reducing the resource capacity goal and deploying the fixed increment of computing resources to the target server farm; and
a database move component configured to:
determine whether the target server farm has deployed adequate resource capacity to service a fixed increment of databases,
if the target server farm has deployed adequate resource capacity to service a fixed increment of databases, move the fixed increment of databases from the source server farm to the target server farm, and
if the target server farm has not deployed adequate resource capacity to service a fixed increment of databases, wait for the resource capacity reassignment component to reassign additional computing resources from the source server farm to the target server farm by further reducing the resource capacity goal.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein the computing resources comprise at least one of hardware computing systems and virtual machines implemented by the computing system.

### Claim 3 (depends on 1)

The computing system of claim 1, wherein the resource capacity reassignment component is configured to deploy the fixed increment of computing resources at the target server farm by increasing a resource capacity goal, for the target server farm, by the fixed increment.

### Claim 4 (depends on 1)

The computing system of claim 1, wherein the computing resources implement a multi-tenant service on the source server farm and an upgraded multi-tenant service on the target server farm.

### Claim 5 (depends on 1)

The computing system of claim 1, wherein the instructions further configure the computing system to provide:
a set of request routers configured to route service requests for tenants in the source server farm to computing resources in the source server farm, and
wherein the upgrade controller is configured to identify, as the fixed increment, a fractional part of the set of request routers.

### Claim 6 (depends on 1)

The computing system of claim 1, wherein the upgrade controller is configured to identify the fixed increment of computing resources, to be removed from the source server farm, independently of a processing load on the one or more virtual machines on the source server farm.

### Claim 7 (depends on 1)

The computing system of claim 1, wherein the increment of the source server farm is based on a number of the databases operably coupled to the source server farm.

### Claim 8 (depends on 1)

The computing system of claim 1, wherein the increment of the source server farm comprises a fixed percent of a final resource capacity of the target server farm.

### Claim 9 (depends on 1)

The computing system of claim 1, wherein the instructions further configure the computing system to provide:
a farm creation component is configured to create the target server farm, with no computing resources assigned, in response to a call from the upgrade controller.

### Claim 10 (depends on 1)

The computing system of claim 1, wherein the instructions further configure the computing system to provide:
a farm tear down component is configured to remove a final increment of the computing resources from the source server farm, after a final increment of the databases has been removed from the source server farm.

### Claim 11 (depends on 1)

The computing system of claim 1 wherein the source server farm and the target server farm both implement multi-tenant, cloud-based services.

### Claim 12

A computer-implemented method, comprising:
receiving an upgrade request input indicative of a request to deploy computing resources in a target server farm;
based on an increment indicator that indicates an increment of a source server farm to be upgraded at a given time, identify a fixed increment of the computing resources to be removed from the source server farm and deployed in the target server farm,
wherein the fixed increment of the computing resources is less than a final resource capacity and is identified independently of a workload level on a source server farm;
removing the fixed increment of computing resources from the source server farm, including one or more virtual machines on the source server farm, by:
reducing a resource capacity goal corresponding to the source server farm, and
deploying the fixed increment of computing resources to the target server farm; and
based on deploying the fixed increment of computing resources to the target server farm, determining whether the target server farm has deployed adequate resource capacity to service a fixed increment of databases;
if the target server farm has deployed adequate resource capacity to service the fixed increment of databases, moving the fixed increment of databases from the source server farm to the target server farm, and
if the target server farm has not deployed adequate resource capacity to service the fixed increment of databases, assigning additional computing resources from the source server farm to the target server farm by further reducing the resource capacity goal.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein the computing resources comprise at least one of hardware computing systems and virtual machines implemented by the computing system.

### Claim 14 (depends on 12)

The computer-implemented method of claim 12, further comprising:
deploying the fixed increment of computing resources at the target server farm by increasing a resource capacity goal, for the target server farm, by the fixed increment.

### Claim 15 (depends on 12)

The computer-implemented method of claim 12, further comprising:
implementing a multi-tenant service on the source server farm; and
implementing an upgraded multi-tenant service on the target server farm.

### Claim 16 (depends on 12)

The computer-implemented method of claim 12, further comprising:
routing, using a set of request routers, service requests for tenants in the source server farm to computing resources in the source server farm; and
identifying, as the fixed increment, a fractional part of the set of request routers.

### Claim 17 (depends on 12)

The computing system of claim 12, further comprising:
identifying the fixed increment of the computing resources based on a number of databases operably coupled to the source server farm.

### Claim 18 (depends on 12)

The computing system of claim 12, further comprising:
identifying the fixed increment as a fixed percent of a final resource capacity of the target server farm.

### Claim 19 (depends on 12)

The computing system of claim 12, further comprising:
receiving an indication of a request to generate the target server farm; and
prior to deploying the fixed increment of computing resources to the target server farm, generating the target server farm.

### Claim 20

A computing system for controlling deployment of computing resources, the computing system comprising:
a processor; and
memory storing instructions executable by the processor, wherein the instructions, when executed by the processor, configure the computing system to provide:
a request router configured to:
route a service request for a tenant in a source server farm to computing resources in the source server farm;
an upgrade controller configured to:
receive an upgrade request input indicative of a request to deploy computing resources in a target server farm, and
based on an incremental indicator that indicates an increment of the source server farm to be upgraded at a given time, identify a fixed increment of the computing resources in the source server farm, as a fractional part of the set of request routers, to be deployed in a target server farm;
a goal processing component configured to;
identify a resource capacity goal corresponding to the source server farm;
a resource capacity reassignment component configured to:
release the fixed increment of computing resources from the source server farm, including one or more virtual machines on the source server farm, by reducing the resource capacity goal and deploying the fractional part of the request routers to the target server farm; and
a database move component configured to:
in response to a determination that the target server farm is deployed inadequate resource capacity to service a fixed increment of databases, provide a call to the resource capacity reassignment component to release an additional fixed increment of computing resources, including an additional fractional part of the request routers, from the source server farm to the target server farm by further reducing the resource capacity goal.
