# US 2019/0171447 A1 · Automatic scaling of microservices applications

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

- Number: US 2019/0171447 A1
- Document ID: US20190171447A1
- Status: Published application
- Kind: A1
- Application number: 16/270,077
- Filed: 2019-02-07
- Published: 2019-06-06
- Earliest claimed: 2016-12-22
- Assignees: Juniper Networks, Inc.
- Applicants: Juniper Networks, Inc.
- Inventors: Jalandip LEPCHA; Tong JIANG
- Web page: https://patentgrep.com/patent/US20190171447A1

## CPC

- G06F 9/28: Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/5066: {Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs (mappping at compile time, see G06F8/451)}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A device may receive information identifying a set of tasks to be executed by a microservices application that includes a plurality of microservices. The device may determine an execution time of the set of tasks based on a set of parameters and a model. The set of parameters may include a first parameter that identifies a first number of instances of a first microservice of the plurality of microservices, and a second parameter that identifies a second number of instances of a second microservice of the plurality of microservices. The device may compare the execution time and a threshold. The threshold may be associated with a service level agreement. The device may selectively adjust the first number of instances or the second number of instances based on comparing the execution time and the threshold.

## Claims

### Claim at position 1

1-20. (canceled)

### Claim 21

A device, comprising:
a memory; and
one or more processors to:
receive information identifying a set of tasks to be executed,
the set of tasks being associated with a microservices application,
the microservices application being associated with a set of microservices, and
the set of tasks to be executed by the microservices application associated with the set of microservices;
determine an execution time of the set of tasks based on a set of parameters and a model,
the set of parameters including at least two of:
a first parameter that identifies a number of tasks of the set of tasks,
a second parameter that identifies a first number of instances of a first microservice of the set of microservices,
a third parameter that identifies a first score associated with the first microservice of the set of microservices,
a fourth parameter that identifies a second number of instances of a second microservice of the set of microservices, or
a fifth parameter that identifies a second score associated with the second microservice of the set of microservices;
compare the execution time and a threshold; and
selectively adjust the first number of instances of the first microservice or the second number of instances of the second microservice based on comparing the execution time and the threshold.

### Claim 22 (depends on 21)

The device of claim 21, where the one or more processors are further to:
determine the threshold,
the threshold being a threshold amount of time based on a service level agreement.

### Claim 23 (depends on 21)

The device of claim 21, where the one or more processors are further to:
determine that the first microservice is associated with a greater amount of execution time of a first subtask, of a plurality of first subtasks, as compared to an execution time of a second subtask, of a plurality of second subtasks associated with the second microservice; and
execute more of the plurality of first subtasks of the first microservice in parallel as compared to the plurality of second subtasks of the second microservice.

### Claim 24 (depends on 21)

The device of claim 21, where the one or more processors are further to:
determine the first score for the first microservice based on a set of factors associated with the first microservice,
the set of factors including one or more of:
an instruction metric associated with the first microservice,
the execution time,
a number of requests of the first microservice to execute a subtask,
a resource utilization of the first microservice, or
an amount of time that the first microservice is executing one or more subtasks.

### Claim 25 (depends on 21)

The device of claim 21, where the one or more processors are further to:
determine that the second score for the second microservice is higher than the first score for the first microservice; and
increase the second number of instances of the second microservice.

### Claim 26 (depends on 21)

The device of claim 21, where the one or more processors are further to:
determine the first number of instances for the first microservice based on one or more of:
the model,
one or more resources associated with the first microservice, or
the first score of the first microservice; and
determine the second number of instances for the second microservice based on one or more of:
the model,
one or more resources associated with the second microservice, or
the second score of the second microservice.

### Claim 27 (depends on 21)

The device of claim 21, where the one or more processors, when adjusting the first number of instances of the first microservice or the second number of instances of the second microservice, are to:
increase the first number of instances of the first microservice when the first microservice is associated with a highest score, or
decrease the second number of instances of the second microservice when the first microservice is associated with a lowest score; and
where the one or more processors are further to:
determine whether the execution time based on the increased first number of instances and the decreased second number of instances satisfies the threshold,
the threshold being a threshold execution time based on a service level agreement.

### Claim 28

A non-transitory computer-readable medium storing instructions, the instructions comprising:
one or more instructions that, when executed by one or more processors of a first maintenance endpoint (MEP) device, cause the one or more processors to:
receive information identifying a set of tasks to be executed,
the set of tasks being associated with a microservices application,
the microservices application being associated with a set of microservices, and
the set of tasks to be executed by the microservices application associated with the set of microservices;
determine an execution time of the set of tasks based on a set of parameters and a model,
the set of parameters including at least two of:
a first parameter that identifies a number of tasks of the set of tasks,
a second parameter that identifies a first number of instances of a first microservice of the set of microservices,
a third parameter that identifies a first score associated with the first microservice of the set of microservices,
a fourth parameter that identifies a second number of instances of a second microservice of the set of microservices, or
a fifth parameter that identifies a second score associated with the second microservice of the set of microservices;
compare the execution time and a threshold; and
selectively adjust the first number of instances of the first microservice or the second number of instances of the second microservice based on comparing the execution time and the threshold.

### Claim 29 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:
determine the threshold,
the threshold being a threshold amount of time based on a service level agreement.

### Claim 30 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:
determine that the first microservice is associated with a greater amount of execution time of a first subtask, of a plurality of first subtasks, as compared to an execution time of a second subtask, of a plurality of second subtasks associated with the second microservice; and
execute more of the plurality of first subtasks of the first microservice in parallel as compared to the plurality of second subtasks of the second microservice.

### Claim 31 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:
determine the first score for the first microservice based on as set of factors associated with the first microservice,
the set of factors including one or more of:
an instruction metric associated with the first microservice,
the execution time,
a number of requests of the first microservice to execute a subtask,
a resource utilization of the first microservice, or
an amount of time that the first microservice is executing one or more subtasks.

### Claim 32 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:
determine that the second score for the second microservice is higher than the first score for the first microservice; and
increase the second number of instances of the second microservice.

### Claim 33 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors, further cause the one or more processors to:
determine the first number of instances for the first microservice based on one or more of:
the model,
one or more resources associated with the first microservice, or
the first score of the first microservice; and
determine the second number of instances for the second microservice based on one or more of:
the model,
one or more resources associated with the second microservice, or
the second score of the second microservice.

### Claim 34 (depends on 28)

The non-transitory computer-readable medium of claim 28, where the one or more instructions, when executed by the one or more processors to adjust the first number of instances of the first microservice or the second number of instances of the second microservice, cause the one or more processors to:
increase the first number of instances of the first microservice when the first microservice is associated with a highest score, or
decrease the second number of instances of the second microservice when the first microservice is associated with a lowest score; and
where the one or more processors are further to:
determine whether the execution time based on the increased first number of instances and the decreased second number of instances satisfies the threshold,
the threshold being a threshold execution time based on a service level agreement.

### Claim 35

A method, comprising:
receiving information identifying a set of tasks to be executed,
the set of tasks being associated with a microservices application,
the microservices application being associated with a set of microservices, and
the set of tasks to be executed by the microservices application associated with the set of microservices;
determining an execution time of the set of tasks based on a set of parameters and a model,
the set of parameters including at least two of:
a first parameter that identifies a number of tasks of the set of tasks,
a second parameter that identifies a first number of instances of a first microservice of the set of microservices,
a third parameter that identifies a first score associated with the first microservice of the set of microservices,
a fourth parameter that identifies a second number of instances of a second microservice of the set of microservices, or
a fifth parameter that identifies a second score associated with the second microservice of the set of microservices;
comparing the execution time and a threshold; and
selectively adjusting the first number of instances of the first microservice or the second number of instances of the second microservice based on comparing the execution time and the threshold.

### Claim 36 (depends on 35)

The method of claim 35, further comprising:
determining the threshold,
the threshold being a threshold amount of time based on a service level agreement.

### Claim 37 (depends on 35)

The method of claim 35, further comprising:
determining that the first microservice is associated with a greater amount of execution time of a first subtask, of a plurality of first subtasks, as compared to an execution time of a second subtask, of a plurality of second subtasks associated with the second microservice; and
executing more of the plurality of first subtasks of the first microservice in parallel as compared to the plurality of second subtasks of the second microservice.

### Claim 38 (depends on 35)

The method of claim 35, further comprising:
determining the first score for the first microservice based on as set of factors associated with the first microservice,
the set of factors including one or more of:
an instruction metric associated with the first microservice,
the execution time,
a number of requests of the first microservice to execute a subtask,
a resource utilization of the first microservice, or
an amount of time that the first microservice is executing one or more subtasks.

### Claim 39 (depends on 35)

The method of claim 35, further comprising:
determining that the second score for the second microservice is higher than the first score for the first microservice; and
increasing the second number of instances of the second microservice.

### Claim 40 (depends on 35)

The method of claim 35, where adjusting the first number of instances of the first microservice or the second number of instances of the second microservice comprises:
increasing the first number of instances of the first microservice when the first microservice is associated with a highest score, or
decreasing the second number of instances of the second microservice when the first microservice is associated with a lowest score; and
further comprising:
determining whether the execution time based on the increased first number of instances and the decreased second number of instances satisfies the threshold,
the threshold being a threshold execution time based on a service level agreement.
