Patent Publication Number: US-2010125669-A1

Title: System, Method, and Software for Object-Based Cloud Computing Management

Description:
RELATED APPLICATIONS 
     This application claims the benefit under 35 U.S.C. §119(e) of the priority of U.S. Provisional Application No. 61/114,876 filed Nov. 14, 2008, entitled “System, Method, and Software for Object-Based Cloud Computing Management and Reference Architecture.” 
    
    
     TECHNICAL FIELD 
     The present invention relates generally to computer management, and more particularly to a system, method, and software for object-based cloud computing management. 
     BACKGROUND 
     Cloud computing systems include computing resources. For example, cloud computing systems may include servers, network storage devices, and other information technology (IT) services. Cloud computing systems include proprietary interfaces to access their respective computing resources. 
     SUMMARY 
     According to the present invention, disadvantages and problems associated with previous techniques for managing cloud computing systems may be reduced or eliminated. 
     In certain embodiments, a method for managing cloud computing systems includes establishing a connection between a cloud computing interface and cloud computing systems. Each of the cloud computing systems includes computing resources accessible by a proprietary interface. The cloud computing interface includes object methods that abstract the proprietary interface of each of the cloud computing systems. The method further includes receiving a request to perform an operation on one or more of the cloud computing systems. The method further includes provisioning at least one object method to implement the request. 
     Certain embodiments of the present invention may provide one or more technical advantages. Conventional cloud computing systems include computing resources and each provider may provide access to the computing resources in a slightly different way. Similar to other emerging technologies, providers of cloud computing systems have created proprietary interfaces to these technologies. Customers may select a particular cloud computing system to avoid dealing with inconsistent and different interfaces and, therefore, are limited to only the capabilities provided by the chosen cloud computing system. According to certain embodiments of the present invention, a cloud computing interface addresses these challenges by providing a uniform means for discovery, monitoring, and management of such environments. The cloud computing interface provides an abstraction layer for the cloud computing systems. The abstraction layer provides a standard communication interface to the cloud computing systems. As a result, certain embodiments of the present invention provide a uniform interface to these cloud computing systems so that they can be used, monitored, and managed in a uniform manner regardless of environment or resources provided. Thus, the possibilities for customers to use cloud computing systems may be expanded and the total cost of ownership may be reduced. 
     Certain embodiments of the present invention may include some, all, or none of the above advantages. One or more other technical advantages may be readily apparent to those skilled in the art from the figures, descriptions, and claims included herein. Moreover, while specific advantages have been enumerated above, various embodiments may include all, some, or none of the enumerated advantages. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which: 
         FIG. 1  illustrates an example system for managing cloud computing systems, according to certain embodiments of the present invention; 
         FIG. 2  illustrates example details of the cloud computing interface of  FIG. 1 , according to certain embodiments of the present invention; 
         FIG. 3  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to add a resource, according to certain embodiments of the present invention; 
         FIG. 4  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to select a machine image, according to certain embodiments of the present invention; 
         FIG. 5  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to display a resource summary, according to certain embodiments of the present invention; 
         FIG. 6  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to configure a resource profile, according to certain embodiments of the present invention; 
         FIG. 7  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to configure resource components, according to certain embodiments of the present invention; 
         FIG. 8  illustrates one embodiment of an example display that may be generated by the cloud computing interface of  FIGS. 1 and 2  to allow a user to identify changes to resources, according to certain embodiments of the present invention; and 
         FIG. 9  illustrates an example method for managing cloud computing systems, according to certain embodiments of the present invention. 
     
    
    
     DESCRIPTION OF EXAMPLE EMBODIMENTS 
       FIG. 1  illustrates an example system  100  for managing cloud computing systems, according to certain embodiments of the present invention. System  100  may include one or more user systems  102  and one or more administrative systems  104 , one or more server systems  106 , one or more cloud computing systems  108  and  110 , and a network  112 . Although this particular implementation of system  100  is illustrated and primarily described, the present invention contemplates any suitable implementation of system  100  according to particular needs. 
     In general, system  100  is operable to manage cloud computing systems. In certain embodiments, system  100  includes an abstraction layer for discovery, monitoring, and configuration of such cloud computing systems. The abstraction layer may include a standard communication interface to the cloud computing systems. As described in more detail below, the standard communication interface facilitates management of cloud computing systems in a uniform manner regardless of provider. 
     System  100  may include one or more user systems  102  and one or more administrative systems  104 . “User system  102 ” and “user of user system  102 ” may be used interchangeably. A user of user system  102  may include, for example, a human user or a computer program or other suitable software module for automatically interacting with user system  102 . Likewise, “administrative system  104 ” and “user of administrative system  104 ” may be used interchangeably. A user of administrative system  104  may include, for example, a human user or a computer program or other suitable software module for automatically interacting with administrative system  104 . 
     Each user system  102  and administrative system  104  may include one or more computer systems at one or more locations. Each computer system may include any appropriate input devices (such as a keypad, touch screen, mouse, or other device that can accept information), output devices, mass storage media, or other suitable components for receiving, processing, storing, and communicating data. Both the input device and output device may include fixed or removable storage media such as a magnetic computer disk, CD-ROM, or other suitable media to both receive input from and provide output to a user of administrative system  104 . Each computer system may include a personal computer, workstation, network computer, kiosk, wireless data port, personal data assistant (PDA), one or more processors within these or other devices, or any other suitable processing device. As an example, system  100  may include multiple distributed user systems  102  and/or administrative systems  104 . User systems  102  and administrative systems  104  may be physically distributed, being in different locations geographically remote from each other and from the other components of system  100 , or logically distributed, being at approximately the same location as other user systems  102  and administrative systems  104  and the other components of system  100 . For simplicity, the one or more user systems  102  and administrative systems  104  of system  100  are referred to throughout this description primarily in the singular. Although user system  102  and administrative system  104  are illustrated and primarily described as being separate, it is understood that the computer systems and the functionality associated with user system  102  and administrative system  104  may be combined or separated in any suitable manner. 
     System  100  may include one or more server systems  106 , referred to primarily in the singular throughout the remainder of this description. Server system  106  may include one or more electronic computing devices operable to receive, transmit, process, and store data associated with system  100 . For example, server system  106  may include one or more general-purpose PCs, Macintoshes, workstations, Unix-based computers, server computers, one or more server pools, or any other suitable devices. In certain embodiments, server system  106  includes a web server. In short, server system  106  may include any suitable combination of software, firmware, and hardware. Although a single server system  106  is illustrated, the present invention contemplates system  100  including any suitable number of server systems  106 . Moreover, although referred to as a “server system,” the present invention contemplates server system  106  comprising any suitable type of processing device or devices. 
     Server system  106  may be communicatively coupled to cloud computing systems  108  and  110  via network  112 . Although not illustrated, user system  102  and administrative system  104  may be communicatively coupled to one another as well as to server system  106  via network  112 . Network  112  facilitates wireless or wireline communication. Network  112  may communicate, for example, IP packets, Frame Relay frames, Asynchronous Transfer Mode (ATM) cells, voice, video, data, and other suitable information between network addresses. Network  112  may include one or more local area networks (LANs), radio access networks (RANs), metropolitan area networks (MANs), wide area networks (WANs), all or a portion of the global computer network known as the Internet, and/or any other communication system or systems at one or more locations. 
     Server system  106  may include a processing module  114  and a memory module  116 . Processing module  114  may include one or more microprocessors, controllers, or any other suitable computing devices or resources. Processing module  114  may work, either alone or with other components of system  100 , to provide a portion or all of the functionality of system  100  described herein. Memory module  116  may take the form of volatile or non-volatile memory including, without limitation, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, or any other suitable memory component. Although a single server system  106  is illustrated, the present invention contemplates system  100  including any suitable number of server systems  106 . Moreover, although referred to as a “server system,” the present invention contemplates server system  106  comprising any suitable type of processing device or devices. 
     System  100  may include one or more cloud computing systems  108  and  110 . Cloud computing systems  108  and  110  may include one or more electronic computing devices operable to receive, transmit, process, and store data associated with system  100 . For example, cloud computing systems  108  and  110  may include one or more general-purpose PCs, Macintoshes, workstations, Unix-based computers, server computers, one or more server pools, or any other suitable devices. In short, cloud computing systems  108  and  110  may include any suitable combination of software, firmware, and hardware. It should be noted that although two cloud computing systems  108  and  110  are illustrated, any suitable number of cloud computing systems may be included in system  100 . In addition, there may be multiple groups of cloud computing systems in system  100 . 
     In certain embodiments, cloud computing systems  108  and  110  provide computing resources  124  and  126 , respectively, to customers and charges the customers for their specific use of computing resources  124  and  126 . For example, cloud computing resources  124  and  126  may include one or more virtual machines. As another example, cloud computing resources  124  and  126  may include one or more machine images. A machine image may refer to a bootable file that includes a particular configuration and operating system. As yet another example, cloud computing resources  124  and  126  may include one or more Intel x86 based servers that provide a combination of hardware and software resources. 
     In certain embodiments, computing resources  124  and  126  may be accessible by proprietary interfaces  120  and  122 , respectively. In certain embodiments, interfaces  120  and  122  may be unique to their respective cloud computing systems  108  and  110 . For example, interfaces  120  and  122  may each include a proprietary command-line interface (CLI) operable to receive typing commands. As another example, interfaces  120  and  122  may each include a proprietary graphical user interface (GUI) such as an online portal that includes hypertext mark-up language (HTML) pages for display and data capture. As another example, interfaces  120  and  122  may each include a proprietary data adapter to access computing resources  124  and  126 . It should be noted that although two proprietary interfaces  120  and  122  are illustrated, any suitable number of proprietary interfaces may be implemented. In addition, there may be multiple groups of cloud computing systems sharing a proprietary interface. 
     A user of user system  102  may select a particular cloud computing system to avoid accessing different proprietary interfaces  120  and  122 . For example, resources  124  and  126  of cloud computing systems  108  and  110  may include Unix-based computer resources. Cloud computing systems  108  and  110  may expose resources  124  and  126  in inconsistent and different ways through proprietary interfaces  120  and  122 . A user of user system  102  may select a particular cloud computing system and interface, such as cloud computing system  108  and interface  120 , to avoid dealing with different interfaces, such as interface  122 . Thus, the user may be limited to the Unix-based computers provided by the cloud computing system selected, and therefore the user may not able to take advantage of the Unix-based computers of other cloud computing systems, such as cloud computing system  110 . 
     In certain embodiments, server system  106  may include a cloud computing interface  118 . Cloud computing interface  118  may refer to any suitable hardware and/or software operable to abstract proprietary interfaces  120  and  122 . In certain embodiments, abstracting proprietary interfaces may refer to displaying the functionality of the proprietary interfaces. In certain embodiments, abstracting proprietary interfaces may refer to translating a request provided by a user into proprietary commands to implement the request at one or more cloud computing systems. As described in more detail below, by abstracting proprietary interfaces  120  and  122 , cloud computing interface  118  provides an abstraction layer for cloud computing systems  108  and  110  that hides the different implementation details of the interfaces  120  and  122  to a user and may display the functionality of interfaces  120  and  122  through a uniform interface. 
     Cloud computing interface  118  includes object methods that abstract proprietary interfaces  120  and  122 , in certain embodiments. An object method may refer to any object-oriented functionality. For example, an object method may refer to an application-specific program, a data structure, a class, a web service, and/or any other suitable object-oriented functionality according to particular needs. 
     Cloud computing interface  118  may receive a request to perform an operation on one or more of the plurality of cloud computing systems and may provision an object method to implement the operation, in certain embodiments. For example, cloud computing interface  118  may receive a request from a user to add a new a virtual machine to cloud computing system  108 . Cloud computing interface  118  may provision an object method that translates the request into proprietary commands to implement the request to add a new virtual machine at cloud computing system  108 . Thus, cloud computing interface  118  may receive a request to perform an operation on one or more of the plurality of cloud computing systems and an object method may implement the operation. 
     In certain embodiments, the object methods may be dynamically configured. For example, as described above, proprietary interfaces  120  and  122  may each include a proprietary data adapter to access computing resources  124  and  126 . The object methods may be dynamically configured to communicate with the data adapters. As another example, the object methods may be dynamically configured using Extensible Markup Language (XML) files that describe the functionality and communication protocols of proprietary interfaces  120  and  122 . By dynamically configuring the object methods, object methods may be rapidly provisioned to support new proprietary interfaces and new functionality within existing proprietary interfaces. 
     In certain embodiments, a secure connection may be established between cloud computing interface  118  and cloud computing systems  108  and  110  over network  112 . For example, a secure Hypertext Transfer Protocol (HTTP) connection may be established between cloud computing interface  118  and cloud computing systems  108  and  110 . A secure HTTP protocol refers to a protocol that provides the ability for secure transactions to take place over network  112 . In alternative networks, any suitable data communications protocol may be used to establish a secure connection. Additional details of example embodiments of cloud computing interface  118  are discussed below with reference to  FIG. 2 . 
       FIG. 2  illustrates example details of cloud computing interface  118  of  FIG. 1 , according to certain embodiments of the present invention. As described above, cloud computing interface  118  includes object methods that abstract proprietary interfaces  120  and  122  and may be provisioned to implement operations. In certain embodiments, the object methods may be included in one or more components. In the illustrated embodiment, cloud computing interface  118  includes a display component  130 , an imaging component  132 , and a change and configurations component  134 . As described in more detail below, each of these components may include certain object methods that implement certain functionality associated with managing cloud computing systems  108  and  110 . It should be noted that although three components  130 ,  132 , and  134  are illustrated, any suitable number of components may be included in cloud computing interface  118 . 
     Display component  130  may abstract the interfaces of cloud computing systems  108  and  110  and generate a display of the functionality of the interfaces, in certain embodiments. For example, display component  130  may include an object method that may display applications and/or servers provided by interfaces of cloud computing systems  108  and  110 . As another example, display component  130  may include an object method that may discover at least one computing resource in cloud computing systems  108  and  110 . As another example, display component  130  may include an object method that may list features and/or services provided by interfaces of cloud computing systems  108  and  110 . 
     In certain embodiments, cloud computing imaging component  132  may manage resources for cloud computing systems  108  and  110 . For example, imaging component  132  may include an object method that may add machine images to cloud computing systems  108  and  110 . As another example, imaging component  132  may include an object method that may display machine images provided by cloud computing systems  108  and  110 . As another example, imaging component  132  may include an object method that may instantiate a new server from a machine image. 
     Cloud computing change and configurations component  134  may configure cloud computing systems  108  and  110 , in certain embodiments. For example, change and configurations component  134  may include an object method that may determine the resource consumption of applications and/or servers. As another example, change and configurations component  134  may include an object method that may retrieve the cost associated with operating applications and/or servers. As another example, change and configurations component  134  may include an object method that may determine the resource consumption of selected applications and/or servers. As another example, change and configurations component  134  may include an object method that may delete existing applications and/or servers. 
       FIGS. 3-8  include embodiments of example displays that may be generated by cloud computing interface  118  of  FIGS. 1 and 2 . Although certain functionality is illustrated and described below in a particular way, it should be understood that the functionality may be provided and displayed in any suitable fashion. 
       FIG. 3  illustrates one embodiment of an example display  302  that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to add a resource, according to certain embodiments of the present invention. As shown in the illustrated embodiment, display  302  includes a window  304  with a managed resource area and a cloud computing systems area. The managed resource area includes a hierarchical listing of managed resources including cloud computing system A and cloud computing system B. Cloud computing system A includes two resources resource_alpha.systema.com and resource_beta.systema.com. In certain embodiments, cloud computing system A and cloud computing system B may include different proprietary interfaces unique to their respective cloud computing systems. Display  302  facilitates management of cloud computing system A and cloud computing system B by abstracting the proprietary interfaces of cloud computing system A and cloud computing system B and displaying the resources and of cloud computing system A and cloud computing system B in a uniform manner. 
     In certain embodiments, display  302  includes several menu tabs for managing the cloud computing systems listed in the managed resource area. In the illustrated embodiment, a summary tab, an imaging tab, a software tab, and an add resource tab are displayed for a particular window and, as indicated by reference number  306 , the add resource tab is selected. The add resource tab includes several selectable buttons to add a resource to a particular cloud computing system. For example, button  308  may be selected to add a new virtual machine to a particular cloud computing system. As another example, button  310  may be selected to add a new SUN SOLARIS system to a particular cloud computing system. As yet another example, button  312  may be selected to add a new WINDOWS/LINUX system to a particular cloud computing system. As yet another example, button  314  may be selected to add a new AIX system to a particular cloud computing system. As yet another example, button  316  may be selected to add a new logical partition to a particular cloud computing system. As yet another example, button  318  may be selected to add a new machine image to a particular cloud computing system. 
     In certain embodiments, a user may select a particular button, such as button  318 , by selecting a particular region of display  302  (as indicated by reference number  320 ) and cloud computing interface  118  may provision an object method to implement the request. In the illustrated embodiment, selecting the particular region of display  302  indicated by reference number  320  may generate a request to add a new machine image. Cloud computing interface  118  may receive the request to add a new machine image and may provision an object method to implement the request. The object method may translate the request into proprietary commands to implement the request. 
     In certain embodiments, selecting a particular region of display  302  (as indicated by reference number  320 ) may result in display  302  displaying a new window, such as a new window associated with selecting a particular machine image to add. An example embodiment of selecting a machine image is described in more detail with reference to  FIG. 4 . 
       FIG. 4  illustrates one embodiment of an example display that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to select a particular machine image to add, according to certain embodiments of the present invention. As indicated by reference number  402  in the illustrated embodiment, the add resource tab is selected and window  404  includes a listing of machine images that may be added. In the illustrated embodiment, window  404  includes the machine images that may be selected, and the machine images are arranged by an ID field  406  and a Manifest description field  408 . ID field  406  includes a unique identifier of each of the machine images. Manifest description field  408  includes a reference to a file that includes a description of the machine image. A particular machine image may be selected (as indicated by reference number  410 ) and a new window  412  may be displayed that includes additional information regarding the machine image selected. 
     In certain embodiments, a user may select a particular machine image to add by selecting a particular region of window  404  (as indicated by reference number  410 ) and cloud computing interface  118  may provision an object method to implement the request. In the illustrated embodiment, selecting the particular region of window  404  as indicated by reference number  410  may generate a request to add a new machine image. Cloud computing interface  118  may receive the request to add a new machine image and may provision an object method to implement the request. The object method may translate the request into proprietary commands to implement the request. 
       FIG. 5  illustrates one embodiment of an example display that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to display a resource summary, according to certain embodiments of the present invention. As illustrated in window  502  in the illustrated embodiment, a summary tab is selected and resource_alpha.systema.com of cloud computing system A is selected (as indicated by reference number  504 ). A summary of resource_alpha.systema.com and a chart of CPU utilization for resource_alpha.systema.com are displayed. As shown in the illustrated embodiment, the current utilization of resource_alpha.systema.com is displayed as 50%. 
     In certain embodiments, a view of the summary may be customized according to one or more buttons and selection boxes and cloud computing interface  118  may provision an object method to implement the request. For example, a view of the summary may be customized by time selection criteria including 30 minutes (30 m), 1 hour (1 h), 6 hours (6 h), 12 hours (12 h), 1 day (1 d), 1 week (1 wk), 2 weeks (2 wks), and 1 month (1 mo). As another example, a view of the summary may be customized by auto scale and auto refresh selection boxes. 
     In certain embodiments, a user may select particular criteria by selecting a particular region of window  502  and cloud computing interface  118  may provision an object method to implement the request. For example, a user may select 6 hours (6 h) from the time selection criteria to change the display. Cloud computing interface  118  receives the request and provisions an object method to request data to display the updated summary of and resource_alpha.systema.com. 
       FIG. 6  illustrates one embodiment of an example display that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to configure a resource profile, according to certain embodiments of the present invention. As indicated by reference number  602  in the illustrated embodiment, a details tab is selected and a profile of resource_alpha.systema.com of cloud computing system A is displayed. In the illustrated embodiment, the profile includes system information fields for resource_alpha.systema.com including an Operating System (OS) Name field and an Internet Protocol (IP) Address field. 
     In certain embodiments, a user may update the profile by editing a particular field and cloud computing interface  118  may provision an object method to implement the request. For example, a user may update the IP Address field to include a different value for resource_alpha.systema.com. Cloud computing interface  118  receives the request and provisions an object method to update the IP address of resource_alpha.systema.com at cloud computing system A. 
       FIG. 7  illustrates one embodiment of an example display that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to configure resource components, according to certain embodiments of the present invention. As indicated by reference number  702  in the illustrated embodiment, a components tab is selected and a listing of components installed at resource_alpha.systema.com is displayed. In the illustrated embodiment, the listing of components is arranged by a Name field, a Version field, a Category field, and a Qualifier field. In certain embodiments, a user may configure the resource components by editing a particular field and cloud computing interface  118  may provision an object method to implement the request. For example, a user may delete a particular component from resource_alpha.systema.com. Cloud computing interface  118  receives the request and provisions an object method to delete the component from resource_alpha.systema.com at cloud computing system A. 
       FIG. 8  illustrates one embodiment of an example display that may be generated by cloud computing interface  118  of  FIGS. 1 and 2  to allow a user to identify changes to resources, according to certain embodiments of the present invention. As indicated by reference number  802  in the illustrated embodiment, a changes tab is selected and a listing of detected changes at resource_beta.systema.com is displayed. 
     In certain embodiments, a user may request a change detection analysis to identify changes to resources and cloud computing interface  118  may provision an object method to implement the request. For example, a user may compare a current configuration of components against a baseline configuration of components. Cloud computing interface  118  may receive the request to perform a change detection analysis and may provision an object method to implement the request. In the illustrated embodiment, resource_beta.systema.com is compared against a baseline configuration and the comparison results list an Apache2 HTTP Server (UNIX)(/) as a detected change to resource_beta.systema.com. 
       FIG. 9  illustrates an example method for managing cloud computing systems, according to certain embodiments of the present invention. The method begins at step  902  where a connection is established between a cloud computing interface and cloud computing systems. Each of the cloud computing systems include one or more computing resources accessible by a proprietary interface. The cloud computing interface includes a plurality of object methods that abstract the proprietary interface of each of the cloud computing systems. At step  904 , a request to perform an operation on one or more of the plurality of cloud computing systems is received. At step  906 , at least one object method is provisioned from the cloud computing interface to implement the request. 
     It should be understood that some of the steps illustrated in  FIG. 9  may be combined, modified or deleted where appropriate, and additional steps may also be added to the flowchart. Additionally, as indicated above, steps may be performed in any suitable order without departing from the scope of the invention. 
     Although the present invention has been described with several embodiments, diverse changes, substitutions, variations, alterations, and modifications may be suggested to one skilled in the art, and it is intended that the invention encompass all such changes, substitutions, variations, alterations, and modifications as fall within the spirit and scope of the appended claims.