# US 9,882,976 B1 · Supporting heterogeneous environments during code deployment

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

- Number: US 9,882,976 B1
- Document ID: US9882976B1
- Status: Granted
- Kind: B1
- Application number: 14/740,993
- Filed: 2015-06-16
- Granted: 2018-01-30
- Earliest claimed: 2015-06-16
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Cory Barrett Kendall
- Web page: https://patentgrep.com/patent/US9882976B1

## CPC

- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/1031: Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
- H04L 47/748: {Negotiation of resources, e.g. modification of a request}
- H04L 47/822: {Collecting or measuring resource availability data}
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/563: Data redirection of data network streams
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

When servers hosting a website are under some form of deployment activity (e.g., a software update being in mid-deployment), the resources requested may not be available from all servers hosting the website. In such mid-deployment edge cases, the server would return an error message in response to the request. According to an application employing redirect instructions via a load balancer, a redirect function (such as a Hypertext Transfer Protocol (HTTP) status code 302) may be configured to redirect a client request to the same location as an initial request, via a load balancer, in order to provide the client with multiple attempts of reaching an updated host (e.g., a server hosting a resource based on a recent deployment), without having to receive error codes or otherwise fail to receive the requested resource.

## Claims

### Claim 1

A computer-implemented method, comprising:
receiving, at a server and from a requestor, a request specifying a network location for a network resource;
determining that the server lacks access to the network resource, the server lacking access to the resource at least temporarily;
detecting a setting indicating that the server is to submit a redirect instruction to the requestor to cause the requestor to submit another request specifying the network location for the network resource;
transmitting, in response to the request, a redirect instruction that specifies a redirect location being the same location as the network location for the network resource received in the request, wherein, if the setting does not indicate to submit the redirect instruction, the server transmits a response to the request indicating a lack of access to the network resource.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the redirect instruction is a Hypertext Transfer Protocol (HTTP) redirect code indicating an action to be performed by a client without user interaction.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein
the method further comprises registering the redirect instruction with a load balancer to cause the load balancer to redirect another request specifying the network location for the network resources to another server.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein the other server has access to the network resource as a result of an update during a deployment that the server has not yet received.

### Claim 5

A system, comprising:
one or more processors;
memory including instructions that, as a result of being executed by the one or more processors, cause the system to:
receive, at a server and from a requestor, a request for an asset, the request specifying, at least, a location of the asset;
determine the asset as unavailable at the location, the server lacking access to the asset at least temporarily;
detect a setting indicating that the server is to submit a redirect instruction to the requestor to cause the requestor to submit another request specifying the location for the asset;
serve a response including a redirect instruction that specifies a redirect location being the same location as the location of the asset received in the request, wherein, if the setting does not indicate to submit the redirect instruction, the server transmits a response to the request indicating a lack of access to the asset in response to the request.

### Claim 6 (depends on 5)

The system of claim 5, wherein:
in response to a determination that the asset is unavailable at the location, create a host log entry associated with the location of the asset, and
update the host log entry if the asset is determined to be available at the location.

### Claim 7 (depends on 5)

The system of claim 5, wherein the location of the asset is a server of a fleet of servers, each server being operably interconnected with a load balancer of the system.

### Claim 8 (depends on 5)

The system of claim 5, wherein:
the instructions further cause the system to determine a status of a network comprising the location of the asset, wherein the status is based at least in part on a network deployment stage.

### Claim 9 (depends on 5)

The system of claim 5, wherein the request originates from a host server, a front-end server, an intermediary server, an application or a client.

### Claim 10 (depends on 5)

The system of claim 5, wherein:
identify an entity transmitting the request; and
maintain a counter configured to record a number of redirect attempts performed by the identified entity.

### Claim 11 (depends on 10)

The system of claim 10, wherein:
if the identified entity is a web browser, the instructions cause the system to:
identify a redirection limit for the web browser, the redirection limit being a maximum number of redirect instructions to follow per request; and
based at least in part on the counter, determine an action to perform when the number of redirect attempts is approaching the redirection limit for the web browser.

### Claim 12 (depends on 11)

The system of claim 11, wherein the action includes serving the redirect instruction that specifies a redirect location being a different location from the location of the asset, the different location maintaining an available asset.

### Claim 13

A non-transitory computer-readable storage medium having stored thereon instructions that, if executed by one or more processors of a computer system, cause the computer system to:
receive, at a server and from a requestor, a request for a resource, the request specifying, at least, an identifier of the resource;
determine the server lacks access to the resource via the identifier at least temporarily;
detect a setting indicating that the server is to submit a redirect instruction to the requestor to cause the requestor to submit another request specifying the identifier of the resource; and
serve the redirect instruction, the redirect instruction providing a redirect identifier being the same as the identifier of the resource received in the request, wherein, if the setting does not indicate to submit a redirect instruction, the server transmits a response to the request indicating a lack of access to the resource in response to the request.

### Claim 14 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the identifier of the resource is a uniform resource identifier (URI) and the resource is a document associated with the URI.

### Claim 15 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the instructions further comprise instructions that, when executed by the one or more processors, cause the computer system to store an indication of the inaccessible resource in metadata storage, the indication associating the resource with the identifier of the resource.

### Claim 16 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the instructions that cause the computer system to store the indication of the inaccessible resource further include instructions that cause the computer system to update the indication of the inaccessible resource in the metadata storage each time the resource is determined to be inaccessible.

### Claim 17 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the instructions further comprise instructions that, when executed by the one or more processors, cause the computer system to receive configuration information indicating deployment of a new host, wherein the resource is accessible on the new host.

### Claim 18 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein the instructions that cause the computer system to receive configuration information further include instructions that cause the computer system to use the configuration information to route, via the request routing service, a next request for the resource to the new host.

### Claim 19 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein the instructions further comprise instructions that, when executed by the one or more processors, cause the computer system to transmit, to the request routing service, deployment information related to a new identifier of the resource.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein the instructions that cause the computer system to transmit deployment information further include instructions that cause the computer system to transmit a request, to the request routing service, the request including instructions to transmit a new request for a resource to the new identifier of the resource.
