An enterprise may utilize applications or services executing in a cloud computing environment. For example, a business might utilize applications that execute at a data center to process purchase orders, human resources tasks, payroll functions, etc. Such applications may execute via a cloud computing environment to efficient utilize computing resources (e.g., memory, bandwidth, disk usage, etc.). When necessary, the amount of resources allocated to a particular application might be adjusted (e.g., increased or decreased) as appropriate. Note, however, that adjusting resources when not necessary (e.g., by increasing a memory allocation when such an increase is not needed), can be expensive (in terms of computing resources) and time consuming.
It would therefore be desirable to provide resource allocation for cloud-based computing environment applications in an accurate an efficient manner.
Methods and systems may be associated with a cloud computing environment, and a centralized resource provisioning system may associated with a plurality of end-user applications in the cloud-based computing environment. The centralized resource provisioning system may include a policy decision maker that generates a centralized recommendation for a computing resource of a first end-user application. An application decision maker may be associated with the first end-user application and generate a decentralized recommendation for the computing resource of the first end-user application. A machine controller of the centralized resource provisioning system may then arrange to adjust the computing resource for the first end-user application when both the centralized recommendation and the decentralized recommendation indicate that the adjustment is appropriate.
Some embodiments comprise: means for generating, by a policy decision maker of a centralized resource provisioning system associated with a plurality of end-user applications in a cloud-based computing environment, a centralized recommendation for a computing resource of a first end-user application; means for generating, by an application decision maker associated with the first end-user application, a decentralized recommendation for the computing resource of the first end-user application; and means for arranging, by a machine controller of the centralized resource provisioning system, to adjust the computing resource for the first end-user application when both the centralized recommendation and the decentralized recommendation indicate that the adjustment is appropriate.
Other embodiments comprise: means for binding an end-user application to a centralized resource provisioning system associated with a cloud-based computing environment; means for establishing an application decision maker for the end-user application; means for monitoring, by a policy decision maker of the centralized resource provisioning system, to generate a centralized recommendation for a computing resource of the first end-user application; means for receiving, at the application decision maker, the centralized recommendation; if there is a conflict between the centralized recommendation and a decentralized recommendation generated by the application decision maker, means for arranging to adjust the computing resource for the first end-user application based on the decentralized recommendation; and, if there is not conflict between the centralized recommendation and the decentralized recommendation, means for arranging to adjust the computing resource for the first end-user application based on the centralized recommendation.
Some technical advantages of some embodiments disclosed herein are improved systems and methods to provide resource allocation for cloud-based computing environment applications in an accurate an efficient manner.
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of embodiments. However, it will be understood by those of ordinary skill in the art that the embodiments may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the embodiments.
One or more specific embodiments of the present invention will be described below. In an effort to provide a concise description of these embodiments, all features of an actual implementation may not be described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
Note that the efficient allocation of computing resources may be very important in cloud applications. For example,
A predictive autoscaling centralized system 150, in contrast, might instead look at past system 100 behavior and attempt to predict future computing resource needs for the end-user application 110. Such an approach is deterministic in approach and can scale up or down accordingly. However, predictive scaling takes a longer amount of time to tune the model and the quality of the past data set is important for accurate predictions. Although predictive autoscaling can utilize multiple variable to make predictions, it still makes use of a centralized system 150 to ultimately make the resource allocation decision.
Some of the challenges faced by systems that use reactive and/or predictive autoscaling include:
To help avoid these drawbacks, some embodiments described herein may de-centralize the autoscaling component and allow for input from the end-user application before a resource allocation is made. Such an approach may have the following benefits:
The centralized system 250 may store information into and/or retrieve information from various data stores, which may be locally stored or reside remote from the centralized system 250. Although a single centralized system 250, end-user application 210, and application decision maker 220 are shown in
According to some embodiments, an operator or administrator may access the system 200 via a remote device (e.g., a Personal Computer (“PC”), tablet, or smartphone) to view information about and/or manage operational information in accordance with any of the embodiments described herein. In some cases, an interactive graphical user interface display may let an operator or administrator define and/or adjust certain parameters (e.g., to implement various rules and policies) and/or provide or receive automatically generated recommendations or results from the system 200.
At S310, a policy decision maker of a centralized resource provisioning system associated with a plurality of end-user applications in the cloud-based computing environment may generate a centralized recommendation for a “computing resource” of a first end-user application. As used herein, the phrase “computing resource” might refer to, for example, a memory allocation, a Central Processing Unit (“CPU”) allocation, a network bandwidth allocation, a disk allocation, etc. Moreover, the term “application” might refer to, by ways of example only, an Infrastructure-as-a-Service (“IaaS”) or a Platform-as-a-Service (“PaaS”). Note that the centralized recommendation might be based on application logs associated with the first end-user application and could be based on reactive autoscaling, predictive autoscaling, or any other resource provisioning rules or logic.
At S320, an application decision maker associated with the first end-user application may generate a decentralized recommendation for the computing resource of the first end-user application. The decentralized recommendation might be based on reactive autoscaling, predictive autoscaling, or any other resource provisioning rules or logic. At S330, a machine controller of the centralized resource provisioning system may arrange to adjust the computing resource for the first end-user application when both the centralized recommendation and the decentralized recommendation indicate that the adjustment is appropriate. According to some embodiments, the centralized resource provisioning system may also arrange to adjust the computing resource for the first end-user application when the centralized recommendation indicates that the adjustment is appropriate and there is communication failure between the centralized resource provisioning system and the application decision maker.
For example,
In other cases, the application itself might detect that a scale-up is needed due to high memory consumption. Consider the data flow example 600 of
Now consider the situation where a centralized system is unable to communicate with an application decision maker. Consider the data flow example 700 of
Note that the embodiments described herein may be implemented using any number of different hardware configurations. For example,
The processor 910 also communicates with a storage device 930. The storage device 930 can be implemented as a single database or the different components of the storage device 930 can be distributed using multiple databases (that is, different deployment information storage options are possible). The storage device 930 may comprise any appropriate information storage device, including combinations of magnetic storage devices (e.g., a hard disk drive), optical storage devices, mobile telephones, and/or semiconductor memory devices. The storage device 930 stores a program 912 and/or an application decision maker engine 914 for controlling the processor 910. The processor 910 performs instructions of the programs 912, 914, and thereby operates in accordance with any of the embodiments described herein. For example, the processor 910 might implement a policy decision maker that generates a centralized recommendation for a computing resource of a first end-user application. The processor 910 might instead implement an application decision maker that is associated with the first end-user application and generate a decentralized recommendation for the computing resource of the first end-user application. According to some embodiments, the processor 910 will arrange to adjust the computing resource for the first end-user application when both the centralized recommendation and the decentralized recommendation indicate that the adjustment is appropriate.
The programs 912, 914 may be stored in a compressed, uncompiled and/or encrypted format. The programs 912, 914 may furthermore include other program elements, such as an operating system, clipboard application, a database management system, and/or device drivers used by the processor 910 to interface with peripheral devices.
As used herein, information may be “received” by or “transmitted” to, for example: (i) the platform 900 from another device; or (ii) a software application or module within the platform 900 from another software application, module, or any other source.
In some embodiments (such as the one shown in
Referring to
The application identifier 1002 might be a unique alphanumeric label or link that is associated with an end-user application that is executing in a cloud-based computing environment. The centralized recommendation 1004 might be result of a policy decision that uses reactive or proactive techniques to detect a potential change in computing resource requirements (e.g., a CPU allocation, a disk allocation, etc.) and could indicate, for exchange, that a change is needed (e.g., an increase or decrease) or that a change is not needed. The local application recommendation 1006 might be result of an application decision maker that uses reactive or proactive techniques to detect a potential change in computing resource requirements and could indicate, for exchange, that a change is needed or that a change is not needed. The decision 1008 may represent the final action that the system has determined to take with respect to the change in resource allocation. For example, the decision 1008 indicate that the change will be made (e.g., when both the centralized recommendation 1004 and local application recommendation 1006 indicate that the change is appropriate) or that no change was made.
At S1130, an autoscaling policy decision maker may monitor all logs of the application, as per the policy enrolled by the application, make a decision, and send that decision to the application. For example, a policy decision maker of the centralized resource provisioning system may monitor logs to generate a centralized recommendation for a computing resource of the first end-user application. Note that the application decision maker may function as a communicator between the application and the policy decision maker. At S1140, the application decision maker receives the decision from the policy maker.
The application decision maker may behave as per autoscaling policy maker's decision. If there is a conflict between decision by central system and the application, embodiments may give priority to the application decision. That is, if there is a conflict between the centralized recommendation and a decentralized recommendation generated by the application decision maker at S1150, the system may arrange to adjust the computing resource for the first end-user application based on the decentralized recommendation at S1170. If there is not conflict between the centralized recommendation and the decentralized recommendation at S1150, the system arrange to adjust the computing resource for the first end-user application based on the centralized recommendation at S1160. In cases where application decision maker is unable to connect to centralized system (or vice versa), after a timeout period a decision might be made in accordance with either the centralized system or the application. According to some embodiments, the proposed algorithm of
Thus, embodiments may provide resource allocation for cloud-based computing environment applications in an accurate an efficient manner. This may help reduce false scale-ups and/or scale-downs of resources and saving cloud resources (thus more effectively using the resources available to the application). Such an approach may save the extra costs than can be caused by the unnecessary use of autoscaling.
The following illustrates various additional embodiments of the invention. These do not constitute a definition of all possible embodiments, and those skilled in the art will understand that the present invention is applicable to many other embodiments. Further, although the following embodiments are briefly described for clarity, those skilled in the art will understand how to make any changes, if necessary, to the above-described apparatus and methods to accommodate these and other embodiments and applications.
Although specific hardware and data configurations have been described herein, note that any number of other configurations may be provided in accordance with some embodiments of the present invention (e.g., some of the information associated with the databases described herein may be combined or stored in external systems). Moreover, although some embodiments are focused on particular types of applications and services, any of the embodiments described herein could be applied to other types of applications and services. In addition, the displays shown herein are provided only as examples, and any other type of user interface could be implemented. For example,
The present invention has been described in terms of several embodiments solely for the purpose of illustration. Persons skilled in the art will recognize from this description that the invention is not limited to the embodiments described, but may be practiced with modifications and alterations limited only by the spirit and scope of the appended claims.