# US 12,010,188 B2 · Smart delivery assistant

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

- Number: US 12,010,188 B2
- Document ID: US12010188B2
- Status: Granted
- Kind: B2
- Application number: 18/303,063
- Filed: 2023-04-19
- Published: 2023-11-02
- Granted: 2024-06-11
- Earliest claimed: 2022-04-27
- Assignees: Dynatrace LLC
- Applicants: Dynatrace LLC
- Inventors: Andreas Tscheinig; Alois Reitbauer
- Web page: https://patentgrep.com/patent/US12010188B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- G06F 8/60: Software deployment
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- H04L 41/12: Discovery or management of network topologies
- 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

A technology is disclosed for automated risk analysis for the deployment of software component updates in complex microservice architectures. Dependencies and versions of deployment situations in test setup environments and in a target environment are analyzed and compared to identify a version delta between tested and production deployments. Further, test results for test deployments are used to identify and remove unsuccessful test setups. Successful test setups are ranked according to extend of their version delta against the target environment and one of the successful test setups is selected according to a deployment strategy. After a test setup is selected, a deployment plan considering service versions and dependencies is generated that guarantees a tested and functional state of the target environment after each deployment step.

## Claims

### Claim 1

An automated deployment method for deploying a computer service into a distributed computing environment, comprising:
receiving, by a deployment recommendation service, a deployment request for deployment of a candidate service into a target computing environment, where the deployment request includes an identifier for the candidate service and a version number for the candidate service;
identifying, by the deployment recommendation service, call dependencies between the candidate service and other services in the target computing environment by accessing a topology model, where the topology model represents call dependencies between services deployed in the target computing environment;
for each identified call dependency, comparing, by the deployment recommendation service, version of a given service in a given test computing environment with version of a corresponding service in the target computing environment, where the given service has a call dependency with the candidate service and the candidate service is deployed in the given test computing environment; and
providing, by the deployment recommendation service, a deployment recommendation for the candidate service into the target computing environment based on version differences in at least one service having a call dependency with the candidate service.

### Claim 2 (depends on 1)

The deployment method of claim 1 further comprises selecting, by the deployment recommendation service, the given test environment from a group of test environments, where the version number of the candidate service deployed to the test environment matches the version number received with the deployment request; where the selection of the test environment is further based on a result of at least one test executed in the test environment.

### Claim 3 (depends on 1)

The deployment method of claim 1 further comprises retrieving, by the deployment recommendation service, test records from a test result repository, where each test record indicates a deployment configuration in which tests described in the test record were executed, and the deployment configuration identifies services in the test computing environment and a version number for the services;
for each deployment configuration, comparing version of a given service in the test computing environment with version of a corresponding service in the target computing environment;
for each deployment configuration, quantifying, by the deployment recommendation service, version differences between services associated with each deployment configuration and services in the target computing environment; and
selecting, by the deployment recommendation service, a given deployment configuration based on the quantified version differences, where the given deployment configuration defines the given test environment.

### Claim 4 (depends on 3)

The deployment method of claim 3 wherein retrieving test records from a test result repository further comprises identifying test records with a deployment configuration that excludes the candidate service and removing the identified test records.

### Claim 5 (depends on 3)

The deployment method of claim 3 wherein retrieving test records from a test result repository further comprises identifying test records that indicates an undesired test outcome and removing the identified test records.

### Claim 6 (depends on 1)

The deployment method of claim 1 wherein providing a deployment recommendation further comprises recommending against deploying the candidate service in response to a determination of a version difference with a particular service having a call dependency with the candidate service, where the identified call dependencies indicate that the particular service has a descendent relationship with the candidate service.

### Claim 7 (depends on 1)

The deployment method of claim 1 wherein providing a deployment recommendation further comprises recommending deployment with caution in response to a determination of a version difference with a particular service having a call dependency with the candidate service, where the identified call dependencies indicate that the particular service has an ancestor relationship with the candidate service.

### Claim 8 (depends on 1)

The deployment method of claim 1 wherein providing a deployment recommendation further comprises recommending deployment in response to a determination of no version differences amongst services having a call dependency with the candidate service.

### Claim 9 (depends on 1)

The deployment method of claim 1 wherein providing a deployment recommendation further comprises deploying the candidate service in the target computing environment in response to a determination of no version differences amongst services having a call dependency with the candidate service.

### Claim 10 (depends on 1)

The deployment method of claim 1 further comprises creating a deployment plan for the target computing environment, where the deployment plan specifies a sequence of updates to services in the target computing environment and the sequence of updates accounts for backward compatibility of the services.

### Claim 11 (depends on 1)

The deployment method of claim 1 further comprises creating a reverse topological order for services having a call dependency with the candidate service, identifying one or more services from the services having a call dependency with the candidate service for which the version deployed to the given test computing environment is higher than the version deployed to the target computing environment, and adding the identified one or more services to the sequence of updates in accordance with the reverse topological order, where a given service in the reverse topological order is listed before services from which the service receive requests.

### Claim 12 (depends on 1)

The deployment method of claim 1 further comprises comparing, by the deployment recommendation service, the version number of the candidate service to version number of the corresponding service deployed in the target computing environment; and rejecting, by the deployment recommendation service, the deployment request in response to the version number of the candidate service being equal to or less than the version number of the corresponding service deployed in the target computing environment.

### Claim 13

A non-transitory computer-readable medium having computer-executable instructions that, upon execution of the instructions by a processor of a computer, cause the computer to perform:
receiving a deployment request for deployment of a candidate service into a target computing environment, where the deployment request includes an identifier for the candidate service and a version number for the candidate service;
comparing the version number of the candidate service to version number of the corresponding service deployed in the target computing environment;
rejecting the deployment request in response to the version number of the candidate service being equal to or less than the version number of the corresponding service deployed in the target computing environment;
identifying call dependencies between the candidate service and other services in the target computing environment by accessing a topology model, where the topology model represents call dependencies between services deployed in the target computing environment;
for each identified call dependency, comparing version of a given service in a given test computing environment with version of a corresponding service in the target computing environment, where the given service has a call dependency with the candidate service and the candidate service is deployed in the given test computing environment; and
providing a deployment recommendation for the candidate service into the target computing environment based on version differences in at least one service having a call dependency with the candidate service.

### Claim 14 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to perform to: select the given test environment from a group of test environments, where the version number of the candidate service deployed to the test environment matches the version number received with the deployment request; where the selection of the test environment is further based on a result of at least one test executed in the test environment.

### Claim 15 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to perform to:
retrieve test records from a test result repository, where each test record indicates a deployment configuration in which tests described in the test record were executed, and the deployment configuration identifies services in the test computing environment and a version number for the services;
for each deployment configuration, compare version of a given service in the test computing environment with version of a corresponding service in the target computing environment;
for each deployment configuration, quantify version differences between services associated with each deployment configuration and services in the target computing environment; and
select a given deployment configuration based on the quantified version differences, where the given deployment configuration defines the given test environment.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15 having computer-executable instructions that further cause the computer to identify test records with a deployment configuration that excludes the candidate service and remove the identified test records.

### Claim 17 (depends on 15)

The non-transitory computer-readable medium of claim 15 having computer-executable instructions that further cause the computer to identify test records that indicates an undesired test outcome and remove the identified test records.

### Claim 18 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to recommend against deploying the candidate service in response to a determination of a version difference with a particular service having a call dependency with the candidate service, where the identified call dependencies indicate that the particular service has a descendent relationship with the candidate service.

### Claim 19 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to recommend deployment with caution in response to a determination of a version difference with a particular service having a call dependency with the candidate service, where the identified call dependencies indicate that the particular service has an ancestor relationship with the candidate service.

### Claim 20 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to recommend deployment in response to a determination of no version differences amongst services having a call dependency with the candidate service.

### Claim 21 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to deploy the candidate service in the target computing environment in response to a determination of no version differences amongst services having a call dependency with the candidate service.

### Claim 22 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to create a deployment plan for the target computing environment, where the deployment plan specifies a sequence of updates to services in the target computing environment and the sequence of updates accounts for backward compatibility of the services.

### Claim 23 (depends on 13)

The non-transitory computer-readable medium of claim 13 having computer-executable instructions that further cause the computer to create a reverse topological order for services having a call dependency with the candidate service, identify one or more services from the services having a call dependency with the candidate service for which the version deployed to the given test computing environment is higher than the version deployed to the target computing environment, and add the identified one or more services to the sequence of updates in accordance with the reverse topological order, where a given service in the reverse topological order is listed before services from which the service receive requests.
