Techniques for modifying a cluster computing environment
The autoscaling engine with a machine learning model optimizes node management in computing clusters by predicting performance changes and adjusting resources, addressing inefficiencies in conventional systems.
Patent Information
- Application Number
- JP2023527688
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-10
- Filing Date
- 2021-10-26
- Publication Date
- 2026-01-28
- Estimated Expiration
- 2041-10-26
AI Technical Summary
Conventional computing systems struggle with suboptimal node management in computing clusters due to inefficiencies in adjusting the number of nodes based on actual and predicted performance changes, leading to increased latency and resource wastage.
Implementing an autoscaling engine that monitors performance metrics, makes adjustments to the number of nodes based on actual and predicted changes, and utilizes a machine learning model trained with supervised learning to optimize node provisioning.
Enhances the accuracy of node management in computing clusters by predicting performance changes and adjusting resources proactively, reducing latency and optimizing resource utilization.
Smart Images

Figure 0007808105000006 
Figure 0007808105000007 
Figure 0007808105000008
Abstract
Description
[Technical Field]
[0001] REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. patent application Ser. No. 17 / 094,715, filed November 10, 2020, entitled "Techniques for Modifying Cluster Computing Environments," the disclosure of which is incorporated herein by reference in its entirety for all purposes. [Background technology]
[0002] background Distributed computing systems are becoming increasingly prevalent. These systems may include computing clusters of connected nodes (e.g., computers, servers, virtual machines, etc.) that cooperate cooperatively to process various requests (e.g., requests for data storage and / or retrieval in a system that maintains a database). As the number of tasks increases or decreases, the number of connected nodes may be suboptimal. For example, if the number of tasks decreases, the number of nodes may be greater than needed for pending tasks, leaving some nodes idle. Conversely, if the number of tasks increases, the number of nodes may be less than needed to efficiently process pending tasks, thus introducing greater latency to execute the pending tasks. Improvements may be made to the way conventional systems manage the number of nodes in a computing cluster. Embodiments of the present disclosure address these and other issues, individually as well as collectively. Summary of the Invention
[0003] overview
[0003] Techniques (e.g., methods, systems, non-transitory computer-readable media storing code or instructions executable by one or more processors) for adjusting the number of nodes of a computing cluster in response to actual and / or predicted changes in one or more performance metrics of the computing cluster are provided. Various embodiments are described herein, including methods, systems, non-transitory computer-readable media storing programs, code, or instructions executable by one or more processors, etc.
[0004] One embodiment is directed to a method for adjusting the number of computing nodes in a computing cluster based at least in part on actual and / or predicted changes in one or more performance metrics of the computing cluster. The method may include a computing service monitoring one or more performance metrics of a set of worker nodes of the computing cluster. The method may further include the computing service detecting that the performance metric falls below a performance threshold. The method may further include the computing service performing a first adjustment to the number of worker nodes in the set of worker nodes of the computing cluster in response to detecting that the performance metric is below the performance threshold. The method may further include the computing service obtaining training data for a machine learning model based at least in part on performing the first adjustment. The method may further include the computing service training the machine learning model using the training data and a supervised machine learning algorithm. The method may further include the computing service obtaining an output indicative of predicted performance changes in the computing cluster. In some embodiments, the output is obtained at least in part based on providing one or more subsequent performance metrics of the computing cluster as input to the machine learning model. The method may further include the computing service performing a second adjustment to the set of worker nodes based at least in part on the output indicating the predicted performance change in the computing cluster.
[0005] In some embodiments, adjusting the set of worker nodes further includes the computing service generating a scaling task, the scaling task being executed by a computing process, and the computing process updating metadata associated with the computing cluster upon completion of the scaling task.
[0006] In some embodiments, the output indicating the predicted performance change indicates how many worker nodes will be utilized for computing the task at a later time, the later time occurring within a predetermined period of time in the future.
[0007] In some embodiments, performing the first adjustment or performing the second adjustment includes increasing the quantity of the set of worker nodes or decreasing the quantity of the set of worker nodes.
[0008] In some embodiments, performing the first adjustment includes provisioning a number of additional worker nodes to the set of worker nodes of the computing cluster. In some embodiments, the method may further include determining that provisioning the number of additional worker nodes resulted in a subsequent performance metric that exceeds a performance threshold, and the training data is generated in response to determining that the number of additional worker nodes resulted in the subsequent performance metric.
[0009] In some embodiments, the training data includes one or more performance metrics, a subsequent performance metric, and a number of additional worker nodes provisioned during the first period of time. In some embodiments, the one or more performance metrics include at least one of a number of pending queries, a number of pending tasks, a latency measurement, a processing utilization rate, or a memory utilization rate.
[0010] Another embodiment is directed to a computing device. The computing device may include a computer-readable medium storing non-transitory computer-executable program instructions. The computing device may further include a processing device communicatively coupled to the computer-readable medium for executing the non-transitory computer-executable program instructions. Executing the non-transitory computer-executable program instructions with the processing device causes the computing device to perform operations. The operations may include monitoring one or more performance metrics of a set of worker nodes of a computing cluster. In some embodiments, at least one of these metrics may be measured and / or collected by the worker nodes, while the metric (e.g., a throughput metric) is associated with an external service or the computing device (e.g., an object storage service). The operations may further include the performance metric falling below a performance threshold. The operations may further include performing a first adjustment to the number of worker nodes in the set of worker nodes of the computing cluster in response to detecting the performance metric falling below the performance threshold. The operations may further include obtaining training data for the machine learning model based at least in part on performing the first adjustment. The operations may further include training a machine learning model utilizing the training data and a supervised machine learning algorithm. The operations may further include obtaining an output indicative of a predicted performance change in the computing cluster. In some embodiments, the output is obtained based at least in part on providing one or more subsequent performance metrics of the computing cluster as input to the machine learning model. The operations may further include performing a second adjustment to the set of worker nodes based at least in part on the output indicative of the predicted performance change in the computing cluster.
[0011] Yet another embodiment is directed to a non-transitory computer-readable storage medium storing computer-executable program instructions that, when executed by a processing device of a computing device, cause the computing device to perform operations. The operations may include monitoring one or more performance metrics of a set of worker nodes of a computing cluster. The operations may further include the performance metric falling below a performance threshold. The operations may further include performing a first adjustment to a number of worker nodes in the set of worker nodes of the computing cluster in response to detecting the performance metric falling below the performance threshold. The operations may further include obtaining training data for a machine learning model based at least in part on performing the first adjustment. The operations may further include training the machine learning model using the training data and a supervised machine learning algorithm. The operations may further include obtaining an output indicative of a predicted performance change in the computing cluster. In some embodiments, the output is obtained based at least in part on providing one or more subsequent performance metrics of the computing cluster as input to the machine learning model. The operations may further include performing a second adjustment to the set of worker nodes based at least in part on the output indicative of a predicted performance change in the computing cluster.
[0012] The foregoing, together with other features and embodiments, will become more apparent with reference to the following specification, claims, and accompanying drawings.
[0013] BRIEF DESCRIPTION OF THE DRAWINGS Various embodiments according to the present disclosure are described with reference to the drawings. [Brief explanation of the drawings]
[0014] [Figure 1]FIG. 1 illustrates a flow for adjusting the number of nodes in a computing cluster based at least in part on actual and / or predicted changes in the performance of the computing cluster, according to at least one embodiment. [Figure 2] FIG. 1 illustrates a flow for training a machine learning model to predict changes in performance of a computing cluster, according to at least one embodiment. [Figure 3] FIG. 1 illustrates a timeline to illustrate an exemplary use case for performing adjustments to a computing cluster, according to at least one embodiment. [Figure 4] FIG. 1 illustrates components of a computing system in accordance with at least one embodiment. [Figure 5] FIG. 1 is a schematic diagram of an exemplary computer architecture for an auto-scaling engine, including multiple modules that may perform functions in accordance with at least one embodiment. [Figure 6] 1 is a flowchart illustrating an example method for adjusting the number of nodes of a computing cluster based at least in part on actual and / or predicted changes in performance of the computing cluster, according to at least one embodiment. [Figure 7] FIG. 1 is a block diagram illustrating one pattern for implementing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 8] FIG. 1 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 9] FIG. 1 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 10] FIG. 1 is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system, according to at least one embodiment. [Figure 11] FIG. 1 is a block diagram illustrating an exemplary computer system according to at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0015] Detailed Description In the following description, for purposes of explanation, specific details are set forth in order to provide a thorough understanding of particular embodiments. It will be apparent, however, that various embodiments may be practiced without these specific details. The figures and description are not intended to be limiting. The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
[0016] The present disclosure relates to systems and techniques for adjusting the number of computing nodes in a computing cluster based at least in part on actual and / or predicted changes in cluster performance. A "computing cluster" may include any suitable number of nodes that perform operations in a cooperative manner. In some embodiments, the computing cluster may be provided in a cloud computing environment. As used herein, a "computing node" (also referred to as a "worker node" and / or a "node") may include a server, computing device, virtual machine, or any suitable physical or virtual computational resource configured to perform operations as part of a computing cluster. By way of example, a computing cluster may include one or more master nodes and one or more worker nodes, both of which are examples of computing nodes. In some embodiments, the master node performs any suitable operations related to task assignment, load balancing, node provisioning, node removal, or any suitable operations corresponding to managing a computing cluster, corresponding to one or more worker nodes. A worker node is configured to perform operations corresponding to tasks assigned to it by one or more master nodes. As a non-limiting example, a worker node may perform data storage and / or data retrieval tasks associated with a database at the direction of a master node, which assigns particular storage / retrieval tasks to the worker node.
[0017] In some embodiments, an autoscaling engine (e.g., operating on a manager node or computing device of the computing cluster) may monitor the performance of the computing cluster with respect to one or more performance metrics and / or performance thresholds. By way of example, each computing node in the computing cluster may be configured to perform operations to report one or more performance metrics (e.g., number of pending queries, number of pending tasks, latency measurements, processing utilization, memory utilization, etc.). These performance metrics may be collected and stored in a centralized data store accessible to the autoscaling engine. The autoscaling engine may monitor these performance metrics to identify when the performance of the computing cluster fails to meet performance requirements (e.g., a performance metric falls below or exceeds one or more predetermined performance thresholds). In response to detecting this scenario, the autoscaling engine may adjust the number of computing nodes in the cluster. As a non-limiting example, if the performance metric indicates that the latency of the system has exceeded a predetermined performance requirement (e.g., a predetermined performance requirement related to the latency of task completion), the autoscaling engine may perform operations to increase the number of computing nodes in the cluster in an attempt to reduce the latency associated with task execution. As another example, if a performance metric indicates that the number of idle computing nodes exceeds a predetermined threshold (e.g., 1, 3, 4, 20, etc.), the auto-scaling engine may take action to reduce the number of computing nodes in the cluster.
[0018] Initially, adjustments to the cluster due to the cluster's actual performance may be made according to a predetermined scheme. By way of example, the system may be configured to increase or decrease the number of computing nodes in the cluster by a predetermined default amount (e.g., 1, 5, 10, etc.) in response to how the cluster's actual performance does not meet performance requirements (e.g., as identified from one or more performance metrics provided by any suitable number of computing nodes in the cluster). After an adjustment is made (e.g., an increase is made), the performance metrics of the computing nodes may be monitored to identify changes in performance. If the adjustment results in further degradation of the cluster's performance (e.g., increased latency), the autoscaling engine may attempt another adjustment (e.g., a reverse adjustment, such as decreasing the number of computing nodes) to improve the cluster's performance. If the adjustment results in the cluster's performance approaching the performance requirements, additional adjustments of a similar nature (e.g., adding an additional set of nodes) may be made. When the autoscaling engine detects that the cluster is meeting performance requirements (e.g., the latency metric is below a predetermined latency threshold and the number of idle computing nodes is below a predetermined idleness threshold), the autoscaling engine may store any suitable data applicable to the period between when the performance degradation was identified and when the performance degradation was corrected. In other words, any performance metrics (e.g., latency metric, number of pending tasks, number of active queries, etc.) and / or cluster metadata (e.g., number of manager nodes, number of worker nodes, central processing units of worker / manager nodes, memory allocations of worker / manager nodes, etc.) collected within a threshold period before or after the performance degradation was detected or an adjustment was made in response to the detected performance degradation may be stored for subsequent use (e.g., as an instance of training data) along with an indicator of whether the adjustment was successful or unsuccessful.
[0019] In some embodiments, the autoscaling engine may be configured to train a machine learning model using the collected training data and supervised learning techniques. As used herein, a "machine learning model" is a mathematical function that maps an input to an output. In some embodiments, the machine learning model may be generated at least in part by utilizing a supervised learning algorithm with a training dataset including example inputs with predetermined / labeled outputs. Utilizing previously collected training data (e.g., training data collected in the manner discussed above) and a supervised learning algorithm (e.g., linear regression), the machine learning model is trained to predict performance changes for the cluster. As an example, using the collected training data, a machine learning model may take performance metrics and / or cluster metadata as input and be trained to identify how many executors (e.g., worker nodes) will be needed at a later time (e.g., 15 minutes into the future).
[0020] The disclosed technology provides improvements over conventional systems. For example, conventional systems may utilize a fixed schedule to control growth and decline in a computing cluster (e.g., at 9:00 AM, increase the computing cluster to x number of nodes, at 10:00 AM, decrease the computing cluster to y number of nodes, etc.). However, utilizing a schedule does not allow the cluster to react to actual or potential performance changes, and therefore the number of computing nodes may be suboptimal. As another example, some conventional systems increase the number of nodes in a computing cluster based on reacting to an incoming workload. However, because node provisioning can take time (e.g., 10 minutes, 15 minutes, etc.), a system that changes the computing cluster to respond to an incoming workload may still experience suboptimal performance while the new computing nodes are being provisioned. Furthermore, conventional systems do not utilize performance metrics of the type utilized herein to identify cluster performance. By way of example, the computing worker nodes disclosed herein may utilize a distributed data processing engine (e.g., Apache Spark®) to provide performance metrics against which cluster changes can be determined. By utilizing these metrics, the disclosed systems and methods provide a more accurate assessment of both the actual and predicted performance of a computing cluster than was previously achievable.
[0021] Turning to FIG. 1 , it illustrates a flow 100 for adjusting the number of nodes in a computing cluster based at least in part on actual and / or predicted changes in the performance of the computing cluster, according to at least one embodiment. Cloud computing system 100 may include a cloud computing environment including computing cluster 102. The operations of flow 100 may be performed by any suitable computing node of computing cluster 102. Computing cluster 102 may be a distributed system configured to perform operations in a cooperative manner utilizing any suitable number of executors (e.g., execution engines running on each computing node configured to perform operations corresponding to tasks assigned to the node). Computing nodes of computing cluster 102 may individually be any suitable physical device or virtual computing resource, such as a server computer, desktop computer, laptop computer, tablet computer, virtual machine, etc. As a non-limiting example, computing cluster 102 may be a cloud computing environment including many compute instances running respective virtual machines and / or computing devices.
[0022] The autoscaling engine 104 may be configured to run on any suitable computing node of the computing cluster 102 or as a service and / or device separate from the computing cluster 102. In some embodiments, the computing cluster 102 may include any suitable number of manager and / or worker nodes. The manager node may be configured to receive task requests (e.g., from a client device, not shown) and assign execution of the corresponding tasks to worker nodes of the computing cluster 102. Each worker node may operate an executor module (e.g., a software or hardware module, such as execution module 478 of FIG. 4 ) configured to perform operations in response to receiving task data from the manager node. In some embodiments, each worker node and / or manager node of the computing cluster 102 may be configured to run a distributed data processing engine that causes each node to provide performance metrics indicative of the current performance of each node and / or the current performance of the computing cluster 102. In some embodiments, the nodes may provide these performance metrics directly to the metrics data store 106, or the metrics may be collected by a data collector (e.g., one of the nodes of the computing cluster 102) and then stored by the data collector in the metrics data store 106. For purposes of illustration, it is assumed that the computing cluster 102 provided the metrics to the metrics data store before the start of the flow 100, and that the metrics continue to be provided periodically by the nodes of the computing cluster 102 during the flow 100. By way of example, each node may be programmed to provide the metrics according to a predetermined periodicity, frequency, schedule, in response to a metric change, or at any suitable time.
[0023] Flow 100 may begin at 108, where autoscaling engine 104 monitors the performance of a set of worker nodes of computing cluster 102. By way of example, autoscaling engine 104 may retrieve one or more performance metrics 112 from metric data store 106 (e.g., at any suitable time, according to a predetermined schedule, periodicity, frequency, upon change, etc.). The metrics may relate to one or more worker nodes of computing cluster 102 and / or the computing cluster 102 as a whole. By way of example, the one or more performance metrics may include any suitable combination of the number of pending tasks (e.g., tasks awaiting execution), the number of pending queries (total number of queries (also called task requests)) that are currently executing or have no completed tasks, the average / min / max memory utilization of physical memory of one or more worker nodes, the number of tasks completed in the last x minutes, the current number of executors (e.g., worker nodes), the average / min / max central processing unit (CPU) utilization of a worker node across available cores, the average task completion time, etc. A table of exemplary performance metrics is provided in connection with FIG.
[0024] At 110, the autoscaling engine 104 may detect an indication that the performance of the computing cluster 102 did not meet performance requirements (e.g., a performance metric exceeded or fell below a performance threshold). As a non-limiting example, the autoscaling engine 104 may be configured to identify, from the performance metrics, the current number of executors (Ec), the current task completion rate (Tcr), and the number of pending tasks (Pt). In some embodiments, the autoscaling engine 104 may determine the number of additional worker nodes required to complete the remaining pending tasks (e.g., Ec = Pt / Tcr). The autoscaling engine 104 may be configured with one or more performance thresholds and one or more rules to adjust the computing cluster 102 according to the current performance metric and the one or more performance thresholds. In the ongoing example, if the number of additional worker nodes is greater than a predetermined threshold (e.g., 0, 5, 7, etc.), the autoscaling engine 104 may be configured to provision additional worker nodes to the computing cluster 102. In some embodiments, the provisioned number may be predefined by one or more rules of the rule set (e.g., add 5, add 10, etc.), or the provisioned number may be defined in the rule set as corresponding to a calculation to be performed by the autoscaling engine 104 (e.g., Ec = Pt / Tcr). Thus, in this example, the autoscaling engine 104 may provision a default number of additional worker nodes according to the rule set, or potentially a specific number of additional worker nodes determined from the formula Ec = Pt / Tcr. In some embodiments, the specific number of additional worker nodes may be determined using the formula Ec = w × (Pt / Tcr), where w is a fixed or dynamic weight value.
[0025] As another non-limiting example, a rule set may specify that if the average completion time of tasks exceeds a predetermined latency threshold, a fixed number of worker nodes (e.g., 2, 5, 10, etc.), or a number of working nodes calculated using a predetermined formula, should be added to the computing cluster 102. As yet another non-limiting example, a rule set may specify that if the number of pending tasks, the CPU utilization of the worker nodes, the memory utilization of the worker nodes, etc., exceed respective predetermined performance thresholds (e.g., more than 10 pending tasks, more than 90% CPU utilization and / or memory utilization, etc.), a fixed number of worker nodes (e.g., 2, 5, 10, etc.), or a number of working nodes calculated using a predetermined formula, should be added to the computing cluster 102. As yet another example, a rule set may specify that if a predetermined threshold (e.g., a predetermined latency threshold, a predetermined CPU utilization threshold, etc.) is exceeded, a parallel computing cluster may be created using a predetermined number of nodes. The parallel computing cluster may run separately from the original computing cluster, and at least a portion of the tasks assigned to the original computing cluster may be transferred to the parallel computing cluster. In some embodiments, any suitable number of computing clusters may be created in this manner. It should be appreciated that the particular rules in a rule set that identify particular actions to be performed in response to particular stimuli may vary in number and complexity.
[0026] At 114, the autoscaling engine 104 may perform any suitable operation to adjust the number of worker nodes in the computing cluster 102. By way of example, the autoscaling engine 104 may generate a separate process to adjust the number of nodes in the computing cluster 102 (e.g., to add and / or remove a certain number of worker and / or manager nodes). In some embodiments, the autoscaling engine 104 may execute this process immediately or may add the process to a pending queue for later execution. This process may be configured to perform any suitable operation to provision (e.g., add) one or more additional nodes (e.g., worker and / or manager nodes) in the computing cluster 102 or remove one or more nodes in the computing cluster 102, as directed by the autoscaling engine 104. As a non-limiting example, this process may execute an operation to add a worker node 116 to the computing cluster 102.
[0027] At 118, the autoscaling engine 104 may be configured to generate training data based at least in part on the adjustments made at 114. By way of example, the autoscaling engine 104 may collect one or more performance metrics (also referred to as “cluster metadata”) that occur within a period of time before the adjustments are made, when the adjustments are made, and / or within a period of time after the adjustments are made. In some embodiments, the one or more performance metrics may be collected from a predetermined period of time (e.g., 5 minutes, 2 minutes, etc.) before the adjustments are made, and / or the one or more performance metrics may be collected based at least in part on the first occurrence of the computing cluster 102 failing to meet a particular performance threshold. Similarly, if one or more performance metrics are collected after the adjustments are made, the particular performance metrics may be collected based at least in part on a predetermined period of time (e.g., 3 minutes, 6 minutes) after the adjustments are made and / or based at least in part on identifying a time when the performance metrics of the computing cluster 102 indicated that a performance degradation had been corrected (e.g., the performance metrics indicated that the computing cluster 102 was meeting a performance threshold after the adjustments were made). As a non-limiting example, performance metrics of the computing cluster 102 occurring from 5 minutes prior to the adjustment, through the time when the performance metrics indicated that the original performance degradation (e.g., latency exceeds a predetermined threshold) has been corrected (e.g., latency meets or falls below a predetermined threshold), and / or over a predetermined period of time after the adjustment is completed (e.g., 5 minutes after a computing node is added / removed).
[0028] In some embodiments, the autoscaling engine 104 may generate an example training dataset that includes the collected metrics, the number of computing nodes added / removed, and a label indicating whether the adjustments corrected the performance degradation (e.g., successful / unsuccessful). The example training dataset may be added to a training dataset stored in memory (e.g., training dataset 120), which is later used to train a machine learning model (e.g., machine learning model 122) to identify adjustments (e.g., output 124) to be made to the computing cluster 102 based at least in part on the prediction of the performance metrics for future times (e.g., how many computing nodes will be needed 15 minutes in the future). The machine learning model 122 may be trained at least in part based on flow 200 described in connection with FIG. 2.
[0029] At 126, the autoscaling engine 104 may predict that the performance of the computing cluster 102 will not meet the second performance requirement. By way of example, the autoscaling engine 104 may collect current performance metrics and provide these metrics as input to the machine learning model 122. The machine learning model 122 may generate an output 124 that indicates whether changes to the computing cluster 102 are needed. In some embodiments, the output 124 may indicate one or more performance requirements that are predicted to degrade (e.g., latency exceeds a predetermined latency threshold in 15 minutes, number of pending tasks exceeds a predetermined threshold), and / or the number of computing nodes (worker and / or manager nodes) required to process the predicted pending tasks (e.g., the number of pending tasks predicted to exist 15 minutes in the future), and / or the number of nodes (worker and / or manager nodes) that should be added to and / or removed from the computing cluster 102. Given the number of computing nodes required to process the predicted pending tasks, the auto-scaling engine 104 may be configured to compare this number with the current number of nodes in the computing cluster 102 to determine how many more or fewer computing nodes 102 are needed.
[0030] At 128, the autoscaling engine 104 may adjust the computing cluster 102 based at least in part on the prediction (e.g., output 124) provided by the machine learning model 122. As an example, the autoscaling engine 104 may generate a separate process to adjust the number of nodes in the computing cluster 102 (e.g., to add and / or remove a certain number of worker and / or manager nodes) based at least in part on the output 124 (e.g., an output indicating that additional worker nodes are needed). In some embodiments, the autoscaling engine 104 may execute this process immediately or may add the process to a pending queue for later execution. This process may be configured to perform any suitable operations to provision (e.g., add) one or more additional nodes (e.g., worker and / or manager nodes) in the computing cluster 102 or remove one or more nodes in the computing cluster 102, as directed by the autoscaling engine 104. As a non-limiting example, this process may execute an operation to add a worker node 130 to the computing cluster 102.
[0031] 2 illustrates a flow 200 for training a machine learning model to predict changes in the performance of a computing cluster, according to at least one embodiment. In some embodiments, the operations of flow 200 may be performed by an auto-scaling engine, as described below with respect to FIGS. 4 and 5.
[0032] In some embodiments, the machine learning model 202 may be configured to accept a training dataset 204 as input. The training dataset 204 may be obtained by the machine learning model 202 from a data store (e.g., the metrics data store 106 of FIG. 1 ). The training dataset 204 (also referred to as a “training dataset” or “training data”) may include any suitable number of positive and / or negative examples. An exemplary instance of the training dataset may include performance metrics and / or cluster metadata collected within a threshold period of cluster adjustment (e.g., a predetermined period of time before or after the cluster adjustment) and an indication of whether the changes corrected a performance degradation. Thus, a positive example may be considered an example where the performance metrics and / or cluster metadata indicate a cluster adjustment that corrected a performance degradation, and a negative example may be considered an example where the performance metrics and / or cluster metadata indicate a cluster adjustment that did not correct a performance degradation. The machine learning model 202 may be trained using the training dataset 204 to identify specific adjustments to be made to the computing cluster based on the current performance metrics and / or cluster metadata. In some embodiments, the operations of flow 200 may be performed any suitable number of times to train any suitable number of machine learning models to detect respective cluster adjustments for different computing clusters. By way of example, machine learning model 202 may be trained to identify adjustments for a particular computing cluster based on historical cluster changes for that particular computing cluster.
[0033] Once trained, the machine learning model 202 may be utilized to generate an output 206. In some embodiments, a portion (e.g., two-thirds) of the training dataset 204 may be utilized for training purposes, and another portion (e.g., one-third) of the training dataset 204 may be utilized for validation. For example, the machine learning model 202 may be trained using two-thirds of the examples in the training dataset 204. Once trained, each of the examples in the remaining one-third of the training dataset 204 may be individually provided as an input to the machine learning model 202 to generate an output 206 (e.g., an individual instance of an output corresponding to each input). The output 206 may be compared to each indicator in the training dataset 204 to determine whether the machine learning model 202 generated an output consistent with each indicator in the training dataset (e.g., indicating that an individual adjustment did or did not correct a performance regression). In some embodiments, the machine learning model 202 may not be deployed until it generates an output that exceeds a predetermined accuracy threshold (e.g., 90% or more of the time, the model generates an output consistent with each indicator in the training dataset 204). In some embodiments, additional training dataset examples may be collected and used to retrain the collected machine learning model 202 until it exceeds a predetermined accuracy threshold. Once the machine learning model 202 produces outputs with sufficient accuracy, the machine learning model 202 may be deployed to any suitable number of computing resources and utilized to perform subsequent cluster refinements.
[0034] When the machine learning model 202 is utilized to determine cluster adjustments, the output 206 provided by the machine learning model 202 may be utilized in conjunction with a feedback procedure 208 to improve the accuracy of the machine learning model 202. In some embodiments, the feedback procedure 208 may include collecting data (e.g., performance metrics and / or cluster metadata) within a predetermined period of time before or after an adjustment (e.g., an adjustment identified by the machine learning model 202) is made. The output 206 and the collected data may be analyzed utilizing a predetermined rule set to determine whether the adjustment (e.g., the output 206) identified by the machine learning model 202 resulted in a correction of the performance degradation. As another example, any suitable portion of the output 206 and / or the collected data may be provided to one or more users and / or one or more remote systems (e.g., a cluster administrator device, a crowdsourced data collection system, etc.). A user of the crowdsourced system (e.g., a user with cluster management experience) may provide input indicating whether the adjustment (e.g., the output 206) identified by the machine learning model 202 resulted in a correction of the performance degradation of the computing cluster.
[0035] Feedback obtained through execution of feedback procedure 208 (e.g., indicating whether the adjustments (e.g., output 206) identified by machine learning model 202 resulted in correcting the performance degradation of the computing cluster) may be provided to machine learning model 202 at 210 to improve the accuracy of machine learning model 202 by expanding the training dataset on which machine learning model 202 is ultimately retrained. Thus, over time, machine learning model 202 may become increasingly more accurate at identifying adjustments to the computing cluster to correct various performance degradations.
[0036] 3 illustrates a timeline 300 to illustrate an exemplary use case for performing adjustments to a computing cluster, according to at least one embodiment. The operations described in connection with timeline 300 may be performed by auto-scaling engine 104 of FIG.
[0037] At time T1, computing cluster 302 may include any suitable number of computing nodes. By way of example, computing cluster 302 may include one manager node and two worker nodes. Each of the nodes of computing cluster 302 may provide one or more performance metrics indicative of its current performance and / or the performance of computing cluster 302 as a whole. These performance metrics may be provided at any suitable time along timeline 300 according to a predetermined schedule, periodicity, frequency, and / or based at least in part on changes in the performance metrics.
[0038] At time T2, the autoscaling engine 104 may determine that a performance metric indicates that a performance degradation has occurred (e.g., the performance metric has exceeded or fallen below a predetermined performance threshold). This determination may be according to a predetermined rule set that the autoscaling engine 104 is configured to access. As a non-limiting example, the autoscaling engine 104 may determine that at time T2, a latency metric (e.g., average completion time of a task) exceeds a predetermined latency threshold. In response to the determination made at time T2, the autoscaling engine 104 may identify that additional computing nodes (e.g., worker nodes 304) should be provisioned and added to the computing cluster 302.
[0039] At time T3, the auto-scaling engine 104 may perform any suitable operation to provision worker nodes 304 and add the worker nodes 304 to the computing cluster 302.
[0040] At time T4, the autoscaling engine 104 may add one or more performance metrics corresponding to the adjustments to the training dataset 306. By way of example, the autoscaling engine 104 may generate an example training dataset that includes performance metrics collected between time T2 and time T4 (e.g., a predetermined period of time after the adjustments made at time T3, a time when the autoscaling engine 104 determines that the performance degradation has been corrected, a time defined by a predetermined schedule, etc.), the number of nodes added / removed from the computing cluster (e.g., one in this case), and a label indicating whether the adjustments corrected the performance degradation. The autoscaling engine 104 may then add the example training dataset to the training dataset 306.
[0041] At time T5, the autoscaling engine 104 may determine that a performance metric indicates that another performance degradation has occurred (e.g., a performance metric has exceeded or fallen below a predetermined performance threshold). This determination may again be according to a predetermined rule set that the autoscaling engine 104 is configured to access. As a non-limiting example, the autoscaling engine 104 may determine that at time T5, a latency metric has again exceeded a predetermined latency threshold. In response to the determination made at time T2, the autoscaling engine 104 may identify that additional computing nodes (e.g., worker nodes 308) should be provisioned and added to the computing cluster 302.
[0042] At time T6, the auto-scaling engine 104 may perform any suitable operation to provision worker nodes 308 and add the worker nodes 308 to the computing cluster 302.
[0043] At time T7, autoscaling engine 104 may add one or more performance metrics corresponding to the adjustment made at time T6 to training dataset 306. By way of example, autoscaling engine 104 may generate an example training dataset that includes performance metrics collected between time T5 and time T7 (e.g., a predetermined period of time after the adjustment made at time T5, a time when autoscaling engine 104 determines that the performance degradation has been corrected, a time defined by a predetermined schedule, etc.), the number of nodes added / removed from the computing cluster (e.g., one in this case), and a label indicating whether the adjustment corrected the performance degradation. Autoscaling engine 104 may then add the example training dataset to training dataset 306.
[0044] At time T8, the autoscaling engine 104 may run any suitable supervised machine learning algorithm using the training dataset 306 to train a machine learning model 310. The machine learning model 310 may be trained to identify subsequent adjustments to be made to the computing cluster 102 based at least in part on inputs including a set of current performance metrics of the computing cluster 102.
[0045] At time T9, the autoscaling engine 104 may provide the current set of performance metrics as input to the machine learning model 310. In response, the machine learning model 310 may generate an output 312 indicating that additional worker nodes are needed. This output 312 may be generated based at least in part on the machine learning model 310, which may predict that a performance metric degradation will occur in a subsequent time period (e.g., the next 15 minutes), that x number of computing nodes (e.g., 1) will be needed to avoid the performance degradation in that subsequent time period, etc.
[0046] At time T10, the autoscaling engine 104 may perform any suitable operation to provision worker nodes 314 and add the worker nodes 314 to the computing cluster 302.
[0047] At time T11, autoscaling engine 104 may add one or more performance metrics corresponding to the adjustment made at time T10 to training dataset 306. By way of example, autoscaling engine 104 may generate an example training dataset that includes performance metrics collected between time T9 and time T11 (e.g., a predetermined period of time after the adjustment made at time T10, a time at which autoscaling engine 104 determines that a performance degradation has been avoided, a time defined by a predetermined schedule, etc.), the number of nodes added / removed from the computing cluster (e.g., one in this case), and a label indicating whether the adjustment was successful (e.g., whether a performance degradation was avoided). Autoscaling engine 104 may then add the example training dataset to training dataset 306.
[0048] At time T12, the autoscaling engine 104 may provide the current set of performance metrics as input to the machine learning model 310. In response, the machine learning model 310 may generate an output 316 indicating that a certain number (e.g., three) of worker nodes in the computing cluster 302 will be idle during a subsequent time period (e.g., the next 15 minutes). This output 316 may be generated at least in part based on the machine learning model 310 predicting that a performance metric degradation will occur in the subsequent time period (e.g., the next 15 minutes), that x number (e.g., one) of computing nodes should be removed (e.g., to avoid idle computing nodes) to avoid performance degradation during that subsequent time period, etc.
[0049] At time T13, the auto-scaling engine 104 may perform any suitable action to remove one or more nodes (e.g., three worker nodes) from the computing cluster 302.
[0050] At time T14, autoscaling engine 104 may add one or more performance metrics corresponding to the adjustment made at time T13 to training dataset 306. By way of example, autoscaling engine 104 may generate an example training dataset that includes performance metrics collected between time T12 and time T14 (e.g., a predetermined period of time after the adjustment made at time T10, a time at which autoscaling engine 104 determines that a performance degradation has been avoided, a time defined by a predetermined schedule, etc.), the number of nodes added / removed from the computing cluster (e.g., one in this case), and a label indicating whether the adjustment was successful (e.g., whether a performance degradation was avoided). Autoscaling engine 104 may then add the example training dataset to training dataset 306.
[0051] FIG. 4 illustrates components of a computing system 400 according to at least one embodiment. In the system 400, one or more users 402 may utilize a user device (e.g., a user device from a collection of user devices 404) to provide various computing requests to a distributed system 406 via a network 408. In some examples, the network 408 may include any one or combination of many different types of networks, such as a cable network, the Internet, a wireless network, a cellular network, and other private and / or public networks. The distributed system 406 (e.g., a computing cluster) may be an example of a computing cluster (e.g., computing cluster 102 of FIG. 1 ). In some embodiments, the distributed system 406 may include any suitable number of management nodes (e.g., manager node 410) and any suitable number of worker nodes (e.g., worker node 412), collectively referred to as “computing nodes” or “nodes” for simplicity. For example, a user may access a user interface accessible via an application 414 running on the user device 404. In some aspects, the application 414 running on the user device 404 may be hosted, managed, and / or provided by computational resources of the distributed system 406 (e.g., the manager node 410 and / or a separate computational resource of the distributed system 406 not shown in FIG. 4).
[0052] In some embodiments, application 414 may enable user 402 to interact with distributed system 406. For example, a user may request data utilizing an interface provided by application 414. Distributed system 406 may then be configured to process the request and return the requested data to user device 404 via application 414. Application 414 may further be configured to receive, process, and / or display data provided by distributed system 406.
[0053] The user devices 404 may be any suitable type of computing device, such as, but not limited to, a mobile phone, a handheld scanner, a touchscreen device, a smartphone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a thin client device, a tablet PC, an electronic book (e-book) reader, etc. In some examples, the user devices 404 may communicate with the distributed system 406 over a network 408 or other network connection.
[0054] In one exemplary configuration, the user device 404 may include at least one memory 416 and one or more processing units (or processors) 418. The processor 418 may be implemented in hardware, computer-executable instructions, firmware, or combinations thereof, as appropriate. A computer-executable instruction or firmware implementation of the processor 418 may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various functions described.
[0055] The memory 416 may store program instructions loadable and executable on the processor 418, as well as data generated during the execution of these programs. Depending on the configuration and type of user computing device, the memory 416 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). The user device 404 may also include additional removable and / or non-removable storage devices, including, but not limited to, magnetic storage devices, optical disks, and / or tape storage devices. Disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing device. In some implementations, the memory 416 may include multiple different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), or ROM.
[0056] Referring more particularly to the contents of memory 416, memory 416 may include an operating system 420, one or more data stores 422, and one or more application programs, modules, or services provided via applications 414 (e.g., a browser application, a video player application, etc.). Applications 414 may be configured to receive, store, and / or display network pages or other interfaces for interacting with distributed system 406. Additionally, memory 416 may store access credentials and / or other user information, such as, but not limited to, a user ID, a password, and / or other user information. In some examples, user information may include information for authenticating account access requests, such as, but not limited to, a device ID, a cookie, an IP address, a location, etc.
[0057] The user device 404 may also include communication connections 418 that allow the user device 404 to communicate with a stored database, another computing device or server (e.g., the distributed system 406), a user terminal, and / or other devices on the network 408. The user device 404 may also include I / O devices 420, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, a printer, etc.
[0058] In some aspects, the manager node 410 and the worker node 412 (collectively referred to as “nodes”) of the distributed system 406 may also be any suitable type of computing device, such as, but not limited to, a mobile phone, a smartphone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a server computer, a thin client device, or a tablet PC. Furthermore, it should be noted that in some embodiments, the nodes of the distributed system 406 are executed by one or more virtual machines implemented in a hosted computing environment. The hosted computing environment may include one or more rapidly provisioned and released computing resources, which may include computing devices, networking devices, and / or storage devices. The hosted computing environment may also be referred to as a cloud computing environment. In some examples, the nodes of the distributed system 406 may communicate with the user devices 404 via the network 408 or other network connections. The nodes of the distributed system 406 may include one or more servers, perhaps configured in a cluster, as a server farm, or as individual servers that are not associated with each other. These servers may be configured to implement the functionality described herein as part of an integrated, distributed computing environment.
[0059] In one exemplary configuration, manager node 410 and worker node 412 may each include at least one memory 428 and memory 448, and one or more processing units (or processors 430 and 450, respectively). Processors 430 and 450 may be implemented in hardware, computer-executable instructions, firmware, or a combination thereof, as appropriate. Computer-executable instruction or firmware implementations of processors 430 and 450 may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various functions described.
[0060] Memory 428 and memory 448 may store program instructions loadable and executable on processors 430 and 450, respectively, as well as data generated during the execution of these programs. Depending on the node configuration and type, memory 428 and memory 448 may each be volatile (such as RAM) and / or non-volatile (such as ROM, flash memory, etc.). Manager node 410 and worker node 412 may each include additional storage 432 and 452, respectively, which may include removable and / or non-removable storage. Additional storage 732 may include, but is not limited to, magnetic storage, optical disks, and / or tape storage. Disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing devices. In some implementations, memory 428 and memory 448 may each include multiple different types of memory, such as SRAM, DRAM, PMEM, NVME, or ROM.
[0061] Memory 428, memory 448, additional storage 432, and additional storage 452, whether removable or non-removable, are all examples of computer-readable storage media. For example, computer-readable storage media may include volatile or non-volatile, removable or non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Memory 428, memory 448, additional storage 432, additional storage 452, centralized data store 480, and metrics data store 490 are all examples of computer storage media. Additional types of computer storage media that may be present in the nodes and / or data stores of distributed system 406 may include, but are not limited to, PRAM, SRAM, DRAM, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired information and that can be accessed by distributed system 406. Combinations of any of the above should also be included within the scope of computer-readable media.
[0062] Alternatively, computer-readable communication media may include computer-readable instructions, program modules, or other data transmitted within a data signal or other transmission, such as a carrier wave. However, as used herein, computer-readable storage media does not include computer-readable communication media.
[0063] Manager node 410 and worker node 412 may also include communication connections 434 and 454, respectively, that allow the respective nodes to communicate with stored databases (e.g., centralized data store 480, metric data store 490, etc.), another computing device or server, user terminals, and / or other devices on network 408. Manager node 410 and worker node 412 may also include I / O devices 436 and 456, respectively, which may be a keyboard, mouse, pen, voice input device, touch input device, display, speaker, printer, etc.
[0064] Referring more particularly to the contents of memory 428 and memory 458, memory 428 and memory 458 may include operating systems 440 and 460, respectively, one or more caches 442 and 462, respectively, and / or one or more application programs, modules, or services for implementing the features disclosed herein. By way of example, memory 428 of manager node 410 may include a management module 472 and an auto-scaling engine 474 (e.g., an example of auto-scaling engine 104 of FIG. 1). Although management module 472 and auto-scaling engine 474 are depicted as separate modules, in some embodiments, the functionality of both may be provided by a single software and / or hardware module operating on the manager node and / or operating, at least in part, on different computational resources of distributed system 406 (e.g., computing devices (not shown) associated with distributed system 406 and configured to perform any suitable combination of the functions described herein with respect to FIGS. 1-3).
[0065] In some embodiments, management module 472 is configured using software and / or hardware to perform operations associated with managing worker nodes 412. By way of example, management module 472 may include instructions that, when executed by processor 430, cause manager node 410 to perform any suitable operation related to provisioning new nodes to a computing cluster (e.g., computing cluster 102 of FIG. 1 ), removing nodes from a computing cluster, load balancing, task assignment, providing one or more performance metrics of manager node 410 (e.g., to metrics data store 490), or any suitable operation related to managing worker nodes 412. In some embodiments, management module 472 includes a distributed data processing engine (e.g., Apache Spark®) that provides various performance metrics from which cluster adjustments can be determined. In some embodiments, autoscaling engine 474 is configured to perform any suitable operation associated with determining when to increase and / or decrease the number of worker nodes 412 based at least in part on actual and / or predicted performance metrics and cluster metadata. In some embodiments, auto-scaling engine 474 may be configured to communicate with management module 472, metrics data store 490, worker nodes 412, or any suitable computational resource of distributed system 406. The specific functionality provided by auto-scaling engine 474 is discussed in further detail with respect to FIG.
[0066] In some embodiments, execution module 478 performs any suitable operations to execute tasks assigned to worker nodes 412 by manager node 410. In some embodiments, execution module 478 (also referred to herein as an “executor”) may provide performance metrics associated with worker nodes 412. As a non-limiting example, execution module 478 may include a distributed data processing engine (e.g., Apache Spark®) that provides various performance metrics that may determine cluster tuning. By way of example, execution module 478 may be configured to provide any suitable combination of one or more performance metrics according to any suitable predetermined schedule, periodicity, frequency, with changes occurring with respect to one or more performance metrics, and / or according to a set of rules for providing said performance metrics.
[0067] The following table lists some example performance metrics that may be provided by management module 472, auto-scaling engine 474, execution module 478, or any suitable combination of the above.
[0068] [Table 1-1]
[0069] [Table 1-2]
[0070] [Table 1-3]
[0071] [Table 1-4]
[0072] [Table 1-5]
[0073] FIG. 5 is a schematic diagram of an exemplary computer architecture for an autoscaling engine 500 (e.g., autoscaling engine 474 of FIG. 4 ) including multiple modules 502 that may perform functions according to at least one embodiment. Module 502 may be a software module, a hardware module, or a combination thereof. If module 502 is a software module, module 502 may be embodied on a computer-readable medium and processed by a processor in any of the computer systems described herein. Note that any module or data store described herein may, in some embodiments, be a service responsible for managing data of the type required to perform the corresponding computation. Module 502 may exist as part of management node 410 (or a separate computational resource) operating within distributed system 406 of FIG. 4 , or the module may exist as a separate module or service outside of distributed system 406.
[0074] In the embodiment shown in FIG. 5, a metrics data store 504 (e.g., an example of metrics data store 490 in FIG. 4) is shown, but content data can be maintained, derived, or otherwise accessed from various data stores that are remote or local to autoscaling engine 500 to achieve the functionality described herein. In at least one embodiment, the data stores described herein may operate as part of distributed system 406 or may be physically separate from distributed system 406. As shown in FIG. 5, autoscaling engine 500 includes various modules, such as a data processing module 512, a model management module 514, a responsive scaling module 516, a predictive scaling module 518, a feedback engine 520, and an output module 522. Some functions of module 502 are described below. However, for the benefit of the reader, a brief, non-limiting description of each of the modules is provided in the following paragraphs.
[0075] In at least one embodiment, autoscaling engine 500 includes a data processing module 512. In general, data processing module 512 may be utilized to receive any suitable information for any of the examples provided herein. Data processing module 512 may include any suitable number of application programming interfaces through which the functionality of autoscaling engine 500 may be invoked.
[0076] In some embodiments, the data processing module 512 may be configured to monitor one or more performance metrics of computational resources (e.g., computing devices, virtual machines, etc.) of a distributed system (e.g., distributed system 406). The data processing module 512 may retrieve the one or more performance metrics from a data store configured to store such information, the metrics data store 504. The one or more performance metrics may be initially provided by the management module 472 and / or the executor module 478 of FIG. 4. The data processing module 512 may be configured with any suitable number of performance thresholds that define performance requirements. By way of example, the data processing module 512 may be configured with a predetermined latency threshold that indicates the amount of time it takes for a query to complete (e.g., corresponding to every query, on average, etc.). The data processing module 512 may be configured to determine when the distributed system 406 does not meet the performance thresholds. For example, the data processing module 512 may determine when the average completion time of a query (e.g., avgCompletionTime listed in the table above) exceeds a predetermined threshold (e.g., a predetermined latency threshold). As another non-limiting example, data processing module 512 may be configured to determine whether there are any idle executors (a condition that constitutes performance degradation) based at least in part on determining the number of executors (e.g., numExecutors), the number of pending tasks (e.g., PendingTasks, tasks awaiting execution), and the number of active tasks (e.g., Active Tasks). If the number of pending tasks is zero and the number of executors exceeds the number of active tasks, at least one executor may be considered idle. Data processing module 512 may be configured to invoke functionality of any other of modules 502 upon detecting performance degradation, or at any suitable time.
[0077] In some embodiments, model management module 514 may be configured to train a model (e.g., machine learning model 202 of FIG. 2 ) to predict performance changes in a computing cluster. In at least one embodiment, output provided by the model may identify (and / or be used to identify) the total number and / or additional number of worker nodes needed at some point in the future (e.g., 10 minutes in the future, 15 minutes in the future, etc.). Model management module 814 may obtain training data from metrics data store 504 (a data store configured to store one or more performance metrics and / or cluster metadata provided by management node 410 and / or worker node 412 of FIG. 4 ). In some embodiments, training data (e.g., training dataset 204 of FIG. 2 ) may be pre-stored in metrics data store 504, or autoscaling engine 500 may receive a training dataset from any suitable source (e.g., via data processing module 512) and store it in metrics data store 504 for later use. The model management module 514 may be configured to train and / or retrain the machine learning models described above using the training set and any suitable supervised, unsupervised, or semi-supervised learning algorithm. For example, the model management module 514 may be configured to perform the operations described above in connection with FIG. 2 with respect to training / retraining the machine learning models 202, maintaining and / or adding to the training dataset 204. Once the machine learning models are trained by the model management module 514, the machine learning models may be utilized to determine cluster adjustments based at least in part on subsequent performance metrics / cluster metadata provided as input.
[0078] In some embodiments, the reactive scaling module 516 may be configured with a rule set defining any suitable number of conditions, whereby detection of a predetermined condition causes the reactive scaling module 516 to adjust the number of computing nodes (e.g., the number of worker nodes 412) upward or downward depending on the action defined in the rule set. As an example, the reactive scaling metric may detect that one or more worker nodes are idle, and according to at least one rule in the rule set, the reactive scaling metric may determine the number / identity of nodes to be removed from the computing cluster (e.g., distributed system 406). In some embodiments, the reactive scaling module 516 may be configured to instruct the output module 522 to perform operations to add and / or remove worker nodes (and / or specific worker nodes) from the computing cluster.
[0079] In some embodiments, the predictive scaling module 518 may be configured to utilize a model trained by the model management module 514 to predict the number of computing nodes that are predicted to be needed at a future time (e.g., 15 minutes from the current time). The predictive scaling module 518 may obtain one or more performance metrics from the metrics data store 504 (e.g., the most recent metrics collected / received by the metrics data store 504, metrics collected / received within a time period, such as the last x minutes). Once obtained, the metrics may be provided by the predictive scaling module 518 to the machine learning model 202 to generate an output (e.g., output 206 of FIG. 2 ). In some embodiments, the output may indicate the number of computing nodes to be added / removed from the cluster and / or the total number of computing nodes needed at a future time (from which the number of computing nodes to be added / removed may be derived). In some embodiments, the predictive scaling module 518 may be configured to instruct the output module 522 to perform an operation to add and / or remove some worker nodes (and / or a particular worker node) from the computing cluster.
[0080] The feedback engine 520 may be configured to generate feedback data. The feedback engine 520 may determine whether adjusting the computing cluster (e.g., according to rules in a rule set enforced by the reactive scaling module 516 and / or according to output provided by a machine learning model) corrected a previously detected performance degradation. As a simple example, the feedback engine 520 may be configured to determine that a performance degradation occurred (e.g., a certain number of idle computing nodes were detected), and some computing nodes were removed from the cluster according to either the rule set utilized by the reactive scaling module 516 and / or output provided by a machine learning model obtained by the predictive scaling module 518. The feedback engine 520 may be configured to collect performance metrics provided within a predetermined time period beginning before the adjustments were made and including the time the adjustments to the computing cluster were made. The feedback engine 520 may be configured to label those metrics as either correcting or not correcting a performance degradation (e.g., a particular performance degradation). The feedback engine 520 may store the labeled metrics as additional instances of training data in a metric data store. The additional instances of training data may be utilized by the model management module 514 at a later time to retrain or update the machine learning model. The feedback engine 520 may generally perform any suitable operations corresponding to the feedback procedure 208 described in connection with FIG.
[0081] According to some embodiments, output module 522 performs any suitable operation to adjust the number of computing nodes in a computing cluster (e.g., distributed system 406). By way of example, output module 522 may generate computing processes (referred to as "scaling tasks") that may perform any suitable operation to provision new computing nodes to a computing cluster or remove previously provisioned computing nodes from a computing cluster.
[0082] 6 shows a flowchart illustrating an example method 600 for adjusting the number of nodes of a computing cluster based at least in part on actual and / or predicted changes in the performance of the computing cluster, according to at least one embodiment. In some embodiments, the operations of method 600 may be performed by autoscaling engine 500 of FIG. 5 operating as a computing service or executing on a computing device within distributed system 406 of FIG. 4, or operating as a device and / or service separate from distributed system 406 with access to performance metrics of distributed system 406.
[0083] Method 600 may begin at block 602, where one or more performance metrics of a set of worker nodes of a computing cluster may be monitored (e.g., by data processing module 512 of FIG. 5 ). Monitoring may include obtaining the one or more performance metrics according to any suitable predetermined schedule, periodicity, frequency, etc. based at least in part on changes in the performance metrics.
[0084] At 604, the autoscaling engine 500 (or a component of an autoscaling service, such as the data processing module 512) may detect a degradation in the performance of the computing cluster (e.g., a performance metric falling below a performance threshold). The autoscaling engine may be configured with any suitable thresholds (e.g., ranges, lower limits, upper limits, tolerances, etc.) corresponding to any suitable performance metric (or combination of performance metrics).
[0085] At 606, in response to detecting that the performance metric is below the performance threshold, the autoscaling engine 500 performs a first adjustment to the number of worker nodes in the set of worker nodes of the computing cluster. By way of example, the reactive scaling module 516 may identify the first adjustment (e.g., the number by which the set of worker nodes should be increased or decreased) according to a predetermined rule set. The reactive scaling module 516 may then instruct the output module 522 to perform any suitable operation to perform the first adjustment to the set of worker nodes of the computing cluster.
[0086] At 608, the autoscaling engine 500 obtains training data for the machine learning model (e.g., the machine learning model 202) based at least in part on performing the first adjustment. By way of example, the feedback engine 520 may be utilized to collect performance metrics applicable to the first adjustment (e.g., performance metrics before, during, and / or after the first adjustment) and determine whether the first adjustment corrected performance degradation. The feedback engine 520 may label the performance metrics with its determination and provide the aggregate data as instances of training data that may retrain / update the machine learning model.
[0087] At 610, the machine learning model may be trained (eg, by the model management module 514) utilizing the training data and the supervised machine learning algorithm.
[0088] At 612, autoscaling engine 500 (e.g., or a component of autoscaling engine 500, such as predictive scaling module 518) may obtain an output indicative of a predicted performance change in the computing cluster. In some embodiments, this output is obtained based at least in part on providing one or more subsequent performance metrics of the computing cluster as input to a machine learning model. The one or more subsequent performance metrics may be received by data processing module 512 and passed to predictive scaling module 518, or predictive scaling module 518 may retrieve said metrics from metric data store 504 of FIG. 5.
[0089] At 614, the autoscaling engine 500 may perform a second adjustment to the set of worker nodes based at least in part on the output indicating the predicted performance change in the computing cluster. By way of example, the predictive scaling module 518 may identify the second adjustment (e.g., the number by which the set of worker nodes should be increased or decreased) according to the output provided by the model. In some embodiments, this output indicates the total number of computing nodes needed and / or the number by which the computing nodes should be increased or decreased. The predictive scaling module 518 then instructs the output module 522 to perform any suitable action to perform the first adjustment to the set of worker nodes of the computing cluster.
[0090] As mentioned above, infrastructure as a service (IaaS) is one specific type of cloud computing. IaaS may be configured to provide virtualized computing resources over a public network (e.g., the Internet). In the IaaS model, a cloud computing provider may host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). In some cases, an IaaS provider may also provide various services (e.g., billing, monitoring, logging, security, load balancing, clustering, etc.) to accompany those infrastructure components. Accordingly, these services may be policy-driven, so that IaaS users may be able to implement policies to drive load balancing to maintain application availability and performance.
[0091] In some cases, IaaS customers may access resources and services over a wide area network (WAN), such as the Internet, and may use the cloud provider's services to install the remaining elements of their application stack. For example, a user may log in to an IaaS platform, create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as a database, create storage buckets for workloads and backups, and even install enterprise software on the VMs. The customer may then use the provider's services to perform a variety of functions, including balancing network traffic, troubleshooting application issues, monitoring performance, managing disaster recovery, etc.
[0092] In most cases, the cloud computing model will require the participation of a cloud provider, which may be, but need not be, a third-party service that specializes in providing (e.g., offering, renting, selling) IaaS. Entities may also choose to deploy private clouds and become their own provider of infrastructure services.
[0093] In some examples, IaaS deployment is the process of putting a new application or a new version of an application onto a prepared application server, etc. It may also include the process of provisioning the server (e.g., installing libraries, daemons, etc.), which is often managed below the hypervisor layer (e.g., server, storage, network hardware, and virtualization) by the cloud provider. Thus, the customer may be responsible for handling (e.g., on self-service virtual machines (which may be launched on demand, for example)), middleware, and / or application deployment, etc.
[0094] In some instances, IaaS provisioning may refer to obtaining computers or virtual hosts for use and even installing required libraries or services on them. In most cases, deployment does not include provisioning, which may need to be performed first.
[0095] In some cases, IaaS provisioning presents two distinct problems. First, there is the initial challenge of provisioning an initial set of infrastructure before anything works. Second, there is the challenge of evolving the existing infrastructure (e.g., adding new services, modifying services, removing services, etc.) once everything is provisioned. In some cases, these two challenges may be addressed by allowing the configuration of the infrastructure to be defined declaratively. In other words, the infrastructure (e.g., what components are needed and how they interact) may be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., what resources depend on which resources and how they work together with each other) may be described declaratively. In some examples, once the topology is defined, workflows may be generated to create and / or manage the different components described in the configuration files.
[0096] In some examples, the infrastructure may have many interconnected elements. For example, there may be one or more virtual private clouds (VPCs) (e.g., potentially on-demand pools of configurable and / or shared computing resources), also known as a core network. In some examples, there may also be one or more security group rules and one or more virtual machines (VMs) provisioned to define how the network's security is set up. Other infrastructure elements, such as load balancers, databases, etc., may also be provisioned. The infrastructure may evolve incrementally as more and more infrastructure elements are desired and / or added.
[0097] In some examples, continuous deployment techniques may be employed to enable deployment of infrastructure code across various virtual computing environments. Additionally, the described techniques may enable infrastructure management within these environments. In some examples, a service team may write code that is desired to be deployed to one or more, but often many, different production environments (e.g., across a variety of different geographic locations, sometimes spanning the entire world). However, in some examples, the infrastructure onto which the code will be deployed must first be set up. In some cases, provisioning may be done manually, utilizing a provisioning tool to provision resources and / or a deployment tool to deploy the code once the infrastructure is provisioned.
[0098] 7 is a block diagram 700 illustrating an example pattern of an IaaS architecture according to at least one embodiment. A service operator 702 may be communicatively coupled to a secure host tenancy 704, which may include a virtual cloud network (VCN) 706 and a secure host subnet 708. In some examples, the service operator 702 may employ one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, cellular phone, iPad®, computing tablet, personal digital assistant (PDA)) or wearable devices (e.g., Google Glass® head-mounted display), running software such as Microsoft Windows Mobile® and / or various mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, etc., and internet, email, short message service (SMS), Blackberry®, or other enabled communication protocols. Alternatively, the client computing devices may be general-purpose personal computers, including, by way of example, personal and / or laptop computers running various versions of Microsoft Windows, Apple Macintosh, and / or Linux operating systems. The client computing devices may be workstation computers running any of a variety of commercially available UNIX or UNIX-like operating systems, including, but not limited to, various GNU / Linux operating systems such as Google Chrome OS.Alternatively, or in addition, the client computing device may be any other electronic device, such as a thin client computer, an Internet-enabled gaming system (e.g., a Microsoft Xbox game console with or without a Kinect® gesture input device), and / or a personal messaging device, capable of communicating over a network that may have access to VCN 706 and / or the Internet.
[0099] VCN 706 may include a local peering gateway (LPG) 710, which may be communicatively coupled to a secure shell (SSH) VCN 712 via an LPG 710 included in SSH VCN 712. SSH VCN 712 may include an SSH subnet 714, which may be communicatively coupled to a control plane VCN 716 via an LPG 710 included in control plane VCN 716. SSH VCN 712 may also be communicatively coupled to a data plane VCN 718 via LPG 710. The control plane VCN 716 and the data plane VCN 718 may be included in a service tenancy 719, which may be owned and / or operated by the IaaS provider.
[0100] The control plane VCN 716 may include a control plane demilitarized zone (DMZ) tier 720 that serves as a perimeter network (e.g., a portion of the enterprise network between the enterprise intranet and an external network). DMZ-based servers may have limited responsibilities and help keep security breaches contained. Additionally, the DMZ tier 720 may include one or more load balancer (LB) subnets 722, a control plane app tier 724 that may include an app subnet 726, and a control plane data tier 728 that may include a database (DB) subnet 730 (e.g., a front-end DB subnet and / or a back-end DB subnet). The LB subnet 722 included in the control plane DMZ tier 720 may be communicatively coupled to the app subnet 726 included in the control plane app tier 724 and to an Internet gateway 734 that may be included in the control plane VCN 716, and the app subnet 726 may be communicatively coupled to the DB subnet 730, a service gateway 736, and a network address translation (NAT) gateway 738 included in the control plane data tier 728. The control plane VCN 716 may include a service gateway 736 and a NAT gateway 738 .
[0101] Control plane VCN 716 may include a data plane mirror app layer 740 that may include an app subnet 726. The app subnet 726 included in data plane mirror app layer 740 may include a virtual network interface controller (VNIC) 742 that may run a compute instance 744. The compute instance 744 may communicatively couple the app subnet 726 of the data plane mirror app layer 740 to the app subnet 726 that may be included in the data plane app layer 746.
[0102] The data plane VCN 718 may include a data plane app layer 746, a data plane DMZ layer 748, and a data plane data layer 750. The data plane DMZ layer 748 may include a LB subnet 722 that may be communicatively coupled to an app subnet 726 of the data plane app layer 746 and an internet gateway 734 of the data plane VCN 718. The app subnet 726 may be communicatively coupled to a service gateway 736 of the data plane VCN 718 and a NAT gateway 738 of the data plane VCN 718. The data plane data layer 750 may also include a DB subnet 730 that may be communicatively coupled to the app subnet 726 of the data plane app layer 746.
[0103] The internet gateways 734 of the control plane VCNs 716 and data plane VCNs 718 may be communicatively coupled to a metadata management service 752, which may be communicatively coupled to the public internet 754. The public internet 754 may be communicatively coupled to NAT gateways 738 of the control plane VCNs 716 and data plane VCNs 718. The service gateways 736 of the control plane VCNs 716 and data plane VCNs 718 may be communicatively coupled to cloud services 756.
[0104] In some examples, a service gateway 736 of the control plane VCN 716 or the data plan VCN 718 may make an application programming interface (API) call to a cloud service 756 without traversing the public Internet 754. The API call from the service gateway 736 to the cloud service 756 may be one-way: the service gateway 736 may make the API call to the cloud service 756, and the cloud service 756 may send the requested data to the service gateway 736. However, the cloud service 756 may not initiate the API call to the service gateway 736.
[0105] In some examples, secure host tenancy 704 can connect directly to service tenancy 719, which may otherwise be isolated. Secure host subnet 708 may communicate with SSH subnet 714 through LPG 710, which may allow bidirectional communication through otherwise isolated systems. Connecting secure host subnet 708 to SSH subnet 714 may give secure host subnet 708 access to other entities within service tenancy 719.
[0106] The control plane VCN 716 may enable users of the service tenancy 719 to set up or otherwise provision desired resources. The desired resources provisioned in the control plane VCN 716 may be deployed or otherwise used in the data plane VCN 718. In some examples, the control plane VCN 716 may be isolated from the data plane VCN 718, and the data plane mirror app layer 740 of the control plane VCN 716 may communicate with the data plane app layer 746 of the data plane VCN 718 via a VNIC 742, which may be included in the data plane mirror app layer 740 and the data plane app layer 746.
[0107] In some examples, a user or customer of the system may make a request, such as a create, read, update, or delete (CRUD) operation, over the public Internet 754, which may communicate the request to a metadata management service 752. The metadata management service 752 may communicate the request to the control plane VCN 716 via an Internet gateway 734. The request may be received by a LB subnet 722 included in the control plane DMZ layer 720. The LB subnet 722 may determine that the request is valid, and in response to this determination, the LB subnet 722 may send the request to an app subnet 726 included in the control plane app layer 724. If the request is validated and requires a call to the public Internet 754, the call to the public Internet 754 may be sent to a NAT gateway 738, which may make the call to the public Internet 754. Memory that may be desired to be stored with the request may be stored in the DB subnet 730.
[0108] In some examples, the data plane mirror app layer 740 may facilitate direct communication between the control plane VCN 716 and the data plane VCN 718. For example, it may be desired that a configuration change, update, or other suitable modification be applied to resources included in the data plane VCN 718. Via the VNIC 742, the control plane VCN 716 may communicate directly with the resources included in the data plane VCN 718, thereby performing the change, update, or other suitable modification to the configuration.
[0109] In some embodiments, the control plane VCN 716 and the data plane VCN 718 may be included in the service tenancy 719. In this case, a user or customer of the system may not own or operate either the control plane VCN 716 or the data plane VCN 718. Instead, an IaaS provider may own or operate the control plane VCN 716 and the data plane VCN 718, both of which may be included in the service tenancy 719. This embodiment may enable network isolation that may prevent a user or customer from interacting with the resources of other users or other customers. This embodiment may also allow a user or customer of the system to store databases privately without having to rely on the public internet 754 for storage, which may not have the desired level of security.
[0110] In another embodiment, the LB subnet 722 included in the control plane VCN 716 may be configured to receive signals from the service gateway 736. In this embodiment, the control plane VCN 716 and the data plane VCN 718 may be configured to be called by customers of the IaaS provider without calling the public internet 754. Customers of the IaaS provider may desire this embodiment because databases used by the customers may be stored on the service tenancy 719, which may be controlled by the IaaS provider and isolated from the public internet 754.
[0111] 8 is a block diagram 800 illustrating another example pattern of an IaaS architecture according to at least one embodiment. A service operator 802 (e.g., service operator 702 of FIG. 7) may be communicatively coupled to a secure host tenancy 804 (e.g., secure host tenancy 704 of FIG. 7), which may include a virtual cloud network (VCN) 806 (e.g., VCN 706 of FIG. 7) and a secure host subnet 808 (e.g., secure host subnet 708 of FIG. 7). VCN 806 may include a local peering gateway (LPG) 810 (e.g., LPG 710 of FIG. 7), which may be communicatively coupled to a secure shell (SSH) VCN 812 (e.g., SSH VCN 712 of FIG. 7) via an LPG 710 included in SSH VCN 812. SSH VCN 812 may include an SSH subnet 814 (e.g., SSH subnet 714 in FIG. 7 ), and SSH VCN 812 may be communicatively coupled to a control plane VCN 816 (e.g., control plane VCN 716 in FIG. 7 ) via an LPG 810 included in control plane VCN 816. Control plane VCN 816 may be included in service tenancy 819 (e.g., service tenancy 719 in FIG. 7 ), and data plane VCN 818 (e.g., data plane VCN 718 in FIG. 7 ) may be included in customer tenancy 821, which may be owned or operated by a user or customer of the system.
[0112] The control plane VCN 816 may include a control plane DMZ tier 820 (e.g., control plane DMZ tier 720 of FIG. 7 ) that may include a LB subnet 822 (e.g., LB subnet 722 of FIG. 7 ), a control plane app tier 824 (e.g., control plane app tier 724 of FIG. 7 ) that may include an app subnet 826 (e.g., app subnet 726 of FIG. 7 ), and a control plane data tier 828 (e.g., control plane data tier 728 of FIG. 7 ) that may include a database (DB) subnet 830 (e.g., similar to DB subnet 730 of FIG. 7 ). The LB subnet 822 included in the control plane DMZ layer 820 may be communicatively coupled to an app subnet 826 included in the control plane app layer 824 and to an Internet gateway 834 (e.g., Internet gateway 734 in FIG. 7 ) that may be included in the control plane VCN 816, and the app subnet 826 may be communicatively coupled to a DB subnet 830 included in the control plane data layer 828, to a service gateway 836 (e.g., service gateway in FIG. 7 ), and to a network address translation (NAT) gateway 838 (e.g., NAT gateway 738 in FIG. 7 ). The control plane VCN 816 may include the service gateway 836 and the NAT gateway 838.
[0113] Control plane VCN 816 may include a data plane mirror app layer 840 (e.g., data plane mirror app layer 740 of FIG. 7 ), which may include an app subnet 826. The app subnet 826 included in data plane mirror app layer 840 may include a virtual network interface controller (VNIC) 842 (e.g., VNIC 742) that may run a compute instance 844 (e.g., similar to compute instance 744 of FIG. 7 ). Compute instance 844 may facilitate communication between app subnet 826 in data plane mirror app layer 840 and app subnet 826 that may be included in data plane app layer 846 (e.g., data plane app layer 746 of FIG. 7 ), via VNIC 842 included in data plane mirror app layer 840 and VNIC 842 included in data plane app layer 846.
[0114] An internet gateway 834 included in the control plane VCN 816 may be communicatively coupled to a metadata management service 852 (e.g., metadata management service 752 in FIG. 7), which may be communicatively coupled to the public internet 854 (e.g., public internet 754 in FIG. 7). The public internet 854 may be communicatively coupled to a NAT gateway 838 included in the control plane VCN 816. A service gateway 836 included in the control plane VCN 816 may be communicatively coupled to cloud services 856 (e.g., cloud services 756 in FIG. 7).
[0115] In some examples, the data plane VCN 818 may be included in the customer tenancy 821. In this case, the IaaS provider may provide a control plane VCN 816 for each customer, and the IaaS provider may set up a unique compute instance 844, included in the service tenancy 819, for each customer. Each compute instance 844 may enable communication between the control plane VCN 816 included in the service tenancy 819 and the data plane VCN 818 included in the customer tenancy 821. The compute instance 844 may enable resources provisioned in the control plane VCN 816 included in the service tenancy 819 to be deployed or otherwise used in the data plane VCN 818 included in the customer tenancy 821.
[0116] In another example, a customer of the IaaS provider may have a database residing in customer tenancy 821. In this example, control plane VCN 816 may include a data plane mirrored app tier 840, which may include app subnet 826. Data plane mirrored application tier 840 may reside within data plane VCN 818, but data plane mirrored application tier 840 may not reside within data plane VCN 818. That is, data plane mirrored application tier 840 may have access to customer tenancy 821, but data plane mirrored application tier 840 may not reside within data plane VCN 818 or be owned or operated by the IaaS provider's customer. Data plane mirrored application tier 840 may be configured to make calls to data plane VCN 818, but may not be configured to make calls to any entities included in control plane VCN 816. A customer may desire to deploy or otherwise use resources in the data plane VCN 818 that are provisioned in the control plane VCN 816, and the data plane mirror application layer 840 may facilitate the desired deployment or other use of the customer's resources.
[0117] In some embodiments, the IaaS provider's customer may apply filters to the data plane VCN 818. In this embodiment, the customer may determine what the data plane VCN 818 can access, and the customer may restrict access from the data plane VCN 818 to the public internet 854. The IaaS provider may not be able to filter or otherwise control the data plane VCN 818's access to any external networks or databases. Applying filters and controls by the customer on the data plane VCN 818 included in the customer tenancy 821 can help isolate the data plane VCN 818 from other customers and the public internet 854.
[0118] In some embodiments, cloud services 856 may be called by service gateway 836 to access services that may not reside on the public internet 854, on control plane VCN 816, or on data plane VCN 818. The connection between cloud services 856 and control plane VCN 816 or data plane VCN 818 may not be live or continuous. Cloud services 856 may reside on different networks owned or operated by the IaaS provider. Cloud services 856 may be configured to receive calls from service gateway 836 and may not be configured to receive calls from the public internet 854. Some cloud services 856 may be isolated from other cloud services 856, and control plane VCN 816 may be isolated from cloud services 856 that may not be in the same region as control plane VCN 816. For example, control plane VCN 816 may be located in “Region 1,” and cloud service “Deployment 7” may be located in Region 1 and “Region 2.” If a call to deployment 7 is made by service gateway 836 included in control plane VCN 816 located in region 1, the call may be transmitted to deployment 7 in region 1. In this example, control plane VCN 816, or deployment 7 in region 1, may not be communicatively coupled to or otherwise in communication with deployment 7 in region 2.
[0119] 9 is a block diagram 900 illustrating another example pattern of an IaaS architecture according to at least one embodiment. A service operator 902 (e.g., service operator 702 of FIG. 7) may be communicatively coupled to a secure host tenancy 904 (e.g., secure host tenancy 704 of FIG. 7), which may include a virtual cloud network (VCN) 906 (e.g., VCN 706 of FIG. 7) and a secure host subnet 908 (e.g., secure host subnet 708 of FIG. 7). VCN 906 may include an LPG 910 (e.g., LPG 710 of FIG. 7), which may be communicatively coupled to an SSH VCN 912 (e.g., SSH VCN 712 of FIG. 7) via the LPG 910 included in the SSH VCN 912. SSH VCN 912 may include an SSH subnet 914 (e.g., SSH subnet 714 in FIG. 7 ), which may be communicatively coupled to a control plane VCN 916 via an LPG 910 included in the control plane VCN 916 (e.g., control plane VCN 716 in FIG. 7 ) and to a data plane VCN 918 via an LPG 910 included in the data plane VCN 918 (e.g., data plane 718 in FIG. 7 ). The control plane VCN 916 and the data plane VCN 918 may be included in a service tenancy 919 (e.g., service tenancy 719 in FIG. 7 ).
[0120] The control plane VCN 916 may include a control plane DMZ tier 920 (e.g., control plane DMZ tier 720 of FIG. 7 ) that may include a load balancer (LB) subnet 922 (e.g., LB subnet 722 of FIG. 7 ), a control plane app tier 924 (e.g., control plane app tier 724 of FIG. 7 ) that may include an app subnet 926 (e.g., similar to app subnet 726 of FIG. 7 ), and a control plane data tier 928 (e.g., control plane data tier 728 of FIG. 7 ) that may include a DB subnet 930. The LB subnet 922 included in the control plane DMZ layer 920 may be communicatively coupled to an app subnet 926 included in the control plane app layer 924 and to an internet gateway 934 (e.g., internet gateway 734 in FIG. 7 ) that may be included in the control plane VCN 916, and the app subnet 926 may be communicatively coupled to a DB subnet 930 included in the control plane data layer 928, as well as to a service gateway 936 (e.g., service gateway in FIG. 7 ) and a network address translation (NAT) gateway 938 (e.g., NAT gateway 738 in FIG. 7 ). The control plane VCN 916 may include the service gateway 936 and the NAT gateway 938.
[0121] The data plane VCN 918 may include a data plane app layer 946 (e.g., data plane app layer 746 in FIG. 7 ), a data plane DMZ layer 948 (e.g., data plane DMZ layer 748 in FIG. 7 ), and a data plane data layer 950 (e.g., data plane data layer 750 in FIG. 7 ). The data plane DMZ layer 948 may include a LB subnet 922 that may be communicatively coupled to a trusted app subnet 960 and an untrusted app subnet 962 of the data plane app layer 946 and to an Internet gateway 934 included in the data plane VCN 918. The trusted app subnet 960 may be communicatively coupled to a service gateway 936 included in the data plane VCN 918, a NAT gateway 938 included in the data plane VCN 918, and a DB subnet 930 included in the data plane data layer 950. The untrusted app subnet 962 may be communicatively coupled to the service gateway 936 included in the data plane VCN 918 and the DB subnet 930 included in the data plane data layer 950. The data plane data layer 950 may include a DB subnet 930 that may be communicatively coupled to a service gateway 936 included in the data plane VCN 918.
[0122] The untrusted app subnet 962 may include one or more primary VNICs 964(1)-(N), which may be communicatively coupled to tenant virtual machines (VMs) 966(1)-(N). Each tenant VM 966(1)-(N) may be communicatively coupled to a respective app subnet 967(1)-(N), which may be included in a respective container egress VCN 968(1)-(N), which may be included in a respective customer tenancy 970(1)-(N). Each secondary VNIC 972(1)-(N) may facilitate communication between the untrusted app subnet 962 included in the data plane VCN 918 and the app subnet included in the container egress VCN 968(1)-(N). Each container egress VCN 968(1)-(N) may include a NAT gateway 938, which may be communicatively coupled to the public internet 954 (e.g., public internet 754 in FIG. 7 ).
[0123] An internet gateway 934 included in the control plane VCN 916 and in the data plane VCN 918 may be communicatively coupled to a metadata management service 952 (e.g., metadata management system 752 of FIG. 7 ), which may be communicatively coupled to the public internet 954. The public internet 954 may be communicatively coupled to a NAT gateway 938 included in the control plane VCN 916 and in the data plane VCN 918. A service gateway 936 included in the control plane VCN 916 and in the data plane VCN 918 may be communicatively coupled to cloud services 956.
[0124] In some embodiments, data plane VCN 918 may be integrated with customer tenancy 970. This integration may be useful or desirable to an IaaS provider's customer in some cases, such as when they may want support when executing code. A customer may provide code to run that may be disruptive, may communicate with other customer resources, or may otherwise cause undesirable effects. In response, the IaaS provider may determine whether to run the code provided to the IaaS provider by the customer.
[0125] In some examples, a customer of an IaaS provider may grant temporary network access to the IaaS provider and request that a function be attached to data plane layer app 946. The code to perform the function may execute in VMs 966(1)-(N) and may not be configured to run anywhere else on data plane VCN 918. Each VM 966(1)-(N) may be connected to one customer tenancy 970. Each container 971(1)-(N) included in VM 966(1)-(N) may be configured to execute code. In this case, there may be double isolation (e.g., container 971(1)-(N) may execute code, and container 971(1)-(N) may be included in at least VMs 966(1)-(N) included in untrusted app subnet 962), which may help prevent incorrect or otherwise unwanted code from damaging the IaaS provider's network or the network of a different customer. Containers 971(1)-(N) may be communicatively coupled to customer tenancy 970 and may be configured to send or receive data from customer tenancy 970. Containers 971(1)-(N) may not be configured to send or receive data from any other entity in data plane VCN 918. Once code execution is complete, the IaaS provider may kill or otherwise discard containers 971(1)-(N).
[0126] In some embodiments, trusted app subnet 960 may execute code that may be owned or operated by the IaaS provider. In this embodiment, trusted app subnet 960 may be communicatively coupled to DB subnet 930 and may be configured to perform CRUD operations within DB subnet 930. Untrusted app subnet 962 may be communicatively coupled to DB subnet 930, but in this embodiment, the untrusted app subnet may be configured to perform read operations within DB subnet 930. Containers 971(1)-(N) that may be included in each customer's VMs 966(1)-(N) and that may execute code from that customer may not be communicatively coupled to DB subnet 930.
[0127] In other embodiments, the control plane VCN 916 and the data plane VCN 918 may not be directly communicatively coupled. In this embodiment, there may be no direct communication between the control plane VCN 916 and the data plane VCN 918. However, communication may occur indirectly through at least one method. An LPG 910 may be established by an IaaS provider that may facilitate communication between the control plane VCN 916 and the data plane VCN 918. In another example, the control plane VCN 916 or the data plane VCN 918 may make a call to a cloud service 956 through a service gateway 936. For example, a call from the control plane VCN 916 to the cloud service 956 may include a request for a service that may communicate with the data plane VCN 918.
[0128] 10 is a block diagram 1000 illustrating another exemplary pattern of an IaaS architecture, according to at least one embodiment. A service operator 1002 (e.g., service operator 702 of FIG. 7 ) may be communicatively coupled to a secure host tenancy 1004 (e.g., secure host tenancy 704 of FIG. 7 ), which may include a virtual cloud network (VCN) 1006 (e.g., VCN 706 of FIG. 7 ) and a secure host subnet 1008 (e.g., secure host subnet 708 of FIG. 7 ). VCN 1006 may include an LPG 1010 (e.g., LPG 710 of FIG. 7 ), which may be communicatively coupled to an SSH VCN 1012 (e.g., SSH VCN 712 of FIG. 7 ) via the LPG 1010 included in the SSH VCN 1012. SSH VCN 1012 may include SSH subnet 1014 (e.g., SSH subnet 714 in FIG. 7 ), which may be communicatively coupled to control plane VCN 1016 via LPG 1010 included in control plane VCN 1016 (e.g., control plane VCN 716 in FIG. 7 ) and to data plane VCN 1018 via LPG 1010 included in data plane VCN 1018 (e.g., data plane 718 in FIG. 7 ). Control plane VCN 1016 and data plane VCN 1018 may be included in service tenancy 1019 (e.g., service tenancy 719 in FIG. 7 ).
[0129] The control plane VCN 1016 may include a control plane DMZ layer 1020 (e.g., control plane DMZ layer 720 of FIG. 7 ) that may include a LB subnet 1022 (e.g., LB subnet 722 of FIG. 7 ), a control plane app layer 1024 (e.g., control plane app layer 724 of FIG. 7 ) that may include an app subnet 1026 (e.g., app subnet 726 of FIG. 7 ), and a control plane data layer 1028 (e.g., control plane data layer 728 of FIG. 7 ) that may include a DB subnet 1030 (e.g., DB subnet 930 of FIG. 9 ). The LB subnet 1022 included in the control plane DMZ tier 1020 may be communicatively coupled to an app subnet 1026 included in the control plane app tier 1024 and to an Internet gateway 1034 (e.g., Internet gateway 734 in FIG. 7 ) that may be included in the control plane VCN 1016, and the app subnet 1026 may be communicatively coupled to a DB subnet 1030 included in the control plane data tier 1028 and to a service gateway 1036 (e.g., service gateway in FIG. 7 ) and a network address translation (NAT) gateway 1038 (e.g., NAT gateway 738 in FIG. 7 ). The control plane VCN 1016 may include the service gateway 1036 and the NAT gateway 1038.
[0130] The data plane VCN 1018 may include a data plane app layer 1046 (e.g., data plane app layer 746 in FIG. 7 ), a data plane DMZ layer 1048 (e.g., data plane DMZ layer 748 in FIG. 7 ), and a data plane data layer 1050 (e.g., data plane data layer 750 in FIG. 7 ). The data plane DMZ layer 1048 may include a LB subnet 1022 that may be communicatively coupled to a trusted app subnet 1060 (e.g., trusted app subnet 960 in FIG. 9 ) and an untrusted app subnet 1062 (e.g., untrusted app subnet 962 in FIG. 9 ) of the data plane app layer 1046 and to an Internet gateway 1034 included in the data plane VCN 1018. The trusted app subnet 1060 may be communicatively coupled to a service gateway 1036 included in the data plane VCN 1018, a NAT gateway 1038 included in the data plane VCN 1018, and a DB subnet 1030 included in the data plane data layer 1050. The untrusted app subnet 1062 may be communicatively coupled to a service gateway 1036 included in the data plane VCN 1018 and a DB subnet 1030 included in the data plane data layer 1050. The data plane data layer 1050 may include a DB subnet 1030 that may be communicatively coupled to a service gateway 1036 included in the data plane VCN 1018.
[0131] The untrusted app subnet 1062 may include primary VNICs 1064(1)-(N), which may be communicatively coupled to tenant virtual machines (VMs) 1066(1)-(N) residing within the untrusted app subnet 1062. Each tenant VM 1066(1)-(N) may execute code in a respective container 1067(1)-(N), which may be communicatively coupled to the app subnet 1026, which may be included in a data plane app tier 1046, which may be included in a container egress VCN 1068. Each secondary VNIC 1072(1)-(N) may facilitate communication between the untrusted app subnet 1062, which is included in the data plane VCN 1018, and the app subnet included in the container egress VCN 1068. The container egress VCN may include a NAT gateway 1038, which may be communicatively coupled to the public internet 1054 (e.g., public internet 754 of FIG. 7 ).
[0132] An internet gateway 1034 included in the control plane VCN 1016 and in the data plane VCN 1018 may be communicatively coupled to a metadata management service 1052 (e.g., metadata management system 752 of FIG. 7 ), which may be communicatively coupled to the public internet 1054. The public internet 1054 may be communicatively coupled to a NAT gateway 1038 included in the control plane VCN 1016 and in the data plane VCN 1018. A service gateway 1036 included in the control plane VCN 1016 and in the data plane VCN 1018 may be communicatively coupled to cloud services 1056.
[0133] In some examples, the pattern illustrated by the architecture of block diagram 1000 in FIG. 10 may be considered an exception to the pattern illustrated by the architecture of block diagram 900 in FIG. 9 , which may be desirable for an IaaS provider's customers when the IaaS provider cannot communicate directly with the customer (e.g., in a disconnected area). Each container 1067(1)-(N) contained in a VM 1066(1)-(N) for each customer may be accessed by the customer in real time. The containers 1067(1)-(N) may be configured to make calls to each secondary VNIC 1072(1)-(N) contained in the app subnet 1026 of the data plane app tier 1046, which may be contained in the container egress VCN 1068. The secondary VNICs 1072(1)-(N) may send the calls to a NAT gateway 1038, which may send the calls to the public Internet 1054. In this example, containers 1067(1)-(N) that may be accessed in real time by a customer may be isolated from control plane VCN 1016 and may be isolated from other entities included in data plane VCN 1018. Containers 1067(1)-(N) may also be isolated from resources from other customers.
[0134] In another example, a customer may invoke cloud service 1056 using containers 1067(1)-(N). In this example, the customer may execute code within containers 1067(1)-(N) that requests a service from cloud service 1056. Containers 1067(1)-(N) may send the request to secondary VNICs 1072(1)-(N), which may send the request to a NAT gateway, which may send the request to the public Internet 1054. The public Internet 1054 may send the request to LB subnet 1022, which is included in control plane VCN 1016, via Internet gateway 1034. In response to determining that the request is valid, the LB subnet 1026 may send the request to app subnet 1026, which may send the request to cloud service 1056 via service gateway 1036.
[0135] It should be appreciated that the illustrated IaaS architectures 700, 800, 900, 1000 may have components other than those shown. Additionally, the illustrated embodiments are only a few examples of cloud infrastructure systems that may incorporate embodiments of the present disclosure. In some other embodiments, the IaaS systems may have more or fewer components than those shown, may combine two or more components, or may have a different configuration or arrangement of components.
[0136] In one embodiment, the IaaS system described herein may include a suite of application, middleware, and database service offerings that are self-service, subscription-based, elastically scalable, reliable, highly available, and securely delivered to customers. An example of such an IaaS system is Oracle Cloud Infrastructure (OCI), offered by the present assignee.
[0137] 11 illustrates an exemplary computer system 1100 upon which various embodiments may be implemented. System 1100 may be used to implement any of the computer systems described above. As shown in the figure, computer system 1100 includes a processing unit 1104 that communicates with several peripheral subsystems via a bus subsystem 1102. These peripheral subsystems may include a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, and a communication subsystem 1124. Storage subsystem 1118 includes a tangible computer-readable storage medium 1122 and a system memory 1110.
[0138] Bus subsystem 1102 provides a mechanism for allowing the various components and subsystems of computer system 1100 to communicate with each other as intended. While bus subsystem 1102 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 1102 may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard.
[0139] The processing unit 1104 may be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers) and controls the operation of the computer system 1100. One or more processors may be included in the processing unit 1104. These processors may include single-core processors or multi-core processors. In particular embodiments, the processing unit 1104 may be implemented as one or more independent processing units 1132 and / or 1134, with each processing unit including a single-core processor or a multi-core processor. In other embodiments, the processing unit 1104 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.
[0140] In various embodiments, processing unit 1104 may execute various programs in response to program code and may maintain multiple simultaneously executing programs or processes. At any given time, some or all of the program code to be executed may reside in processor 1104 and / or storage subsystem 1118. Through suitable programming, processor 1104 may provide the various functionality described above. Computer system 1100 may further include a processing acceleration unit 1106, which may include a digital signal processor (DSP), special purpose processor, etc.
[0141] The I / O subsystem 1108 may include user interface input devices and user interface output devices. User interface input devices may include a keyboard, a pointing device such as a mouse or trackball, a touchpad or touchscreen integrated into a display, a scroll wheel, a click wheel, a dial, buttons, switches, a keypad, a voice input device with a voice command recognition system, a microphone, and other types of input devices. User interface input devices may include, for example, a motion-sensing and / or gesture-recognition device such as a Microsoft Kinect® motion sensor that allows a user to control and interact with an input device such as a Microsoft Xbox® 360 game controller through a natural user interface using gestures and spoken commands. User interface input devices may also include an eye-gesture recognition device such as a Google Glass® blink detector that detects eye movements from a user (e.g., “blinking” while taking a picture and / or making a menu selection) and translates the eye gesture as input to an input device (e.g., Google Glass®). Additionally, the user interface input devices may include voice recognition sensing devices that allow a user to interact with a voice recognition system (e.g., the Siri® navigator) via voice commands.
[0142] User interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tablets, as well as audio / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers 3D scanners, 3D printers, laser range finders, and eye-tracking devices. In addition, user interface input devices may include medical imaging input devices such as, for example, computed tomography, magnetic resonance imaging, positron emission tomography, medical ultrasound machines, etc. User interface input devices may also include audio input devices such as, for example, MIDI keyboards, digital musical instruments, etc.
[0143] User interface output devices may include non-visual displays such as a display subsystem, indicator lights, or audio output devices. The display subsystem may be a flat panel device such as one using a cathode ray tube (CRT), a liquid crystal display (LCD), or a plasma display, a projection device, a touch screen, etc. In general, use of the term "output device" is intended to include all conceivable types of devices and mechanisms for outputting information from computer system 1100 to a user or to another computer. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / visual information, such as monitors, printers, speakers, headphones, automobile navigation systems, plotters, audio output devices, and modems.
[0144] Computer system 1100 may include a storage subsystem 1118 that includes software elements currently shown as located in system memory 1110. System memory 1110 may store program instructions that are loadable and executable on processing unit 1104, as well as data generated during the execution of these programs.
[0145] Depending on the configuration and type of computer system 1100, system memory 1110 may be volatile (such as random access memory (RAM)) and / or non-volatile (such as read-only memory (ROM), flash memory, etc.). RAM typically contains data and / or program modules that are immediately accessible to and / or presently being operated on and executed by the processing unit 1104. In some implementations, system memory 1110 may include a number of different types of memory, such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementations, a basic input / output system (BIOS), containing basic routines that help to transfer information between elements within computer system 1100, such as during start-up, may typically be stored in ROM. By way of example and not limitation, system memory 1110 also illustrates application programs 1112, program data 1114, and operating system 1116, which may include client applications, a web browser, a middle-tier application, a relational database management system (RDBMS), etc. By way of example, operating system 1116 may include various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux® operating systems, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® 11 OS, and Palm® OS operating systems.
[0146] The storage subsystem 1118 may also provide a tangible, computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. Software (programs, code modules, instructions) that, when executed by a processor, provide the functionality described above may be stored in the storage subsystem 1118. These software modules or instructions may be executed by the processing unit 1104. The storage subsystem 1118 may also provide a repository for storing data used in accordance with the present disclosure.
[0147] Storage subsystem 1100 may also include computer-readable storage medium reader 1120, which may be further connected to computer-readable storage medium 1122. Along with, and optionally in combination with, system memory 1110, computer-readable storage medium 1122 may collectively represent remote, local, fixed, and / or removable storage devices plus storage media for temporarily and / or more permanently containing, storing, transmitting, and retrieving computer-readable information.
[0148] The computer-readable storage medium 1122 containing the code or portions of code can also include any suitable medium known or used in the art, including, but not limited to, storage media and communication media, such as volatile and nonvolatile, removable and non-removable media implemented in any method or technology for information storage and / or transmission. This may include tangible computer-readable storage media, such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage, or other tangible computer-readable medium. This also includes non-tangible computer-readable media, such as a data signal, data transmission, or any other medium that can be used to transmit desired information and that can be accessed by computing system 1100.
[0149] By way of example, the computer-readable storage medium 1122 may include a hard disk drive that reads and writes to non-removable, non-volatile magnetic media, a magnetic disk drive that reads and writes to removable, non-volatile magnetic disks, an optical disk drive that reads and writes to removable, non-volatile optical disks such as CD-ROMs, DVDs, and Blu-Ray® disks, or other optical media. The computer-readable storage medium 1122 may include, but is not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD disks, digital video tapes, etc. The computer-readable storage medium 1122 may also include flash memory-based SSDs, enterprise flash drives, solid-state drives (SSDs) based on non-volatile memory such as solid-state ROM, SSDs based on volatile memory such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computer system 1100.
[0150] The communications subsystem 1124 provides an interface to other computer systems and networks. The communications subsystem 1124 serves as an interface for sending and receiving data between other systems and the computer system 1100. For example, the communications subsystem 1124 may enable the computer system 1100 to connect to one or more devices via the Internet. In some embodiments, the communications subsystem 1124 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technologies such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.11 family of standards, or other mobile communications technologies, or any combination thereof), a global positioning system (GPS) receiver component, and / or other components. In some embodiments, the communications subsystem 1124 can provide wired network connectivity (e.g., Ethernet) in addition to or instead of a wireless interface.
[0151] In some embodiments, the communications subsystem 1124 may also receive incoming communications in the form of structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., on behalf of one or more users who may be using the computer system 1100.
[0152] By way of example, the communications subsystem 1124 may be configured to receive data feeds 1126 in real time from users of social networks and / or other communications services, such as web feeds such as Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party sources.
[0153] Additionally, the communications subsystem 1124 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 1128 of real-time events and / or event updates 1130, which may be continuous or infinite in nature with no explicit termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc.
[0154] The communications subsystem 1124 may also be configured to output structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc. to one or more databases that may communicate with one or more streaming data source computers coupled to the computer system 1100.
[0155] The computer system 1100 can be one of a variety of types, including a handheld portable device (e.g., an iPhone® mobile phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a PC, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system.
[0156] Due to the ever-changing nature of computers and networks, the description of computer system 1100 shown in the figure is intended merely as a specific example. Many other configurations are possible, having more or fewer components than the system depicted in the figure. For example, customized hardware might also be used, and / or particular elements might be implemented in hardware, firmware, software (including applets), or a combination. Furthermore, connections to other computing devices, such as network input / output devices, might be employed. Based on the disclosure and teachings provided herein, those skilled in the art will recognize other aspects and / or methods for implementing various embodiments.
[0157] While specific embodiments have been described, various modifications, variations, alternative configurations, and equivalents are encompassed within the scope of the present disclosure. The embodiments are not limited to operation in one particular data processing environment, but can freely operate in multiple data processing environments. In addition, while the embodiments are described using a particular sequence of transactions and steps, it should be apparent to those skilled in the art that the scope of the present disclosure is not limited to the described sequence of transactions and steps. Various features and aspects of the above-described embodiments may be used individually or together.
[0158] Furthermore, while embodiments have been described using particular combinations of hardware and software, it should be recognized that other combinations of hardware and software are within the scope of the present disclosure. Embodiments may be implemented exclusively in hardware, exclusively in software, or using a combination thereof. The various processes described herein may be implemented on the same processor or any combination of different processors. Thus, when a component or module is described as being configured to perform certain operations, such configuration may be achieved, for example, by designing electronic circuitry to perform the operations, programming a programmable electronic circuit (such as a microprocessor) to perform the operations, or any combination thereof. Processes may communicate using various techniques, including, but not limited to, conventional techniques for inter-process communication; different pairs of processes may use different techniques, and the same pair of processes may use different techniques at different times.
[0159] Accordingly, the specification and drawings should be regarded in an illustrative rather than a restrictive sense. It will be apparent, however, that additions, subtractions, deletions, and other modifications and changes may be made without departing from the broader spirit and scope of the appended claims. Accordingly, while certain disclosed embodiments have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the appended claims.
[0160] The use of the words "a," "an," and "the" and similar referents in the context of describing the disclosed embodiments (particularly in the context of the claims) should be construed to encompass both the singular and the plural unless otherwise indicated herein or clearly contradicted by context. The words "comprising," "having," "including," and "containing" should be construed as open-ended (i.e., meaning "including, but not limited to") unless otherwise noted. The word "connected" should be construed as partially or wholly contained within, attached to, or joined together, even if there is something intervening. The recitation of ranges of values herein, unless otherwise indicated herein, is intended merely to serve as a shorthand method of referring individually to each separate value falling within the range, and each separate value is incorporated herein as if it were individually set forth herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or clearly contradicted by context. Any and all examples provided herein, or the use of exemplary language (e.g., "etc."), are intended merely to better describe the embodiments and do not limit the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure.
[0161] Disjunctive language such as the phrase "at least one of X, Y, or Z" is intended to be understood within the context in which it is generally used to indicate that an item, term, etc. may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z), unless specifically stated otherwise. Thus, such disjunctive language is generally not intended to, and should not, encompass that an embodiment requires that at least one of X, at least one of Y, or at least one of Z, respectively, be present.
[0162] Preferred embodiments of the present disclosure are described herein, including the best mode known for carrying out the disclosure. Variations of these preferred embodiments will become apparent to those skilled in the art upon reading the foregoing description. Those skilled in the art should be able to adopt such variations as appropriate, and the present disclosure may be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the present disclosure unless otherwise indicated herein.
[0163] All references cited herein, including publications, patent applications, and patents, are hereby incorporated by reference to the same extent as if each reference was individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
[0164] While the foregoing specification describes aspects of the present disclosure with reference to specific embodiments thereof, those skilled in the art will recognize that the present disclosure is not limited thereto. Various features and aspects of the above disclosure may be used individually or together. Moreover, the embodiments may be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Accordingly, the specification and drawings should be regarded as illustrative rather than restrictive.
Claims
1. 1. A computer-implemented method comprising: a computing service monitoring one or more performance metrics of a set of worker nodes of a computing cluster; detecting a degradation in performance by the computing service indicating a performance metric falls below a performance threshold; In response to detecting that the performance metric falls below the performance threshold, the computing service performs a first adjustment to the number of worker nodes in the set of worker nodes of the computing cluster; and obtaining training data examples for a machine learning model based at least in part on performing the first adjustment, the training data examples including data corresponding to a first time period before the first adjustment and a second time period after the first adjustment, the training data examples including a first performance metric and first cluster metadata associated with the first time period and a second performance metric and second cluster metadata associated with the second time period, the method further comprising: labeling the training data examples based at least in part on determining that the first adjustment to the number of worker nodes corrected the performance degradation, wherein the determining is based at least in part on the first performance metric and the first cluster metadata associated with the first time period and the second performance metric and the second cluster metadata associated with the second time period, the method further comprising: The computing service includes training the machine learning model utilizing the training data examples and a supervised machine learning algorithm, wherein the machine learning model is trained to identify specific adjustments to a set of worker nodes from current performance metrics and current cluster metadata provided as input, and the method further comprises: and the computing service obtaining an output identifying a subsequent adjustment to be made to the set of worker nodes, the subsequent adjustment indicating whether one or more worker nodes will be added to or removed from the set of worker nodes, the output being obtained based at least in part on providing subsequent performance metrics of the computing cluster and subsequent cluster metadata as inputs to the machine learning model, the method further comprising: The computer-implemented method includes the computing service performing the subsequent adjustment on the set of worker nodes based at least in part on the output.
2. 2. The computer-implemented method of claim 1, wherein adjusting the set of worker nodes further includes the computing service generating a scaling task, the scaling task being performed by a computing process, and performing the computing process updating the current cluster metadata associated with the computing cluster upon completion of the scaling task.
3. A computer-implemented method as described in claim 1 or 2, wherein the output indicates how many worker nodes will be added or removed from the computing cluster, and the subsequent adjustments will occur within a predetermined period of time in the future.
4. 4. The computer-implemented method of claim 1, wherein performing the first adjustment or performing the subsequent adjustment comprises increasing the amount of the set of worker nodes or decreasing the amount of the set of worker nodes.
5. 4. The computer-implemented method of claim 1, wherein performing the first adjustment includes provisioning a number of additional worker nodes to the set of worker nodes of the computing cluster.
6. 6. The computer-implemented method of claim 5, further comprising determining that provisioning the number of additional worker nodes resulted in a subsequent performance metric that exceeded the performance threshold, wherein the training data examples are generated in response to determining that the number of additional worker nodes resulted in the subsequent performance metric.
7. 7. The computer-implemented method of claim 1, wherein the one or more performance metrics include at least one of a number of pending queries, a number of pending tasks, a latency measurement, a processing utilization rate, or a memory utilization rate.
8. 1. A computing device comprising: one or more processing devices communicatively coupled to a computer-readable medium; and a computer-readable medium storing non-transitory computer-executable program instructions that, when executed by the one or more processing devices, cause the computing device to perform the method of any one of claims 1 to 7.
9. A program causing a processing device of a computing device to perform the method of any one of claims 1 to 7.
Citation Information
Patent Citations
Auto-scaling hosted machine learning models for production inference
US20190164080A1