Abstract:
Method and system for managing workloads in a cloud computing environment comprising cloud services providers is described. In one embodiment, the method comprises, for each of the cloud services providers, monitoring a situation of the cloud services provider to obtain situation information for the cloud services provider and evaluating the obtained situation information and then deploying an workload to a selected one of the cloud services providers based at least in part on results of the evaluating.

Description:
PRIORITY DATA 
       [0001]    This application claims priority to U.S. Provisional Application Ser. No. 61/160,022 filed on Mar. 13, 2009, entitled “SYSTEM AND METHOD FOR UNIFIED CLOUD MANAGEMENT,” the entire disclosure of which is incorporated by reference.” 
       CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0002]    This application claims the benefit under Title 35, United States Code §119(e) of U.S. Provisional Patent Application No. 61/160,030 filed on Mar. 13, 2009, the disclosure of which is incorporated herein by reference in its entirety. This application is related to the following commonly-assigned, co-pending applications, each of which is also incorporated herein by reference in its entirety: 
         [0003]    1. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.157/IDR-1815); 
         [0004]    2. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.159/IDR-1817); 
         [0005]    3. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.160/IDR-1818); 
         [0006]    4. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.161/IDR-1853); 
         [0007]    5. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.162/IDR-1838); 
         [0008]    6. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.163/IDR-1839); 
         [0009]    7. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.164/IDR-1840); 
         [0010]    8. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.165/IDR-1841); 
         [0011]    9. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.172/IDR-2045); 
         [0012]    10. U.S. patent application Ser. No. ______ (Atty. Docket No. 26530.173/IDR-2046); and 
         [0013]    11. U.S. patent application Ser. No. 12/197,833. 
     
    
     BACKGROUND 
       [0014]    Cloud computing is a type of computing in which dynamically scalable and typically virtualized resources are provided as services via the Internet. As a result, users need not, and typically do not, possess knowledge of, expertise in, or control over the technology and/or infrastructure implemented in the cloud. Cloud computing generally incorporates infrastructure as a service (“IaaS”), platform as a service (“PaaS”), and/or software as a service (“SaaS”). In a typical embodiment, cloud computing services provide common applications online, which applications are accessed using a web browser and the software and data for which are stored on servers comprising the cloud. 
         [0000]    Cloud computing customers typically do not own or possess the physical infrastructure that hosts their software platform; rather, the infrastructure is leased in some manner from a third-party provider. Cloud computing customers can avoid capital expenditures by paying a provider only for what they use on a utility, or resources consumed, basis or a subscription, or time-based, basis, for example. Sharing computing power and/or storage capacity among multiple lessees has many advantages, including improved utilization rates and an increase in overall computer usage. 
         [0015]    The Internet is rapidly spawning a host of “cloud providers” to provide infrastructure, platforms, and software as services. Cloud providers such as Amazon.com (AWS), GoGrid, Eucalyptus, and others are providing a host of new opportunities on the Internet, but have not yet joined forces to provide a common management or execution platform. 
       SUMMARY 
       [0016]    One embodiment is a method for managing workloads in a cloud computing environment comprising a plurality of cloud services providers. The method comprises, for each of the cloud services providers, monitoring a situation of the cloud services provider to obtain situation information for the cloud services provider and evaluating the obtained situation information and then deploying an workload to a selected one of the cloud services providers based at least in part on results of the evaluating. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0017]      FIG. 1  illustrates an exemplary IaaS cloud structure such as may be implemented in one embodiment. 
           [0018]      FIG. 2  is a flow diagram of one embodiment of a process for implementing unified cloud management. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    To better illustrate the advantages and features of the embodiments, a particular description of several embodiments will be provided with reference to the attached drawings. These drawings, and other embodiments described herein, only illustrate selected aspects of the embodiments and are not intended to limit the scope thereof. Further, despite reference to specific features illustrated in the example embodiments, it will nevertheless be understood that these features are not essential to all embodiments and no limitation of the scope thereof is thereby intended. Any alterations and further modifications in the described embodiments, and any further applications of the principles of the embodiments as described herein are contemplated as would normally occur to one skilled in the art. Furthermore, some items are shown in a simplified form, and inherently include components that are well known in the art. Further still, some items are illustrated as being in direct connection for the sake of simplicity and clarity. Despite the apparent direct connection, it is understood that such illustration does not preclude the existence of intermediate components and/or protocols not otherwise illustrated. 
         [0020]    The embodiments described herein provide a mechanism for monitoring and managing enterprise cloud assets across multiple clouds maintained by one or more cloud providers. One or more embodiments described herein provide a method and mechanism to manage reputation, past performance, statistics, and preferences concerning individual cloud providers. Additionally, one or more such embodiments provide a method and mechanism for enabling selection of a cloud provider to be based on past performance and reputation. 
         [0021]      FIG. 1  illustrates an exemplary IaaS cloud structure. As shown in  FIG. 1 , the cloud structure includes a hardware layer  100  comprising storage assets  102 , processing assets  104 , and network assets  106 . To facilitate usefulness of the cloud to a variety of enterprises, workloads are sponsored in the cloud as virtual machines possibly accessing virtualized storage and/or virtualized networks. This is accomplished via a virtualization layer  108 . Thus, the hardware layer  100  is insulated from the actual workloads to be sponsored in the cloud at a layer  110  by the virtualization layer  108  hardware, storage, and networking so that the operating system selected by the enterprise can be sponsored on whatever hardware the cloud provider makes available. Having established the hardware and virtualization layers  100 ,  108 , the assets  102 ,  104 , and  106  are available in a standardized way to workloads hosted in the workload layer  110 , which is the layer the customer typically views as the “cloud”. It will be recognized that some of the workloads sponsored in the cloud, specifically, workloads  111 , are workloads that are germane to the operation of the cloud and may consist of monitoring processes for enabling the cloud provider to monitor the health of the cloud, management processes to enable the cloud provider to ensure that service-level agreements are enforced, and so on. 
         [0022]    Enterprises using the cloud are represented by virtualization processes and storage shown as workloads  112 . These processes are typically started by an enterprise via a cloud portal or API utilized by administrative personnel or processes running at the enterprise or in the cloud. A typical cloud provider may be using standard ITIL practices and may utilize a configuration management database (“CMDB”)  114 , which affects the entire cloud infrastructure and which describes the practice and policies used for instantiating virtualized workloads and storage. 
         [0023]      FIG. 2  is a flow diagram of one embodiment of a process for implementing unified cloud management. As shown in  FIG. 2 , each of one or more situation monitors, represented in  FIG. 2  by two situation monitors  200 ( 1 )- 200 ( 2 ), provides specific mechanisms and methods to monitor one or more cloud services providers  202 ( 1 )- 202 ( 3 ). Each of the situation monitors  200 ( 1 )- 200 ( 2 ) is responsible for implementing the specific mechanisms needed to monitor the reliability, capability, and performance (hereinafter collectively “situation”) of given ones of the cloud services providers  202 ( 1 )- 202 ( 3 ) based on the infrastructure and API set made available by the cloud services provider. Results of such monitoring by the situation monitors  200 ( 1 )- 200 ( 2 ) comprise “situation results.” The situation results are provided to and evaluated by a situation evaluation module  204 , wherein the composite information concerning the situation of each cloud services provider  202 ( 1 )- 202 ( 3 ) as obtained by one of the situation monitors  200 ( 1 )- 200 ( 2 ) is correlated and summarized and placed in a situation information repository  206 . 
         [0024]    In one embodiment, the situation evaluation module  204  also accesses a reputation and history repository  208 , in which correlated and summarized historical reputation and situation information is stored. A situation display  210  is capable of displaying real-time situation information generated by the situation evaluation module  204  and provided to the display via a path  212 . In the illustrated embodiment, information from the situation evaluation module  204  may be aggregated with information received from the situation information repository  206  via a path  214  such that some combination of real-time and summarized/aggregated situation information regarding the cloud services providers  202 ( 1 )- 202 ( 3 ) or workloads being run on the cloud services providers may be presented on the situation display  210 . 
         [0025]    A planning module  216  accesses the information stored in the situation information repository  206  and the reputation and history repository  208 , via paths  218  and  220 , respectively, as well as cloud cost usage information from a cloud cost usage repository  222 , and uses the information to develop a job queue and schedule  224 , wherein workloads are optimally scheduled based on client usage costs from the repository  222 , reputation and history information from the repository  208 , and historical and real-time data from the repository  206 . A deployment trigger module  230  accesses information from the job queue and schedule  224  via a path  232  and ensures that workloads are sent to the cloud services provider designated in the job queue and schedule at the time designated therein. 
         [0026]    In the illustrated embodiment, the deployment trigger module  230  evaluates a current situation in the repository  206  via a path  234  to ensure that any job deployment restrictions declared in the job queue and schedule  224  are enforced. The planning module  216  may send an immediate request to the deployment trigger module  230  via a path  238  in the case of an immediate workload schedule or as an alert that a high-priority or other type of prioritized workload has been added to the job queue and schedule  224  of which the deployment trigger module  230  will need to be aware before its next scheduled evaluation of the job queue and schedule. A deployment manager  240  will then receive an event from the deployment trigger module  230  containing the information necessary to deploy the workload to the appropriate one of the cloud services providers  202 ( 1 )- 202 ( 3 ) via a one or more deploy and harvest modules  242 ( 1 )- 242 ( 2 ). Such deployment may require references to persistent storage  244  that should be associated with the workload. If so, the information is obtained via the persistent storage  244  and communicated to the deploy and harvest module(s)  242 ( 1 )- 242 ( 2 ) so that the deployment via the cloud services providers  202 ( 1 )- 202 ( 3 ) have that information. 
         [0027]    The deploy and harvest modules  242 ( 1 )- 242 ( 2 ) may also communicate with one of the situation monitors  200 ( 1 )- 200 ( 2 ) to alert the situation monitor to the fact that the new workloads are being deployed in one of the cloud services providers  202 ( 1 )- 202 ( 3 ). It will be noted that while only one of the situation monitors (situation monitor  200 ( 1 )) is shown as interacting with the deployment and harvest modules  242 ( 1 )- 242 ( 2 ), they are also communicating with the remaining situation monitors (in this case, the situation monitor  200 ( 2 )). The appropriate one of the cloud services providers  202 ( 1 )- 202 ( 3 ), e.g., the cloud services provider  202 ( 3 ), receives the workload deployment via one of paths  246 ( 1 )- 246 ( 2 ) and deploys it appropriately. 
         [0028]    In the illustrated embodiment, as the workload is being processed by the cloud services provider  202 ( 3 ), the deploy and harvest modules  246 ( 1 )- 246 ( 2 ) may also harvest runtime and/or workload information, which will be placed in either results storage  250  or persistent storage  244  according to the nature of the information. For example, as a workload terminates, the persistent storage designators thereof may be harvested and stored in persistent storage  244  for later use. In one embodiment, results storage  250  contains the results of the workload deployment and execution in the cloud services provider  202 ( 3 ) and deployment manager  240  uses that information to update reputation and history repository  208 . The deployment manager  240  may also be used interactively so that satisfaction indicators concerning the responsiveness of the cloud services provider  202 ( 3 ) and the timeliness of the workload processing can be noted in reputation and history repository  208 . In one embodiment, a completion evaluation module  252  summarizes, weights, and/or normalizes the reputation and history information from the repository  208  as desired. 
         [0029]    In one embodiment, cloud usage costs from the repository  222  may be updated from the cloud services providers  202 ( 1 )- 202 ( 3 ) directly or entered at the enterprise. Cloud usage costs may be influenced by the amount of utilization of the enterprise agrees with the cloud services providers  202 ( 1 )- 202 ( 3 ) to direct towards the cloud services providers during a given time period. 
         [0030]    It will be recognized that various ones of the elements and/or modules described herein may be implemented using one or more general purpose computers or portions thereof executing software applications designed to perform the functions described or using one or more special purpose computers or portions thereof configured to perform the functions described. The software applications may comprise computer-executable instructions stored on computer-readable media. Additionally, the repositories described herein may be implemented using databases or other appropriate storage media. 
         [0031]    It will be recognized that various ones of the elements and/or modules described herein may be implemented using one or more general purpose computers or portions thereof executing software applications designed to perform the functions described or using one or more special purpose computers or portions thereof configured to perform the functions described. The software applications may comprise computer-executable instructions stored on computer-readable media. Additionally, repositories described herein may be implemented using databases or other appropriate storage media. 
         [0032]    While the preceding description shows and describes one or more embodiments, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the present disclosure. For example, various steps of the described methods may be executed in a different order or executed sequentially, combined, further divided, replaced with alternate steps, or removed entirely. In addition, various functions illustrated in the methods or described elsewhere in the disclosure may be combined to provide additional and/or alternate functions. Therefore, the claims should be interpreted in a broad manner, consistent with the present disclosure.