WO2020163120A1 - Efficient scaling of a container-based application in a distributed computing system - Google Patents

Efficient scaling of a container-based application in a distributed computing system Download PDF

Info

Publication number
WO2020163120A1
WO2020163120A1 PCT/US2020/015505 US2020015505W WO2020163120A1 WO 2020163120 A1 WO2020163120 A1 WO 2020163120A1 US 2020015505 W US2020015505 W US 2020015505W WO 2020163120 A1 WO2020163120 A1 WO 2020163120A1
Authority
WO
WIPO (PCT)
Prior art keywords
container
containers
services
service
deployed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2020/015505
Other languages
French (fr)
Inventor
Ranganath IYENGAR GORUR KRISHNA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of WO2020163120A1 publication Critical patent/WO2020163120A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Definitions

  • a distributed computing system is a type of computing system whose components are located on multiple computing devices.
  • a distributed computing system may include a plurality of distinct processing, memory, storage, and communication components that are connected by one or more communication networks.
  • the various components of a distributed computing system may communicate with one another in order to coordinate their actions.
  • Cloud computing systems are built using principles of distributed systems. Cloud computing is the delivery of computing services (e.g., servers, storage, databases, networking, software, analytics) over the Internet.
  • computing services e.g., servers, storage, databases, networking, software, analytics
  • Containerization is an approach to software development in which an application and everything that it needs, such as libraries and other dependencies, are packaged together as a standard unit that is referred to as a container image. When a container image is deployed, it is referred to as a container.
  • the use of containers allows applications to run properly in a variety of different computing environments, regardless of any customized settings that a particular computing environment might have that could differ from the computing environment used for writing and testing the application.
  • Containers also isolate applications from one another on a shared operating system (OS).
  • OS shared operating system
  • Containers provide most of the isolation of virtual machines at a small fraction of the computing power. Containers are often used in distributed computing systems, including cloud computing systems.
  • a microservice architecture is an architectural style that structures an application as a collection of services that are independently deployable.
  • the term“service” refers to at least one function or operation that is performed by an application.
  • a service may be associated with a particular network address (e.g., a uniform resource locator (URL) for Internet services).
  • URL uniform resource locator
  • clients may use all or only some of the services provided by an application. Also, different clients may use the same service for different purposes.
  • Container-based applications may be deployed in distributed computing systems, such as cloud computing systems.
  • a container orchestrator is a tool that facilitates the deployment, management, scaling, networking, and availability of container-based applications in distributed computing systems.
  • Scaling up involves allocating additional resources (e.g., processors, memory) to a container.
  • Scaling out involves provisioning additional containers.
  • the present disclosure is generally related to the deployment of container-based applications in a distributed computing system. As indicated above, scaling up and scaling out are two possible approaches for adjusting the amount of resources that are allocated to a container.
  • the present disclosure provides a new dimension of scaling by dynamically modifying how many services are included in deployed containers. For example, a single container that includes a plurality of services may be split into a plurality of containers. Alternatively, a plurality of services that are deployed in separate containers may be combined into a single container.
  • One aspect of the present disclosure is directed to a method for efficiently scaling a container-based application that provides a plurality of services.
  • the container-based application may be deployed in a distributed computing system.
  • the plurality of services may be deployed using at least one container.
  • the method may additionally include monitoring a utilization level associated with the at least one container.
  • the method may additionally include modifying how many containers are deployed for the plurality of services.
  • detecting the trigger condition may include determining that the utilization level associated with a container that comprises a plurality of services exceeds a defined maximum value.
  • the container may be split into a plurality of containers.
  • detecting the trigger condition may include determining that the utilization level associated with the plurality of separate containers falls below a defined minimum value. In response to detecting this type of trigger condition, the plurality of services may be consolidated into a single container. [0011] In some embodiments, the method may additionally include rearranging a plurality of containers within a plurality of nodes to improve system efficiency. For example, the plurality of containers may be rearranged to reduce how many nodes are required to deploy the plurality of containers.
  • Figure 1 illustrates an example of a scaling technique in accordance with the present disclosure.
  • Figure 2 illustrates an example of a system in which aspects of the present disclosure may be utilized, including a service optimizer engine that manages the deployment of a plurality of containers on a plurality of nodes.
  • Figures 3A-C illustrate an example showing how the ability to modify the number of containers that are deployed for particular services enables the nodes within a distributed computing system to be used more efficiently.
  • Figure 4 illustrates an example of a method for efficiently scaling a container- based application in accordance with the present disclosure.
  • Figure 5 illustrates another example of a system in which aspects of the present disclosure may be utilized, including a performance counter aggregator and a service optimizer engine that interact with a dynamic service layer via one or more cluster management application programming interfaces (APIs).
  • APIs application programming interfaces
  • Figure 6 illustrates an example of a method that may be performed by the performance counter aggregator in the system shown in Figure 5.
  • Figure 7 illustrates an example of a method that may be performed by the service optimizer engine in the system shown in Figure 5.
  • Figure 8 illustrates certain components that may be included within a computer system that may be used to implement the various devices, components, and systems described herein.
  • the present disclosure is generally related to techniques for scaling the amount of resources that are allocated to container-based applications by dynamically modifying how many services are included in deployed containers.
  • a simple example will be discussed in connection with Figure 1. In this example, it will be assumed that an application includes two services, which will be referred to as service A and service B.
  • service A and service B may be maintained at the database layer.
  • service A and service B there are two different ways that service A and service B could be deployed. With one possible approach, both service A and service B could be packaged together in a single container 106. With another possible approach, service A could be packaged in one container 108, and service B could be packaged in another container 110. The present disclosure proposes dynamically shifting between these two possible approaches based on the utilization level of the contained s) in the current deployment.
  • the“utilization level” associated with a container refers to the extent to which the container is consuming one or more computing resources, such as a central processing unit (CPU), memory, input/output (I/O) capacity, network bandwidth, and so forth (including combinations thereof).
  • computing resources such as a central processing unit (CPU), memory, input/output (I/O) capacity, network bandwidth, and so forth (including combinations thereof).
  • FIG. 2 illustrates an example of a system 200 in which aspects of the present disclosure may be utilized.
  • an application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes two nodes (a first node 212a and a second node 212b).
  • These nodes 212a-b may represent distinct physical computing devices that are part of the distributed computing system.
  • a plurality of container images 214a- g may be provided. These container images 214a-g include different combinations of the services that are provided by the application. In the example shown in Figures 2A-B, there are seven different ways that the three services (service A, service B, and service C) may be combined.
  • a separate container image may be created for each possible combination. More specifically, a container image 214a may be created that includes service A, service B, and service C. Another container image 214b may be created that includes service A and service B. Another container image 214c may be created that includes service B and service C. Another container image 214d may be created that includes service A and service C. Another container image 214e may be created that includes service A. Another container image 214f may be created that includes service B. Another container image 214g may be created that includes service C.
  • the plurality of container images 214a-g may be stored in a container registry 216.
  • the system 200 includes a service optimizer engine 224, which is responsible for managing the deployment of containers on the nodes 212a-b. For purposes of the present example, suppose that a container 218 including service A and service B is initially deployed on the first node 212a. Further suppose that a container 236 including service B and another container 238 including service C are initially deployed on the second node 212b.
  • the service optimizer engine 224 monitors the utilization levels 226 associated with the containers 218, 236, 238 that have been deployed. More specifically, in the depicted example, the service optimizer engine 224 monitors the utilization level 226a associated with the container 218 that includes service A and service B, the utilization level 226b associated with the container 236 that includes service B, and the utilization level 226c associated with the container 238 that includes service C.
  • the utilization level 226 corresponding to a particular container indicates the extent to which the container is consuming one or more computing resources (e.g., CPU utilization, memory utilization, I/O capacity, network bandwidth).
  • the utilization level 226 corresponding to a particular container may be expressed in terms of a single metric that represents the extent to which the container is consuming a single computing resource (e.g., a percentage of CPU utilization).
  • the utilization level 226 corresponding to a particular container may be expressed in terms of a plurality of metrics that represent the extent to which the container is consuming a plurality of computing resources (e.g., a percentage of CPU utilization and a percentage of memory utilization).
  • the utilization level 226 corresponding to a particular container may be expressed in terms of a single metric that is determined by combining a plurality of metrics that represent the extent to which the container is consuming a plurality of computing resources.
  • Certain rules 242 may define when modifications should be made with respect to the deployment of containers. These rules 242 may define, among other things, a maximum level 244 and a minimum level 246 for the utilization level 226 associated with a particular container.
  • the service optimizer engine 224 may split the container 218 that includes service A and service B into two containers: a container 234 that includes service A and another container 236' that includes service B. To achieve this splitting, the service optimizer engine 224 may remove the container 218 that includes service A and service B from the first node 212a. In addition, the service optimizer engine 224 may access the container registry 216 to locate the container image 214e that includes service A and the container image 214f that includes service B. The service optimizer engine 224 may then deploy the container image 214e that includes service A as a container 234 that includes service A.
  • the service optimizer engine 224 may deploy the container image 214f that includes service B as a container 236' that includes service B.
  • existing techniques such as a rolling update may be used to ensure that the services that are involved (service A and service B in this example) are not disrupted.
  • the service optimizer engine 224 may consolidate service B and service C into a single container 240. To achieve this consolidation, the service optimizer engine 224 may remove the container 236 that includes service B and the container 238 that includes service C from the second node 212b. In addition, the service optimizer engine 224 may access the container registry 216 to locate the container image 214c that includes service B and service C. The service optimizer engine 224 may then deploy the container image 214c that includes service B and service C as a container 240 that includes service B and service C.
  • the rules 242 may specify other constraints on the way in which services may be combined.
  • the rules 242 may specify one or more prohibited combinations 248. For example, suppose there is a rule 242 that identifies the combination of service A, service B, and service C as a prohibited combination 248. In response to that type of rule 242, the service optimizer engine 224 may eliminate from consideration the container image 214a that includes the prohibited combination of services.
  • only container images that correspond to permitted combinations of services are created. For example, if there is a rule 242 that identifies the combination of service A, service B, and service C as a prohibited combination 248, then in some embodiments the container image 214a that includes that combination of services would not be created.
  • the ability to modify how many containers are deployed for particular services enables the nodes within a distributed computing system to be used more efficiently. An example will be discussed in connection with Figures 3A-C. In this example, it will again be assumed that an application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes two nodes (a first node 312a and a second node 312b).
  • both the first node 312a and the second node 312b have 6 GB of available memory.
  • FIG. 3 A suppose that a container 318 including service A and service B is deployed on the first node 312a, and that a container 338 including service C is initially deployed on the second node 312b. Further suppose that both of these containers 318, 338 require 4 GB of memory.
  • Figure 3B shows a third node 312c added to the system.
  • the third node 312c includes an additional container 318' including service A and service B. Scaling out in this way, however, increases the cost of the system, because an additional node 312c must be added. This kind of an approach to scaling out also results in wasted space, as 2 GB of available memory remains unused in each of the nodes 312a-c.
  • FIG. 3C illustrates how the ability to modify the number of containers that are deployed for a set of services enables scaling out to be performed more efficiently.
  • the container 318 including both service A and service B has been replaced with a plurality of containers, namely, a container 334 including only service A and another container 336 including only service B. It will be assumed that both of these containers 334, 336 require 2 GB of memory (which is a reasonable assumption because it was assumed that the container 318 including both service A and service B requires 4 GB of memory).
  • splitting the container 318 including both service A and service B into two containers 334, 336 enables scale out to be performed more efficiently.
  • an additional container 334' including service A can be added to the first node 312a. This is possible because the container 334' only requires 2 GB of memory and the first node 312a has that much memory available.
  • an additional container 336' including service B can be added to the second node 312b. Again, this is possible because the container 336' only requires 2 GB of memory and the second node 312b has that much memory available.
  • FIG. 3B By comparing Figures 3B and 3C, some potential benefits of the techniques disclosed herein can be appreciated.
  • the configuration shown in Figure 3B and the configuration shown in Figure 3C both include the same number of services.
  • both configurations include two instances of service A, two instances of service B, and one instance of service C.
  • the configuration shown in Figure 3B requires three nodes 312a-c and has a total of 6 GB of unused memory.
  • the configuration shown in Figure 3C requires only two physical servers 312a-b and has no unused memory.
  • splitting a container that includes a plurality of services into a plurality of containers increases the granularity at which scale out can be performed, thereby making it possible to make more efficient use of system resources.
  • FIG. 3 A-C also illustrates another aspect of the present disclosure, which is the ability to split and rearrange a plurality of containers within a plurality of nodes to increase system efficiency.
  • a service optimizer engine that is managing this system may determine that the containers 318, 318' should be split and rearranged to achieve the configuration shown in Figure 3C, which only requires two nodes 312a-b. Splitting and rearranging the containers 318, 318' in this way would increase system efficiency by, for example, reducing the number of nodes that are required to deploy the container-based application.
  • the service optimizer engine may make the decision to split and rearrange the containers 318, 318' irrespective of the utilization levels of the containers 318, 318'. In other words, even if the utilization levels of the containers 318, 318' are within permitted levels, the service optimizer engine may nonetheless decide to split and rearrange the containers 318, 318' to achieve the increased efficiency that is made possible by the configuration shown in Figure 3C.
  • Figure 4 illustrates an example of a method 400 for efficiently scaling a container-based application in accordance with the present disclosure.
  • the method 400 will be described in relation to the examples that were discussed above in connection with Figures 2 and 3 A-C.
  • Step 402 of the method 400 involves providing a plurality of container images that include different combinations of a plurality of services provided by a container-based application. For instance, referring to the example shown in Figure 2, seven different container images 214a-g may be provided for a container-based application that provides three services. Those seven different container images 214a-g correspond to all possible combinations of those three services. In an alternative embodiment, container images may be provided for all possible combinations of the available services except for any combinations that are prohibited by defined rules 242.
  • the container-based application is deployed in a distributed computing system that includes a plurality of nodes.
  • the container-based application provides a plurality of services, and the plurality of services are deployed using at least one container.
  • the container-based application is initially deployed using three containers: a container 218 that includes service A and service B, a container 236 that includes service B, and a container 238 that includes service C.
  • the container 218 that includes service A and service B is deployed on a first node 212a.
  • the container 236 that includes service B and the container 238 that includes service C are deployed on a second node 212b.
  • Step 406 involves monitoring a utilization level associated with each of the containers that have been deployed. In other words, for each container, a determination may be made about the extent to which that container is consuming one or more computing resources (e.g., CPU, memory, I/O capacity, network bandwidth).
  • computing resources e.g., CPU, memory, I/O capacity, network bandwidth.
  • Step 408 involves detecting a trigger condition that is based at least in part on the utilization level.
  • step 410 involves modifying how many containers are deployed for the corresponding services in response to detecting the trigger condition.
  • the term“trigger condition” refers to an event or set of events that causes a modification to be made to the way in which containers are deployed in relation to a plurality of services.
  • One example of a trigger condition is when the utilization level associated with a particular container that includes a plurality of services exceeds a defined maximum value.
  • the container whose utilization level exceeds the defined maximum value could be split into a plurality of containers. For instance, referring to the example shown in Figures 2A-C, if the utilization level 226a of the container 218 that includes service A and service B exceeds a defined maximum level 244, then that container 218 could be split into a container 234 that includes service A and a container 236' that includes service B.
  • Another example of a trigger condition is when the utilization level associated with a plurality of separate containers falls below a defined minimum value.
  • the services in the containers whose utilization levels have fallen below the defined minimum value could be consolidated into a single container. For instance, referring to the example shown in Figures 2A-C, if the utilization level 226b of the container 236 that includes service B and the utilization level 226c of the container 238 that includes service C fall below a defined minimum level 246, then service B and service C could be consolidated into a single container 240.
  • Step 412 involves rearranging a plurality of containers within a plurality of nodes to increase efficiency by, for example, reducing how many nodes are required to deploy the plurality of containers. For example, suppose that a container-based application is initially deployed in a distributed computing system in the manner shown in Figure 3B, which requires three nodes 312a-c. In accordance with steps 410 and 412 of the method 400, a determination may be made that the containers 318, 318' should be split and rearranged to achieve the configuration shown in Figure 3C, which requires only two nodes 312a-b. In some embodiments, this determination may be made irrespective of the utilization levels of the containers 318, 318'.
  • FIG. 5 illustrates another example of a system 500 in which aspects of the present disclosure may be utilized.
  • a container-based application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes a plurality of nodes.
  • a plurality of container images 514a-g may be provided, corresponding to different combinations of the services that are provided by the application.
  • the system 500 includes a deployment pipeline 552, which is an automated set of processes that use tools to compile, test, and deploy code.
  • the plurality of container images 514a-g may be generated by the deployment pipeline 552.
  • the deployment pipeline 552 may utilize one or more scripts to generate the plurality of container images 514a-g.
  • a system administrator may want to deploy at least some of the container images 514a-g as actual containers.
  • the container image 514b that includes service A and service B may be deployed as a container 518 that includes service A and service B
  • the container image 514g that includes service C may be deployed as a container 538 that includes service C.
  • a service optimizer engine 524 may make one or more application programming interface (API) calls to a cluster management API 554.
  • API application programming interface
  • a container orchestrator 556 may be used to manage the deployment of the containers 518, 538.
  • the containers 518, 538 may be deployed into a dynamic service layer 558.
  • the application architecture framework that is represented in the system 500 shown in Figure 5 includes two layers. First, there is the dynamic service layer 558, which includes the deployed containers 518, 538. Second, there is an aggregation application layer 560, which communicates with the dynamic service layer 558 through a message broker 562. The aggregation application layer 560 interfaces with end users and provides an API/presentation layer for the container-based application. The API/presentation layer may be converted to the appropriate back end service calls to be made to particular services through the message broker 562.
  • the services may be exposed through a service catalog 564.
  • the database systems corresponding to the various services may be implemented outside of the application layer (as shown in Figure 1, for example) in order to facilitate a microservices architecture.
  • the system 500 may monitor the load that is being experienced by the containers 518, 538. For example, the system 500 may monitor the computing resources (e.g., CPU, memory, network bandwidth, I/O capacity) that are being utilized by the containers 518, 538.
  • the system 500 is shown with a performance counter aggregator 566 for providing this functionality.
  • the system 500 includes a rules configuration 568 that defines when the number of containers that are being utilized for the deployed services should be modified.
  • the services that are being provided in the depicted example are included in two containers 518, 538.
  • service A and service B are included in one container 518
  • service C is included in another container 538.
  • the rules configuration 568 defines the conditions that cause the number of containers in use to be changed. In other words, the rules configuration 568 defines when a different number of containers (other than two) should be utilized for these three services.
  • the rules configuration 568 may include rules that are similar to those that were discussed above in connection with the rules 242 shown in the system 200 of Figure 2.
  • the rules configuration 568 may include a rule specifying that when the utilization level associated with a container that includes a plurality of services exceeds a defined maximum value, the plurality of services should be split into a plurality of containers.
  • the rules configuration 568 may include a rule specifying that when the utilization level associated with a plurality of containers falls below a defined minimum value, the services that are included in the plurality of containers should be consolidated into a single container.
  • FIG. 6 illustrates a method 600 that may be performed by the performance counter aggregator 566 in the system 500 shown in Figure 5.
  • the performance counter aggregator 566 reads performance metrics related to currently deployed containers, such as the containers 518, 538 in the system 500 shown in Figure 5. These performance metrics may indicate the utilization level that is associated with the currently deployed containers.
  • the performance counter aggregator 566 may make one or more API calls to the cluster management API 554.
  • the performance counter aggregator 566 gets triggered from a scheduler 601, determines how often the performance metrics should be collected.
  • the scheduler 601 may be configurable (e.g., by a system administrator). Configurations (which are shown as aggregate configurations 605 in Figure 6) may be defined to control how often the performance metrics are read (e.g., which API calls are made).
  • step 604 the performance counter aggregator 566 aggregates the performance counters in accordance with the rules that are specified in the rules configuration 568.
  • the aggregate configurations 605 are shown as providing input to this step 604.
  • the results of step 604 e.g., the aggregated performance counters
  • the performance counter aggregator 566 determines whether the aggregated performance counters indicate that service optimization should be performed. As part of making this determination, the performance counter aggregator 566 may refer to rules that are specified in the rules configuration 568. If a determination is made that service optimization should be performed, then in step 610 the performance counter aggregator 566 calls the service optimizer engine 524.
  • FIG. 7 illustrates a method 700 that may be performed by the service optimizer engine 524 in the system 500 shown in Figure 5.
  • the service optimizer engine 524 reads the utilization of containers in run time.
  • a container may include a single service.
  • a plurality of services may be packaged together in a single container.
  • a container may include a group of services.
  • The“HIGH” utilization level refers to a maximum desired utilization level. If the utilization level of a particular container exceeds the“HIGH” utilization level, then the container should be split. Conversely, the“LOW” utilization level refers to a minimum desired utilization level. If the utilization level of a plurality of containers falls below the “LOW” utilization level, then those containers should be combined.
  • The“HIGH” utilization level corresponds to the maximum level 244 described above, while the“LOW” utilization level corresponds to the minimum level 246 described above.
  • Step 704 involves making a determination about whether any of the deployed containers has exceeded the“HIGH” utilization level or fallen below the“LOW” utilization level. If the utilization level of any of the deployed containers has exceeded the“HIGH” utilization level, then the method 700 proceeds to step 706. Conversely, if the utilization level of any of the deployed containers has fallen below the“LOW” utilization level, then the method 700 proceeds to step 710.
  • step 706 involves splitting that container into N containers, where N is greater than or equal to two.
  • the splitting may be performed so as to satisfy (at least) two conditions.
  • each container’s utilization level should be below the“LOW” utilization level.
  • the utilization levels for particular containers may be based on information contained in one or more databases (such as the databases 102, 104 shown in Figure 1). Such information may be used to understand the utilization patterns of various services and make decisions accordingly. The decision making process could also implement machine learning models as well to predict the right way to group or arrange the services into different containers.
  • splitting may be performed in other ways. For example, the splitting could be performed to achieve average utilization across containers, or to achieve the lowest utilization among all the containers.
  • step 708 the service optimizer engine 524 makes a list of deployment commands to execute to split the container(s). This list will be referred to as list“A” to distinguish it from another list that will be discussed below.
  • step 704 If in step 704 it is determined that the utilization level of one or more of the deployed containers has fallen below the“LOW” utilization level, then in step 710 the service optimizer engine 524 obtains a list 711 (e.g., a hash list) of the containers and the corresponding utilizations from the performance counter aggregator 566. This list 711 is shown as an input to step 710 in Figure 7. The service optimizer engine 524 also determines the utilization of each node of the distributed computing system (e.g., cluster).
  • a list 711 e.g., a hash list
  • Step 712 involves rearranging containers to find the optimal way to reduce the number of containers while keeping utilizations within acceptable levels (e.g., below “HIGH” and above“LOW”) and also minimizing the number of nodes in the distributed computing system that are being used to deploy the application.
  • the service optimizer engine 524 makes a list of deployment commands (list“B”) that should be executed to rearrange the containers.
  • step 716 the service optimizer engine 524 executes the appropriate list of commands (list“A” or list“B”).
  • step 718 involves making changes to the service catalog 564 to reflect service end points accordingly.
  • Figure 8 illustrates certain components that may be included within a computer system 800.
  • One or more computer systems 800 may be used to implement the various devices, components, and systems described herein.
  • the computer system 800 includes a processor 801.
  • the processor 801 may be a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc.
  • the processor 801 may be referred to as a central processing unit (CPU). Although just a single processor 801 is shown in the computer system 800 of Figure 8, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.
  • the computer system 800 also includes memory 803 in electronic communication with the processor 801.
  • the memory 803 may be any electronic component capable of storing electronic information.
  • the memory 803 may be embodied as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) memory, registers, and so forth, including combinations thereof.
  • Instructions 805 and data 807 may be stored in the memory 803.
  • the instructions 805 may be executable by the processor 801 to implement some or all of the steps, operations, actions, or other functionality disclosed herein. Executing the instructions 805 may involve the use of the data 807 that is stored in the memory 803. Any of the various examples of modules and components described herein may be implemented, partially or wholly, as instructions 805 stored in memory 803 and executed by the processor 801. Any of the various examples of data described herein may be among the data 807 that is stored in memory 803 and used during execution of the instructions 805 by the processor 801.
  • a computer system 800 may also include one or more communication interfaces 809 for communicating with other electronic devices.
  • the communication interface(s) 809 may be based on wired communication technology, wireless communication technology, or both.
  • Some examples of communication interfaces 809 include a Universal Serial Bus (USB), an Ethernet adapter, a wireless adapter that operates in accordance with an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless communication protocol, a Bluetooth ® wireless communication adapter, and an infrared (IR) communication port.
  • USB Universal Serial Bus
  • IEEE Institute of Electrical and Electronics Engineers
  • IR infrared
  • a computer system 800 may also include one or more input devices 811 and one or more output devices 813 Some examples of input devices 811 include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, and lightpen. Some examples of output devices 813 include a speaker and a printer.
  • One specific type of output device that is typically included in a computer system 800 is a display device 815 Display devices 815 used with embodiments disclosed herein may utilize any suitable image projection technology, such as liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like.
  • a display controller 817 may also be provided, for converting data 807 stored in the memory 803 into text, graphics, and/or moving images (as appropriate) shown on the display device 815.
  • the various components of the computer system 800 may be coupled together by one or more buses, which may include a power bus, a control signal bus, a status signal bus, a data bus, etc.
  • buses may include a power bus, a control signal bus, a status signal bus, a data bus, etc.
  • the various buses are illustrated in Figure 8 as a bus system 819.
  • the techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules, components, or the like may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by at least one processor, perform some or all of the steps, operations, actions, or other functionality disclosed herein.
  • the instructions may be organized into routines, programs, objects, components, data structures, etc., which may perform particular tasks and/or implement particular data types, and which may be combined or distributed as desired in various embodiments.
  • determining encompasses a wide variety of actions and, therefore, “determining” can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also,“determining” can include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” can include resolving, selecting, choosing, establishing and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A method for efficiently scaling a container-based application that provides a plurality of services includes deploying the container-based application in a distributed computing system. The plurality of services may be deployed using at least one container. The method may additionally include monitoring a utilization level associated with the at least one container. In response to detecting a trigger condition that is based at least in part on the utilization level, the method may additionally include modifying how many containers are deployed for the plurality of services.

Description

EFFICIENT SCALING OF A CONTAINER-BASED APPLICATION IN A
DISTRIBUTED COMPUTING SYSTEM
BACKGROUND
[0001] A distributed computing system is a type of computing system whose components are located on multiple computing devices. For example, a distributed computing system may include a plurality of distinct processing, memory, storage, and communication components that are connected by one or more communication networks. The various components of a distributed computing system may communicate with one another in order to coordinate their actions.
[0002] Cloud computing systems are built using principles of distributed systems. Cloud computing is the delivery of computing services (e.g., servers, storage, databases, networking, software, analytics) over the Internet.
[0003] Containerization is an approach to software development in which an application and everything that it needs, such as libraries and other dependencies, are packaged together as a standard unit that is referred to as a container image. When a container image is deployed, it is referred to as a container. The use of containers allows applications to run properly in a variety of different computing environments, regardless of any customized settings that a particular computing environment might have that could differ from the computing environment used for writing and testing the application. Containers also isolate applications from one another on a shared operating system (OS). Containers provide most of the isolation of virtual machines at a small fraction of the computing power. Containers are often used in distributed computing systems, including cloud computing systems.
[0004] The increasing popularity of containers has led to new application architectures. A microservice architecture is an architectural style that structures an application as a collection of services that are independently deployable. In this context, the term“service” refers to at least one function or operation that is performed by an application. A service may be associated with a particular network address (e.g., a uniform resource locator (URL) for Internet services). With a microservice architecture, clients may use all or only some of the services provided by an application. Also, different clients may use the same service for different purposes.
[0005] In an application that includes a plurality of independently deployable services, the services may be packaged into separate containers. An application that is architected in this way may be referred to herein as a container-based application. Container-based applications may be deployed in distributed computing systems, such as cloud computing systems. A container orchestrator is a tool that facilitates the deployment, management, scaling, networking, and availability of container-based applications in distributed computing systems.
[0006] As the load experienced by a container changes over time, system administrators may adjust the amount of resources that are allocated to the container. This is often referred to as scaling. Scaling up involves allocating additional resources (e.g., processors, memory) to a container. Scaling out involves provisioning additional containers.
SUMMARY
[0007] The present disclosure is generally related to the deployment of container-based applications in a distributed computing system. As indicated above, scaling up and scaling out are two possible approaches for adjusting the amount of resources that are allocated to a container. The present disclosure provides a new dimension of scaling by dynamically modifying how many services are included in deployed containers. For example, a single container that includes a plurality of services may be split into a plurality of containers. Alternatively, a plurality of services that are deployed in separate containers may be combined into a single container.
[0008] One aspect of the present disclosure is directed to a method for efficiently scaling a container-based application that provides a plurality of services. In accordance with the method, the container-based application may be deployed in a distributed computing system. The plurality of services may be deployed using at least one container. The method may additionally include monitoring a utilization level associated with the at least one container. In response to detecting a trigger condition that is based at least in part on the utilization level, the method may additionally include modifying how many containers are deployed for the plurality of services.
[0009] For example, detecting the trigger condition may include determining that the utilization level associated with a container that comprises a plurality of services exceeds a defined maximum value. In response to detecting this type of trigger condition, the container may be split into a plurality of containers.
[0010] As another example, if the plurality of services are implemented using a plurality of separate containers, detecting the trigger condition may include determining that the utilization level associated with the plurality of separate containers falls below a defined minimum value. In response to detecting this type of trigger condition, the plurality of services may be consolidated into a single container. [0011] In some embodiments, the method may additionally include rearranging a plurality of containers within a plurality of nodes to improve system efficiency. For example, the plurality of containers may be rearranged to reduce how many nodes are required to deploy the plurality of containers.
BRIEF DESCRIPTION OF THE DRAWINGS
[0012] Figure 1 illustrates an example of a scaling technique in accordance with the present disclosure.
[0013] Figure 2 illustrates an example of a system in which aspects of the present disclosure may be utilized, including a service optimizer engine that manages the deployment of a plurality of containers on a plurality of nodes.
[0014] Figures 3A-C illustrate an example showing how the ability to modify the number of containers that are deployed for particular services enables the nodes within a distributed computing system to be used more efficiently.
[0015] Figure 4 illustrates an example of a method for efficiently scaling a container- based application in accordance with the present disclosure.
[0016] Figure 5 illustrates another example of a system in which aspects of the present disclosure may be utilized, including a performance counter aggregator and a service optimizer engine that interact with a dynamic service layer via one or more cluster management application programming interfaces (APIs).
[0017] Figure 6 illustrates an example of a method that may be performed by the performance counter aggregator in the system shown in Figure 5.
[0018] Figure 7 illustrates an example of a method that may be performed by the service optimizer engine in the system shown in Figure 5.
[0019] Figure 8 illustrates certain components that may be included within a computer system that may be used to implement the various devices, components, and systems described herein.
DETAILED DESCRIPTION
[0020] As indicated above, the present disclosure is generally related to techniques for scaling the amount of resources that are allocated to container-based applications by dynamically modifying how many services are included in deployed containers. A simple example will be discussed in connection with Figure 1. In this example, it will be assumed that an application includes two services, which will be referred to as service A and service B.
[0021] At the database layer, separate databases 102, 104 may be maintained for service A and service B. At the application layer, however, there are two different ways that service A and service B could be deployed. With one possible approach, both service A and service B could be packaged together in a single container 106. With another possible approach, service A could be packaged in one container 108, and service B could be packaged in another container 110. The present disclosure proposes dynamically shifting between these two possible approaches based on the utilization level of the contained s) in the current deployment. In this context, the“utilization level” associated with a container refers to the extent to which the container is consuming one or more computing resources, such as a central processing unit (CPU), memory, input/output (I/O) capacity, network bandwidth, and so forth (including combinations thereof).
[0022] Suppose that service A and service B are initially deployed in a single container 106. Further suppose that the utilization level associated with that container 106 exceeds a defined maximum value. Under these circumstances, it may be beneficial to split the container 106 into two separate containers 108, 110.
[0023] Conversely, suppose that service A and service B are initially deployed in separate containers 108, 110. Further suppose that the utilization level associated with these containers 108, 110 falls below a minimum threshold value. Under these circumstances, it may be beneficial to combine the two separate containers 108, 110 into a single container 106.
[0024] Figure 2 illustrates an example of a system 200 in which aspects of the present disclosure may be utilized. In this example, it will be assumed that an application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes two nodes (a first node 212a and a second node 212b). These nodes 212a-b may represent distinct physical computing devices that are part of the distributed computing system.
[0025] In accordance with the present disclosure, a plurality of container images 214a- g may be provided. These container images 214a-g include different combinations of the services that are provided by the application. In the example shown in Figures 2A-B, there are seven different ways that the three services (service A, service B, and service C) may be combined. A separate container image may be created for each possible combination. More specifically, a container image 214a may be created that includes service A, service B, and service C. Another container image 214b may be created that includes service A and service B. Another container image 214c may be created that includes service B and service C. Another container image 214d may be created that includes service A and service C. Another container image 214e may be created that includes service A. Another container image 214f may be created that includes service B. Another container image 214g may be created that includes service C. The plurality of container images 214a-g may be stored in a container registry 216.
[0026] The system 200 includes a service optimizer engine 224, which is responsible for managing the deployment of containers on the nodes 212a-b. For purposes of the present example, suppose that a container 218 including service A and service B is initially deployed on the first node 212a. Further suppose that a container 236 including service B and another container 238 including service C are initially deployed on the second node 212b.
[0027] The service optimizer engine 224 monitors the utilization levels 226 associated with the containers 218, 236, 238 that have been deployed. More specifically, in the depicted example, the service optimizer engine 224 monitors the utilization level 226a associated with the container 218 that includes service A and service B, the utilization level 226b associated with the container 236 that includes service B, and the utilization level 226c associated with the container 238 that includes service C.
[0028] As indicated above, the utilization level 226 corresponding to a particular container indicates the extent to which the container is consuming one or more computing resources (e.g., CPU utilization, memory utilization, I/O capacity, network bandwidth). In some embodiments, the utilization level 226 corresponding to a particular container may be expressed in terms of a single metric that represents the extent to which the container is consuming a single computing resource (e.g., a percentage of CPU utilization). Alternatively, the utilization level 226 corresponding to a particular container may be expressed in terms of a plurality of metrics that represent the extent to which the container is consuming a plurality of computing resources (e.g., a percentage of CPU utilization and a percentage of memory utilization). Alternatively still, the utilization level 226 corresponding to a particular container may be expressed in terms of a single metric that is determined by combining a plurality of metrics that represent the extent to which the container is consuming a plurality of computing resources.
[0029] Certain rules 242 may define when modifications should be made with respect to the deployment of containers. These rules 242 may define, among other things, a maximum level 244 and a minimum level 246 for the utilization level 226 associated with a particular container.
[0030] Suppose, for example, that the utilization level 226a associated with the container 218 that includes service A and service B increases above the defined maximum level 244. In response, the service optimizer engine 224 may split the container 218 that includes service A and service B into two containers: a container 234 that includes service A and another container 236' that includes service B. To achieve this splitting, the service optimizer engine 224 may remove the container 218 that includes service A and service B from the first node 212a. In addition, the service optimizer engine 224 may access the container registry 216 to locate the container image 214e that includes service A and the container image 214f that includes service B. The service optimizer engine 224 may then deploy the container image 214e that includes service A as a container 234 that includes service A. Similarly, the service optimizer engine 224 may deploy the container image 214f that includes service B as a container 236' that includes service B. When deploying these containers 234, 236', existing techniques such as a rolling update may be used to ensure that the services that are involved (service A and service B in this example) are not disrupted.
[0031] As another example, suppose that the utilization level 226b associated with the container 236 that includes service B and the utilization level 226c associated with the container 238 that includes service C decrease below the defined minimum level 246. In response, the service optimizer engine 224 may consolidate service B and service C into a single container 240. To achieve this consolidation, the service optimizer engine 224 may remove the container 236 that includes service B and the container 238 that includes service C from the second node 212b. In addition, the service optimizer engine 224 may access the container registry 216 to locate the container image 214c that includes service B and service C. The service optimizer engine 224 may then deploy the container image 214c that includes service B and service C as a container 240 that includes service B and service C.
[0032] In addition to defining a maximum level 244 and a minimum level 246, the rules 242 may specify other constraints on the way in which services may be combined. In some embodiments, the rules 242 may specify one or more prohibited combinations 248. For example, suppose there is a rule 242 that identifies the combination of service A, service B, and service C as a prohibited combination 248. In response to that type of rule 242, the service optimizer engine 224 may eliminate from consideration the container image 214a that includes the prohibited combination of services.
[0033] In some embodiments, only container images that correspond to permitted combinations of services are created. For example, if there is a rule 242 that identifies the combination of service A, service B, and service C as a prohibited combination 248, then in some embodiments the container image 214a that includes that combination of services would not be created. [0034] The ability to modify how many containers are deployed for particular services enables the nodes within a distributed computing system to be used more efficiently. An example will be discussed in connection with Figures 3A-C. In this example, it will again be assumed that an application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes two nodes (a first node 312a and a second node 312b). For purposes of the present example, it will be assumed that both the first node 312a and the second node 312b have 6 GB of available memory. In other words, for purposes of the present example, it will be assumed that there is 6 GB of memory in both of these nodes 312a-b that can be allocated to software processes without causing performance issues.
[0035] Referring initially to Figure 3 A, suppose that a container 318 including service A and service B is deployed on the first node 312a, and that a container 338 including service C is initially deployed on the second node 312b. Further suppose that both of these containers 318, 338 require 4 GB of memory.
[0036] At some point, suppose that the utilization level associated with the container 318 including service A and service B exceeds a defined maximum value, such that some type of scaling should be performed in order to prevent performance degradation. As indicated above, one known approach to scaling involves scaling out, i.e., provisioning additional containers. Because the container 318 including service A and service B requires 4 GB of memory, to provision an additional instance of this container 318 would require an additional 4 GB of memory. There are, however, only 2 GB available on the first node 312a, because the container 318 including service A and service B is using 4 GB of the 6 GB that are available on the first node 312a. Similarly, there are only 2 GB available on the second node 312b, because the container 338 including service C is using 4 GB of the 6 GB that are available on the second node 312b. Therefore, in order to scale out in accordance with known techniques (i.e., by provisioning an additional instance of the container 318) it would be necessary to add an additional node to the system.
[0037] Figure 3B shows a third node 312c added to the system. The third node 312c includes an additional container 318' including service A and service B. Scaling out in this way, however, increases the cost of the system, because an additional node 312c must be added. This kind of an approach to scaling out also results in wasted space, as 2 GB of available memory remains unused in each of the nodes 312a-c.
[0038] Reference is now made to Figure 3C, which illustrates how the ability to modify the number of containers that are deployed for a set of services enables scaling out to be performed more efficiently. In this example, the container 318 including both service A and service B has been replaced with a plurality of containers, namely, a container 334 including only service A and another container 336 including only service B. It will be assumed that both of these containers 334, 336 require 2 GB of memory (which is a reasonable assumption because it was assumed that the container 318 including both service A and service B requires 4 GB of memory).
[0039] Splitting the container 318 including both service A and service B into two containers 334, 336 enables scale out to be performed more efficiently. For example, an additional container 334' including service A can be added to the first node 312a. This is possible because the container 334' only requires 2 GB of memory and the first node 312a has that much memory available. Similarly, an additional container 336' including service B can be added to the second node 312b. Again, this is possible because the container 336' only requires 2 GB of memory and the second node 312b has that much memory available.
[0040] By comparing Figures 3B and 3C, some potential benefits of the techniques disclosed herein can be appreciated. The configuration shown in Figure 3B and the configuration shown in Figure 3C both include the same number of services. In particular, both configurations include two instances of service A, two instances of service B, and one instance of service C. The configuration shown in Figure 3B, however, requires three nodes 312a-c and has a total of 6 GB of unused memory. In contrast, the configuration shown in Figure 3C requires only two physical servers 312a-b and has no unused memory. In essence, splitting a container that includes a plurality of services into a plurality of containers (as in the configuration shown in Figure 3C) increases the granularity at which scale out can be performed, thereby making it possible to make more efficient use of system resources.
[0041] The example shown in Figures 3 A-C also illustrates another aspect of the present disclosure, which is the ability to split and rearrange a plurality of containers within a plurality of nodes to increase system efficiency. For example, suppose that a container-based application is initially deployed in a distributed computing system in the manner shown in Figure 3B, with three nodes 312a-c. A service optimizer engine that is managing this system may determine that the containers 318, 318' should be split and rearranged to achieve the configuration shown in Figure 3C, which only requires two nodes 312a-b. Splitting and rearranging the containers 318, 318' in this way would increase system efficiency by, for example, reducing the number of nodes that are required to deploy the container-based application.
[0042] In some embodiments, the service optimizer engine may make the decision to split and rearrange the containers 318, 318' irrespective of the utilization levels of the containers 318, 318'. In other words, even if the utilization levels of the containers 318, 318' are within permitted levels, the service optimizer engine may nonetheless decide to split and rearrange the containers 318, 318' to achieve the increased efficiency that is made possible by the configuration shown in Figure 3C.
[0043] Figure 4 illustrates an example of a method 400 for efficiently scaling a container-based application in accordance with the present disclosure. For the sake of clarity, the method 400 will be described in relation to the examples that were discussed above in connection with Figures 2 and 3 A-C.
[0044] Step 402 of the method 400 involves providing a plurality of container images that include different combinations of a plurality of services provided by a container-based application. For instance, referring to the example shown in Figure 2, seven different container images 214a-g may be provided for a container-based application that provides three services. Those seven different container images 214a-g correspond to all possible combinations of those three services. In an alternative embodiment, container images may be provided for all possible combinations of the available services except for any combinations that are prohibited by defined rules 242.
[0045] In step 404 of the method 400, the container-based application is deployed in a distributed computing system that includes a plurality of nodes. The container-based application provides a plurality of services, and the plurality of services are deployed using at least one container. For instance, referring to the example shown in Figure 2, the container-based application is initially deployed using three containers: a container 218 that includes service A and service B, a container 236 that includes service B, and a container 238 that includes service C. The container 218 that includes service A and service B is deployed on a first node 212a. The container 236 that includes service B and the container 238 that includes service C are deployed on a second node 212b.
[0046] Step 406 involves monitoring a utilization level associated with each of the containers that have been deployed. In other words, for each container, a determination may be made about the extent to which that container is consuming one or more computing resources (e.g., CPU, memory, I/O capacity, network bandwidth).
[0047] Step 408 involves detecting a trigger condition that is based at least in part on the utilization level. Once a trigger condition has been detected, step 410 involves modifying how many containers are deployed for the corresponding services in response to detecting the trigger condition. In this context, the term“trigger condition” refers to an event or set of events that causes a modification to be made to the way in which containers are deployed in relation to a plurality of services. There may be a set of rules 242 that define one or more trigger conditions.
[0048] One example of a trigger condition is when the utilization level associated with a particular container that includes a plurality of services exceeds a defined maximum value. In response to detecting this type of trigger condition, the container whose utilization level exceeds the defined maximum value could be split into a plurality of containers. For instance, referring to the example shown in Figures 2A-C, if the utilization level 226a of the container 218 that includes service A and service B exceeds a defined maximum level 244, then that container 218 could be split into a container 234 that includes service A and a container 236' that includes service B.
[0049] Another example of a trigger condition is when the utilization level associated with a plurality of separate containers falls below a defined minimum value. In response to detecting this type of trigger condition, the services in the containers whose utilization levels have fallen below the defined minimum value could be consolidated into a single container. For instance, referring to the example shown in Figures 2A-C, if the utilization level 226b of the container 236 that includes service B and the utilization level 226c of the container 238 that includes service C fall below a defined minimum level 246, then service B and service C could be consolidated into a single container 240.
[0050] Step 412 involves rearranging a plurality of containers within a plurality of nodes to increase efficiency by, for example, reducing how many nodes are required to deploy the plurality of containers. For example, suppose that a container-based application is initially deployed in a distributed computing system in the manner shown in Figure 3B, which requires three nodes 312a-c. In accordance with steps 410 and 412 of the method 400, a determination may be made that the containers 318, 318' should be split and rearranged to achieve the configuration shown in Figure 3C, which requires only two nodes 312a-b. In some embodiments, this determination may be made irrespective of the utilization levels of the containers 318, 318'.
[0051] Figure 5 illustrates another example of a system 500 in which aspects of the present disclosure may be utilized. As before, it will be assumed that a container-based application that includes three services (service A, service B, and service C) is deployed in a distributed computing system that includes a plurality of nodes. A plurality of container images 514a-g may be provided, corresponding to different combinations of the services that are provided by the application. [0052] The system 500 includes a deployment pipeline 552, which is an automated set of processes that use tools to compile, test, and deploy code. The plurality of container images 514a-g may be generated by the deployment pipeline 552. For example, the deployment pipeline 552 may utilize one or more scripts to generate the plurality of container images 514a-g.
[0053] A system administrator (or other user of the system 500) may want to deploy at least some of the container images 514a-g as actual containers. For example, as shown in Figure 5, the container image 514b that includes service A and service B may be deployed as a container 518 that includes service A and service B, and the container image 514g that includes service C may be deployed as a container 538 that includes service C. To facilitate deployment of these containers 518, 538, a service optimizer engine 524 may make one or more application programming interface (API) calls to a cluster management API 554. In addition, a container orchestrator 556 may be used to manage the deployment of the containers 518, 538. The containers 518, 538 may be deployed into a dynamic service layer 558.
[0054] Broadly speaking, the application architecture framework that is represented in the system 500 shown in Figure 5 includes two layers. First, there is the dynamic service layer 558, which includes the deployed containers 518, 538. Second, there is an aggregation application layer 560, which communicates with the dynamic service layer 558 through a message broker 562. The aggregation application layer 560 interfaces with end users and provides an API/presentation layer for the container-based application. The API/presentation layer may be converted to the appropriate back end service calls to be made to particular services through the message broker 562.
[0055] The services may be exposed through a service catalog 564. The database systems corresponding to the various services may be implemented outside of the application layer (as shown in Figure 1, for example) in order to facilitate a microservices architecture.
[0056] Once certain containers (e.g., the container 518 corresponding to the container image 514b that includes service A and service B, and the container 538 corresponding to the container image 514g that includes service C) have been deployed, the system 500 may monitor the load that is being experienced by the containers 518, 538. For example, the system 500 may monitor the computing resources (e.g., CPU, memory, network bandwidth, I/O capacity) that are being utilized by the containers 518, 538. The system 500 is shown with a performance counter aggregator 566 for providing this functionality. [0057] The system 500 includes a rules configuration 568 that defines when the number of containers that are being utilized for the deployed services should be modified. The services that are being provided in the depicted example (service A, service B, and service C) are included in two containers 518, 538. In particular, service A and service B are included in one container 518, and service C is included in another container 538. The rules configuration 568 defines the conditions that cause the number of containers in use to be changed. In other words, the rules configuration 568 defines when a different number of containers (other than two) should be utilized for these three services.
[0058] The rules configuration 568 may include rules that are similar to those that were discussed above in connection with the rules 242 shown in the system 200 of Figure 2. For example, as discussed above, the rules configuration 568 may include a rule specifying that when the utilization level associated with a container that includes a plurality of services exceeds a defined maximum value, the plurality of services should be split into a plurality of containers. Alternatively, the rules configuration 568 may include a rule specifying that when the utilization level associated with a plurality of containers falls below a defined minimum value, the services that are included in the plurality of containers should be consolidated into a single container.
[0059] Figure 6 illustrates a method 600 that may be performed by the performance counter aggregator 566 in the system 500 shown in Figure 5. In step 602 of the method 600, the performance counter aggregator 566 reads performance metrics related to currently deployed containers, such as the containers 518, 538 in the system 500 shown in Figure 5. These performance metrics may indicate the utilization level that is associated with the currently deployed containers. To read these performance metrics, the performance counter aggregator 566 may make one or more API calls to the cluster management API 554. The performance counter aggregator 566 gets triggered from a scheduler 601, determines how often the performance metrics should be collected. The scheduler 601 may be configurable (e.g., by a system administrator). Configurations (which are shown as aggregate configurations 605 in Figure 6) may be defined to control how often the performance metrics are read (e.g., which API calls are made).
[0060] In step 604, the performance counter aggregator 566 aggregates the performance counters in accordance with the rules that are specified in the rules configuration 568. The aggregate configurations 605 are shown as providing input to this step 604. The results of step 604 (e.g., the aggregated performance counters) may be saved in a data store 606, which is labeled in Figure 6 as a performance consolidation store 606. [0061] In step 608, the performance counter aggregator 566 determines whether the aggregated performance counters indicate that service optimization should be performed. As part of making this determination, the performance counter aggregator 566 may refer to rules that are specified in the rules configuration 568. If a determination is made that service optimization should be performed, then in step 610 the performance counter aggregator 566 calls the service optimizer engine 524.
[0062] Figure 7 illustrates a method 700 that may be performed by the service optimizer engine 524 in the system 500 shown in Figure 5. In step 702 of the method 700, the service optimizer engine 524 reads the utilization of containers in run time. As discussed above, a container may include a single service. Alternatively, a plurality of services may be packaged together in a single container. In other words, a container may include a group of services.
[0063] In the method 700 shown in Figure 7, it will be assumed that there are (at least) two pre-defmed utilization levels:“HIGH” and“LOW.” These utilization levels may be configured by a system administrator. The“HIGH” utilization level refers to a maximum desired utilization level. If the utilization level of a particular container exceeds the“HIGH” utilization level, then the container should be split. Conversely, the“LOW” utilization level refers to a minimum desired utilization level. If the utilization level of a plurality of containers falls below the “LOW” utilization level, then those containers should be combined. The“HIGH” utilization level corresponds to the maximum level 244 described above, while the“LOW” utilization level corresponds to the minimum level 246 described above.
[0064] Step 704 involves making a determination about whether any of the deployed containers has exceeded the“HIGH” utilization level or fallen below the“LOW” utilization level. If the utilization level of any of the deployed containers has exceeded the“HIGH” utilization level, then the method 700 proceeds to step 706. Conversely, if the utilization level of any of the deployed containers has fallen below the“LOW” utilization level, then the method 700 proceeds to step 710.
[0065] For each container whose utilization level has exceeded the“HIGH” utilization level, step 706 involves splitting that container into N containers, where N is greater than or equal to two. In some embodiments, the splitting may be performed so as to satisfy (at least) two conditions. First, each container’s utilization level should be below the“LOW” utilization level. Second, the minimum number of containers that is required to satisfy the first condition should be used. In other words, the minimum value of N may be selected for which all N containers have utilization levels that are below the“LOW” utilization level.
[0066] The utilization levels for particular containers may be based on information contained in one or more databases (such as the databases 102, 104 shown in Figure 1). Such information may be used to understand the utilization patterns of various services and make decisions accordingly. The decision making process could also implement machine learning models as well to predict the right way to group or arrange the services into different containers.
[0067] One reason for performing the splitting in such a way that all N containers have utilization levels that are below the“LOW” utilization level is to ensure that these containers will eventually be merged into other containers, thereby resulting in a more efficient resource allocation. One potential problem with this approach is that there could be a“ping- pong” effect, where containers are repeatedly split and merged. However, such a problem could be addressed by defining rules that have the effect of discontinuing the splitting and merging operations when a“ping-pong” effect is detected.
[0068] In alternative embodiments, instead of splitting a container so that each of the resulting containers have a utilization level that is below the“LOW” utilization level, the splitting may be performed in other ways. For example, the splitting could be performed to achieve average utilization across containers, or to achieve the lowest utilization among all the containers.
[0069] In step 708, the service optimizer engine 524 makes a list of deployment commands to execute to split the container(s). This list will be referred to as list“A” to distinguish it from another list that will be discussed below.
[0070] If in step 704 it is determined that the utilization level of one or more of the deployed containers has fallen below the“LOW” utilization level, then in step 710 the service optimizer engine 524 obtains a list 711 (e.g., a hash list) of the containers and the corresponding utilizations from the performance counter aggregator 566. This list 711 is shown as an input to step 710 in Figure 7. The service optimizer engine 524 also determines the utilization of each node of the distributed computing system (e.g., cluster).
[0071] Step 712 involves rearranging containers to find the optimal way to reduce the number of containers while keeping utilizations within acceptable levels (e.g., below “HIGH” and above“LOW”) and also minimizing the number of nodes in the distributed computing system that are being used to deploy the application. In step 714, the service optimizer engine 524 makes a list of deployment commands (list“B”) that should be executed to rearrange the containers. [0072] In step 716, the service optimizer engine 524 executes the appropriate list of commands (list“A” or list“B”). After successful deployment, step 718 involves making changes to the service catalog 564 to reflect service end points accordingly.
[0073] Figure 8 illustrates certain components that may be included within a computer system 800. One or more computer systems 800 may be used to implement the various devices, components, and systems described herein.
[0074] The computer system 800 includes a processor 801. The processor 801 may be a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, etc. The processor 801 may be referred to as a central processing unit (CPU). Although just a single processor 801 is shown in the computer system 800 of Figure 8, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.
[0075] The computer system 800 also includes memory 803 in electronic communication with the processor 801. The memory 803 may be any electronic component capable of storing electronic information. For example, the memory 803 may be embodied as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with the processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) memory, registers, and so forth, including combinations thereof.
[0076] Instructions 805 and data 807 may be stored in the memory 803. The instructions 805 may be executable by the processor 801 to implement some or all of the steps, operations, actions, or other functionality disclosed herein. Executing the instructions 805 may involve the use of the data 807 that is stored in the memory 803. Any of the various examples of modules and components described herein may be implemented, partially or wholly, as instructions 805 stored in memory 803 and executed by the processor 801. Any of the various examples of data described herein may be among the data 807 that is stored in memory 803 and used during execution of the instructions 805 by the processor 801.
[0077] A computer system 800 may also include one or more communication interfaces 809 for communicating with other electronic devices. The communication interface(s) 809 may be based on wired communication technology, wireless communication technology, or both. Some examples of communication interfaces 809 include a Universal Serial Bus (USB), an Ethernet adapter, a wireless adapter that operates in accordance with an Institute of Electrical and Electronics Engineers (IEEE) 802.11 wireless communication protocol, a Bluetooth® wireless communication adapter, and an infrared (IR) communication port.
[0078] A computer system 800 may also include one or more input devices 811 and one or more output devices 813 Some examples of input devices 811 include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, and lightpen. Some examples of output devices 813 include a speaker and a printer. One specific type of output device that is typically included in a computer system 800 is a display device 815 Display devices 815 used with embodiments disclosed herein may utilize any suitable image projection technology, such as liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like. A display controller 817 may also be provided, for converting data 807 stored in the memory 803 into text, graphics, and/or moving images (as appropriate) shown on the display device 815.
[0079] The various components of the computer system 800 may be coupled together by one or more buses, which may include a power bus, a control signal bus, a status signal bus, a data bus, etc. For the sake of clarity, the various buses are illustrated in Figure 8 as a bus system 819.
[0080] The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules, components, or the like may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by at least one processor, perform some or all of the steps, operations, actions, or other functionality disclosed herein. The instructions may be organized into routines, programs, objects, components, data structures, etc., which may perform particular tasks and/or implement particular data types, and which may be combined or distributed as desired in various embodiments.
[0081] The steps, operations, and/or actions of the methods described herein may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps, operations, and/or actions is required for proper functioning of the method that is being described, the order and/or use of specific steps, operations, and/or actions may be modified without departing from the scope of the claims.
[0082] The term“determining” (and grammatical variants thereof) encompasses a wide variety of actions and, therefore, “determining” can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also,“determining” can include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” can include resolving, selecting, choosing, establishing and the like.
[0083] The terms“comprising,”“including,” and“having” are intended to be inclusive and mean that there may be additional elements other than the listed elements. Additionally, it should be understood that references to“one embodiment” or“an embodiment” of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features. For example, any element or feature described in relation to an embodiment herein may be combinable with any element or feature of any other embodiment described herein, where compatible.
[0084] The present disclosure may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered as illustrative and not restrictive. The scope of the disclosure is, therefore, indicated by the appended claims rather than by the foregoing description. Changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims

1. A method for efficiently scaling a container-based application, comprising:
deploying the container-based application in a distributed computing system, wherein the container-based application provides a plurality of services, and wherein the plurality of services are deployed using at least one container;
monitoring a utilization level associated with the at least one container;
detecting a trigger condition that is based at least in part on the utilization level; and
modifying how many containers are deployed for the plurality of services in response to detecting the trigger condition.
2. The method of claim 1, wherein:
detecting the trigger condition comprises determining that the utilization level associated with a container that comprises a plurality of services exceeds a defined maximum value; and
modifying how many containers are deployed comprises splitting the container into a plurality of containers.
3. The method of claim 1, wherein:
the plurality of services are implemented using a plurality of separate containers; detecting the trigger condition comprises determining that the utilization level associated with the plurality of separate containers falls below a defined minimum value; and
modifying how many containers are deployed comprises consolidating the plurality of services into a single container.
4. The method of claim 1, wherein:
modifying how many containers are deployed comprises splitting a container into a plurality of containers; and
the method further comprises rearranging the plurality of containers within a plurality of nodes to reduce how many nodes are required to deploy the plurality of containers.
5. The method of claim 1, further comprising providing rules that define when modifications should be made with respect to deployment of containers.
6. The method of claim 5, wherein the rules define:
a maximum value for the utilization level; and
a minimum value for the utilization level.
7. The method of claim 5, wherein the rules prohibit at least one combination of services from being packaged in the same container.
8. The method of claim 1, further comprising providing a plurality of container images that comprise different combinations of the plurality of services provided by the container-based application.
9. The method of claim 8, wherein the plurality of container images comprise all possible combinations of the plurality of services.
10. The method of claim 8, wherein the plurality of container images comprise all possible combinations of the plurality of services except for any combinations that are prohibited by defined rules.
11. A system for efficiently scaling a container-based application, comprising:
one or more processors; and
memory comprising instructions that are executable by the one or more processors to:
deploy the container-based application in a distributed computing system, wherein the container-based application provides a plurality of services, and wherein the plurality of services are deployed using at least one container;
monitor a utilization level associated with the at least one container;
detect a trigger condition that is based at least in part on the utilization level; and
modify how many containers are deployed for the plurality of services in response to detecting the trigger condition.
12. The system of claim 11, wherein:
detecting the trigger condition comprises determining that the utilization level associated with a container that comprises a plurality of services exceeds a defined maximum value; and
modifying how many containers are deployed comprises splitting the container into a plurality of containers.
13. The system of claim 11, wherein:
the plurality of services are implemented using a plurality of separate containers; detecting the trigger condition comprises determining that the utilization level associated with the plurality of separate containers falls below a defined minimum value; and
modifying how many containers are deployed comprises consolidating the plurality of services into a single container.
14. The system of claim 11, wherein:
modifying how many containers are deployed comprises splitting a container into a plurality of containers; and
the instructions are additionally executable by the one or more processors to rearrange the plurality of containers within a plurality of nodes to reduce how many nodes are required to deploy the plurality of containers.
15. The system of claim 11, wherein the instructions are additionally executable by the one or more processors to provide rules that define when modifications should be made with respect to deployment of containers.
PCT/US2020/015505 2019-02-07 2020-01-29 Efficient scaling of a container-based application in a distributed computing system Ceased WO2020163120A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/270,136 US11726758B2 (en) 2019-02-07 2019-02-07 Efficient scaling of a container-based application in a distributed computing system
US16/270,136 2019-02-07

Publications (1)

Publication Number Publication Date
WO2020163120A1 true WO2020163120A1 (en) 2020-08-13

Family

ID=69724165

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/015505 Ceased WO2020163120A1 (en) 2019-02-07 2020-01-29 Efficient scaling of a container-based application in a distributed computing system

Country Status (2)

Country Link
US (1) US11726758B2 (en)
WO (1) WO2020163120A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797350B2 (en) * 2020-02-25 2023-10-24 Cisco Technology, Inc. Method and apparatus for providing data center functions for support of an electric vehicle based data center
US11704123B2 (en) * 2020-11-24 2023-07-18 International Business Machines Corporation Automated orchestration of containers by assessing microservices
US11665106B2 (en) 2021-09-07 2023-05-30 Hewlett Packard Enterprise Development Lp Network-aware resource allocation
US20240118989A1 (en) * 2022-10-06 2024-04-11 CloudNatix, Inc. Proactively perform placement operations to provide resizing recommendations for worker nodes
US12580909B2 (en) 2023-03-02 2026-03-17 Commvault Systems, Inc. Deploying microservices for data storage management
CN116414539A (en) * 2023-03-27 2023-07-11 上海游昆信息技术有限公司 Application system management method, device, equipment, storage medium and product
US20250036475A1 (en) * 2023-07-26 2025-01-30 Dell Products L.P. Granular management of pods and containers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3109758A1 (en) * 2015-06-25 2016-12-28 Alcatel Lucent Method and apparatus for scaling an application
US20180136931A1 (en) * 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US20180316751A1 (en) * 2017-04-27 2018-11-01 Microsoft Technology Licensing, Llc Anti-flapping system for autoscaling resources in cloud networks

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922685B2 (en) * 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
WO2015197564A1 (en) * 2014-06-23 2015-12-30 Getclouder Ltd. Cloud hosting systems featuring scaling and load balancing with containers
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US10833940B2 (en) * 2015-03-09 2020-11-10 Vapor IO Inc. Autonomous distributed workload and infrastructure scheduling
US10142204B2 (en) * 2015-07-27 2018-11-27 Datagrid Systems, Inc. Techniques for evaluating server system reliability, vulnerability and component compatibility using crowdsourced server and vulnerability data
US10756995B2 (en) * 2015-07-27 2020-08-25 Datagrid Systems, Inc. Method, apparatus and system for real-time optimization of computer-implemented application operations using machine learning techniques
CN110806920B (en) * 2015-09-10 2022-12-13 华为云计算技术有限公司 Image deployment method and device
US10567411B2 (en) * 2015-10-01 2020-02-18 Twistlock, Ltd. Dynamically adapted traffic inspection and filtering in containerized environments
US10782990B1 (en) * 2015-11-24 2020-09-22 Amazon Technologies, Inc. Container telemetry
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US9396251B1 (en) * 2016-01-07 2016-07-19 International Business Machines Corporation Detecting and tracking virtual containers
AU2017228442B2 (en) * 2016-03-04 2020-11-05 Bmc Helix, Inc. Provisioning of containers for virtualized applications
US10326744B1 (en) * 2016-03-21 2019-06-18 EMC IP Holding Company LLC Security layer for containers in multi-tenant environments
US10069869B2 (en) * 2016-05-17 2018-09-04 Amazon Technologies, Inc. Versatile autoscaling
US10417065B2 (en) * 2016-06-13 2019-09-17 Dynatrace Llc Method and system for automated agent injection in container environments
US10484301B1 (en) * 2016-09-30 2019-11-19 Nutanix, Inc. Dynamic resource distribution using periodicity-aware predictive modeling
US10572226B2 (en) * 2016-12-21 2020-02-25 Aon Global Operations Ltd (Singapore Branch) Methods, systems, and portal using software containers for accelerating aspects of data analytics application development and deployment
US10860536B2 (en) * 2017-01-05 2020-12-08 Portworx, Inc. Graph driver layer management
US20180205612A1 (en) * 2017-01-13 2018-07-19 Portworx, Inc. Clustered containerized applications
US9983891B1 (en) * 2017-03-21 2018-05-29 Veritas Technologies Llc Systems and methods for distributing configuration templates with application containers
EP4242841A3 (en) * 2017-03-23 2023-09-27 DH2i Company Highly available stateful containers in a cluster environment
JP2018160149A (en) * 2017-03-23 2018-10-11 富士ゼロックス株式会社 Information processing system, autoscaling cooperation device and program
JP6915336B2 (en) * 2017-03-24 2021-08-04 富士フイルムビジネスイノベーション株式会社 Information processing system and virtual machine
US20180285210A1 (en) * 2017-03-28 2018-10-04 Commvault Systems, Inc. Container image generation process
US10244034B2 (en) * 2017-03-29 2019-03-26 Ca, Inc. Introspection driven monitoring of multi-container applications
US10691514B2 (en) * 2017-05-08 2020-06-23 Datapipe, Inc. System and method for integration, testing, deployment, orchestration, and management of applications
US10747568B2 (en) * 2017-05-30 2020-08-18 Magalix Corporation Systems and methods for managing a cloud computing environment
US10379908B2 (en) * 2017-05-30 2019-08-13 Red Hat, Inc. Merging scaled-down container clusters using vitality metrics
US10397062B2 (en) * 2017-08-10 2019-08-27 Red Hat, Inc. Cross layer signaling for network resource scaling
US10812366B1 (en) * 2017-08-31 2020-10-20 Google Llc System and method for deploying, scaling and managing network endpoint groups in cloud computing environments
US11080098B2 (en) * 2017-08-31 2021-08-03 Vmware, Inc. Methods, systems and apparatus for client extensibility during provisioning of a composite blueprint
US10877798B2 (en) * 2017-08-31 2020-12-29 Netflix, Inc. Scalable techniques for executing custom algorithms on media items
US11494692B1 (en) * 2018-03-26 2022-11-08 Pure Storage, Inc. Hyperscale artificial intelligence and machine learning infrastructure
US10324708B2 (en) * 2017-11-14 2019-06-18 Red Hat, Inc. Managing updates to container images
US10565034B2 (en) * 2017-12-29 2020-02-18 Futurewei Technologies, Inc. Event-driven serverless function orchestration
US10846137B2 (en) * 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US11422859B2 (en) * 2018-03-13 2022-08-23 Aloke Guha Methods and systems for cloud application optimization
US10990369B2 (en) * 2018-04-30 2021-04-27 EMC IP Holding Company LLC Repurposing serverless application copies
US11099909B2 (en) * 2018-05-15 2021-08-24 Vmware, Inc. Methods and apparatus for adaptive workflow adjustment during resource provisioning using meta-topics
US10382260B1 (en) * 2018-06-07 2019-08-13 Capital One Services, Llc Utilizing maching learning to reduce cloud instances in a cloud computing environment
JP7159887B2 (en) * 2019-01-29 2022-10-25 日本電信電話株式会社 Virtualization base and scaling management method of the virtualization base
US11169856B2 (en) * 2019-01-31 2021-11-09 Hewlett Packard Enterprise Development Lp Container management
US11321130B2 (en) * 2019-08-01 2022-05-03 Kyndryl, Inc. Container orchestration in decentralized network computing environments
US11016819B2 (en) * 2019-08-16 2021-05-25 Cisco Technology, Inc. Optimizing clustered applications in a clustered infrastructure
US20210072966A1 (en) * 2019-09-05 2021-03-11 International Business Machines Corporation Method and system for service rolling-updating in a container orchestrator system
US11200081B2 (en) * 2019-10-21 2021-12-14 ForgeRock, Inc. Systems and methods for tuning containers in a high availability environment
US12131197B2 (en) * 2019-11-25 2024-10-29 Kyndryl, Inc. Container load balancing and availability

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3109758A1 (en) * 2015-06-25 2016-12-28 Alcatel Lucent Method and apparatus for scaling an application
US20180136931A1 (en) * 2016-11-14 2018-05-17 Ca, Inc. Affinity of microservice containers
US20180316751A1 (en) * 2017-04-27 2018-11-01 Microsoft Technology Licensing, Llc Anti-flapping system for autoscaling resources in cloud networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHENG YI-LIN ET AL: "High Resource Utilization Auto-Scaling Algorithms for Heterogeneous Container Configurations", 2013 INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS, IEEE, 15 December 2017 (2017-12-15), pages 143 - 150, XP033351459, ISSN: 1521-9097, [retrieved on 20180529], DOI: 10.1109/ICPADS.2017.00030 *

Also Published As

Publication number Publication date
US11726758B2 (en) 2023-08-15
US20200257512A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
US11726758B2 (en) Efficient scaling of a container-based application in a distributed computing system
US10831633B2 (en) Methods, apparatuses, and systems for workflow run-time prediction in a distributed computing system
US20220329651A1 (en) Apparatus for container orchestration in geographically distributed multi-cloud environment and method using the same
EP3545416B1 (en) Resource management for batch jobs
US10558498B2 (en) Method for scheduling data flow task and apparatus
US20240354150A1 (en) Rightsizing virtual machine deployments in a cloud computing environment
JP5608222B2 (en) Application efficiency engine
US11467874B2 (en) System and method for resource management
CN107431696B (en) Method and cloud management node for automated deployment of applications
US8949847B2 (en) Apparatus and method for managing resources in cluster computing environment
JP5664098B2 (en) Composite event distribution apparatus, composite event distribution method, and composite event distribution program
US9348709B2 (en) Managing nodes in a distributed computing environment
US8739169B2 (en) Method for monitoring operating experiences of images to improve workload optimization in cloud computing environments
AU2019201625B2 (en) Elastic storage volume type selection and optimization engine for public cloud environments
US20210149726A1 (en) Scheduling device, scheduling system, scheduling method, and non-transitory computer-readable medium
CN114546587A (en) A method for expanding and shrinking capacity of online image recognition service and related device
US20130061214A1 (en) Programmable intelligent storage architecture based on application and business requirements
US20250097162A1 (en) Reducing placement conflicts between concurrent virtual machine allocations
CN119917274A (en) Target node selection method, device, equipment and medium
KR102914434B1 (en) Method and system for managing host node resource for container-based cloud database
US12314770B2 (en) Coordinated microservices
KR102676385B1 (en) Apparatus and method for managing virtual machine cpu resource in virtualization server
US20260111774A1 (en) Dynamic evaluation of serverless functions for quantum computing environments
EP4553659A1 (en) Dynamically assigning user devices to workload clusters
KR20220064785A (en) Apparatus and method for neural network group connection

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20707996

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20707996

Country of ref document: EP

Kind code of ref document: A1