Abstract:
Disclosed is a management service that enables a user to establish, monitor, and control cloud computing sessions offered via third-party service providers. In some instances, the management service establishes a market space that allows a user to establish a customized cloud computing session based on computing resources offered by third-party service providers. In some instances, the management service instantiates monitoring mechanisms within the virtual servers of the cloud computing sessions to be able to monitor, assess, and provide reports and alerts pertaining to performance metrics of the various virtual servers. In some instances, the management service also allows a user to remotely transfer services from a first cloud computing session to a second cloud computing session.

Description:
CLAIM OF PRIORITY AND CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to U.S. Provisional Patent Application No. 61/176,841, entitled M ETHODS AND  S YSTEMS FOR  C LOUD  C OMPUTING  M ANAGEMENT , filed May 8, 2009, which is hereby incorporated by reference in its entirety. 
     
    
     FIELD OF THE INVENTION 
       [0002]    Embodiments described in this application pertain to cloud computing technology, and more particularly, to techniques for management of cloud computing services offered by service providers, the techniques including establishing a market space for cloud computing services, monitoring and reporting of performance metrics associated with cloud computing services offered by various service providers, and providing capabilities to enable users to transfer cloud computing services from one service provider to another. 
       BACKGROUND 
       [0003]    There are many situations in which an individual user or an organization may desire to lease one or more server computer systems on a short or long-term basis. Examples include educational or classroom services, demonstration of software to potential users or buyers, website server applications, etc. The servers may be pre-configured with selected operating systems and application software as desired. Although physical servers may be leased and physically delivered for onsite use, servers may also be leased from a central or remote location and accessed via an intermediate network system, such as the Internet. The primary considerations for remote access include the capabilities of the remote access software and the network connection or interface. 
         [0004]    Remote access technology is known and many variations exist, such as Microsoft Terminal Server, Citrix MetaFrame, Symantec pcAnywhere, VMware Remote Console, etc. In general, local client software operates on a client computer that enables communication with server software operating on a server computer. Generally, the client software provides keyboard and mouse commands and receives video and audio information and there is little or no local client processing necessary. Server providers may also desire to share a single physical server among multiple users to more efficiently utilize server resources. Many remote access systems enable multiple access by simultaneously activating separate user sessions. Although some files may be shared, other files or directories or even disk drives may have permission-based attributes so that only authorized persons have access. The same may be true for other physical or software resources existing on or coupled to the physical server. Although multiple access to a single physical server has many benefits, it may be desired to provide a greater degree of isolation between or independence among the users for a variety of reasons, such as, for example, improved security. Also, each user may be detrimentally affected by activities of or problems caused by one or more other users. If any user causes accidental or intentional shutdown of the physical computer or any physical resources associated therewith, or uploads a virus or the like, all users may be detrimentally affected. 
         [0005]    One solution is the use of virtualization technology that enables multiple servers to operate on a single physical computer. One means of utilizing such virtualized servers (or simply, “virtual servers”) is by use of a cloud computing environment. Cloud computing is a style of computing in which dynamically scalable and virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the cloud that supports them. The cloud computing concept incorporates infrastructure as a service (laaS), platform as a service (PaaS) and software as a service (SaaS) as well as Web 2.0 and other technology trends that have the common theme of reliance on the Internet for satisfying the computing needs of the users. Cloud computing services, for example, provide common business applications online that are accessed from a web browser, while the software and data are stored on the physical servers. 
       SUMMARY 
       [0006]    At least one embodiment of the invention pertains to a management service that enables a user to establish, monitor, and control cloud computing sessions offered via third-party service providers. In some instances, the management service establishes a market space, allowing a user to pick and choose one or more parameters associated with establishing a cloud computing session. Using these input selections, the management service communicates with third-party service providers to establish a cloud computing session that matches the user&#39;s desired criteria. 
         [0007]    In some instances, the management service instantiates monitoring mechanisms within the virtual servers of the cloud computing sessions to be able to monitor, assess, and provide reports and alerts pertaining to performance metrics of the various virtual servers. In some instances, the management service also allows a user to remotely transfer services (e.g., the virtual servers) from a first cloud computing session to a second cloud computing session without losing data or process operations by acting as a type of mediator between the two cloud computing sessions. 
         [0008]    Other advantages and features will become apparent from the following description and claims. It should be understood that the description and specific examples are intended for purposes of illustration only and not intended to limit the scope of the present disclosure. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    One or more embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which: 
           [0010]      FIG. 1  shows a network based cloud computing system in which the techniques introduced herein can be implemented; 
           [0011]      FIG. 2  is an exemplary architecture of the management server, illustrating computational blocks adapted to perform the various techniques described herein; 
           [0012]      FIG. 3  illustrates an exemplary service transfer mechanism offered by the management server; 
           [0013]      FIG. 4  is an illustration of the market space options offered through the management server; 
           [0014]      FIG. 5  depicts an exemplary graphical user interface of the management server; 
           [0015]      FIG. 6  is a second exemplary graphical user interface of the management server; 
           [0016]      FIG. 7  is a flow diagram of a process for enabling a user to establish a customized cloud computing environment using the service offered by the management server; 
           [0017]      FIG. 8  is a flow diagram of an exemplary process for using the management server to monitor and retrieve performance metrics related to cloud computing environments; and 
           [0018]      FIG. 9  is a flow diagram depicting a process for enabling a user to transfer a cloud computing environment from a first service provider to a second service provider. 
       
    
    
     DETAILED DESCRIPTION 
       [0019]    References in this specification to “an embodiment”, “one embodiment”, or the like, mean that the particular feature, structure or characteristic being described is included in at least one embodiment of the present invention. Occurrences of such phrases in this specification do not necessarily all refer to the same embodiment. The techniques described herein may be embodied in several forms and manners. The description provided below and the drawings show exemplary embodiments of the invention. Those of skill in the art will appreciate that the techniques may be embodied in other forms and manners not shown below. It is understood that the use of relational terms, if any, such as first, second, top and bottom, and the like are used solely for distinguishing one entity or action from another, without necessarily requiring or implying any such actual relationship or order between such entities or actions. 
         [0020]    Refer now to  FIG. 1 , which shows a network based cloud computing system in which the techniques being introduced here can be implemented. In  FIG. 1 , users  105  of cloud computing services connect to a management server  115  through an interconnect  110 . The interconnect  110  may be, for example, a local area network (LAN), wide area network (WAN), metropolitan area network (MAN), global area network such as the Internet, a Fibre Channel fabric, or any combination of such interconnects. Each of the clients (or users)  105  may be, for example, a conventional personal computer (PC), server-class computer, workstation, handheld computing/communication device, or the like. 
         [0021]    The management server  115 , as described herein, refers to one or more computing servers that are configured to provide the various cloud computing management services described in this application. In an exemplary architecture as illustrated in  FIG. 1 , the management server  115  includes one or more processors  118  and memory  122  coupled to an interconnect  119 . The interconnect  119  shown in the management server  115  is an abstraction that represents any one or more separate physical buses, point-to-point connections, or both, connected by appropriate bridges, adapters, or controllers. The interconnect  119 , therefore, may include, for example, a system bus, a Peripheral Component Interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus, also called “Firewire”. 
         [0022]    The processor(s)  118  is/are the central processing unit (CPU) of the management server  115  and, thus, control the overall operation of the management server  115 . In certain embodiments, the processor(s)  118  accomplish this by executing software or firmware stored in memory  122 . The processor(s)  118  may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), trusted platform modules (TPMs), or the like, or a combination of such devices. 
         [0023]    The memory  122  is or includes the main memory of the management server  115 . The memory  122  represents any form of random access memory (RAM), read-only memory (ROM), flash memory, or the like, or a combination of such devices. In use, the memory  122  may contain, among other things, code  123  embodying the functional blocks of the management server  115 . Several such functional blocks are described, for example in the management server  115  block described in  FIG. 2 . The 
         [0024]    Also connected to the processor(s)  201  through the interconnect  203  are a network adapter  120  and a storage adapter  124 . The network adapter  120  provides the management server  115  with the ability to communicate with remote devices, such as clients  105  or cloud computing blocks  140 , over the interconnect  110  and may be, for example, an Ethernet adapter or Fibre Channel adapter. The storage adapter  124  allows the management server  115  to access, for example, the storage  126  and may be, for example, a Fibre Channel adapter or SCSI adapter. 
         [0025]    In one embodiment, the management server  115  uses a storage system  126  for persistent storage purposes, including, for example, buffering of data received from the various cloud computing blocks  140 , storing information related to metrics recorded from the cloud computing blocks  140 , etc. The storage system  126  may include a number of nonvolatile storage devices, which can be, for example, conventional magnetic or optical disks or tape drives; alternatively, they can be non-volatile solid-state memory, such as flash memory, or any combination of such devices. 
         [0026]      FIG. 1  further illustrates one or more cloud computing blocks  140 . A cloud computing block  140 , as described herein, refers to a cloud of virtualized computing servers offered by a particular cloud computing service provider (or simply, a “service provider”). Each cloud computing block  140  includes one or more virtualized computing servers  142  (or simply, “virtual servers”). The virtual servers  142  are established in response to a request from a particular user, when the request is, for example, routed through the management server  115 . In some instances, the virtual servers  142  in each cloud computing block  145  are instantiated by a physical server  145  operated by the respective service provider. A service provider, as referred to herein, may at least in some examples be a third party service provider, implying that the entity associated with the service provider is different from the entity associated with the management server  115 . The physical server  145 , as maintained by the associated service provider, comprises server architecture (e.g., similar to the architecture of the management server  115  as described above) to establish and host a virtual server  142  in a cloud computing block  140 . The service provider may maintain physical servers in different geographic locations to establish and provide the cloud computing blocks. Examples of commercially available service providers include, for example, Amazon®, Slicehost®, Google®, Go Grid®, etc. 
         [0027]    The management server  115  connects to the cloud computing blocks  140  through the interconnect  110 . It is noted that, in at least some instances, the interconnect  110  connecting the user  105  to the management server  115  is the same as the interconnect  110  connecting the management server  115  to the cloud computing blocks  140 . This basic exemplary network system of  FIG. 1  illustrates the platform on which the various techniques described below can be implemented. 
         [0028]      FIG. 2  is an exemplary architecture of the management server  115 , illustrating computational blocks adapted to perform the various techniques described herein. As described above, the management server  115  includes one or more processors  118  to perform the techniques described here. In the illustrated embodiment, the processor  118  includes the various computational blocks as functional units. In other embodiments, the computational blocks may be separate components from the processor  118 . In certain embodiments, the computational blocks may be implemented in the form of software (executed by one or more programmable processors). In other embodiments, however, these computational blocks may be implemented in pure hardware, e.g., specially-designed dedicated circuitry, or as a combination of software and specially-designed dedicated circuitry. 
         [0029]    It is noted that the list of modules (i.e., the computational blocks) indicated in  FIG. 2  are for illustrative purposes. Other modules, as would be useful to perform logical and deterministic functions of the various techniques described here, are considered to be included in the list of computational blocks. A first computational block, the VS Instantiation Module  1801  includes computational logic to enable a user to instantiate one or more virtual servers  142  in one or more cloud computing blocks  140 . In some instances, the management server  115  receives requests from a user  105  to establish one or more virtual servers  142 . The user  105  may indicate specific parameters to establish the virtual servers  142 . An exemplary interface allowing the user to select and enter such parameters is described below with reference to  FIGS. 4 and 5  below. 
         [0030]    Consider an example where the user  105  requests (through the interface of the management server  115 ) four virtual servers  142  (each with a particular performance capacity) from a first service provider and two virtual servers  142  from a second service provider. The VS instantiation module  1801  of the management server  115  processes the request by first establishing a connection through interconnect  110  with, for example, an operating interface (not shown in  FIG. 2 ) of each service provider. The VS instantiation module  115  may utilize one or more communication protocols to establish the connection with the operating interface and exchange communications regarding the required specification. In some instances, the operating interface of each service provider (or a physical server associated with each service provider) establishes the required number of virtual servers  142  in the respective cloud computing blocks  140  and returns the setup information back to the VS instantiation module  1801 . The VS instantiation module  1801  then communicates this information back to the user  105 , enabling the user to start utilizing the newly established virtual servers  142 . Therefore, the user  105  is able to establish multiple virtual servers with multiple service providers through one centralized operation, and is spared the need of separately interfacing with each service provider to establish the required virtual servers. 
         [0031]    In some instances, the management server  115  includes a configuration module  1802 . The configuration module  1801  operates in tandem with other computational blocks in the management server  115  to maintain and share configuration information related the various virtual servers  142  established using the management server  115 . For example, in some instances, the configuration module  1802  works in tandem with the VS instantiation module  1801  to retrieve information related to the various virtual servers  142  established for a given user (e.g., cloud computing block  140  associated with each virtual server  142 , performance capacity of each virtual server  142 , operable hours of each virtual server  142 , user-specific settings associated with each virtual server  142 , redundant storage options associated with each virtual server  142 , etc.). 
         [0032]    In some instances, the configuration module  1802 , in addition to performing the above mentioned functions, also periodically queries service providers associated with the management server  115  to obtain relevant information related to the service providers. The configuration module  1802 , for example, communicates with an operating interface of each service provider to obtain information related to available bandwidth, retail cost of establishing virtual servers with the service provider, wholesale cost of establishing virtual servers with the service provider, storage options offered by the service provider, cost based on usage hours of the virtual servers, geographic location of physical servers maintained by the service provider, etc. The configuration module  1802  causes such information to be stored in the management server  115  for subsequent use in generating a list of potential cloud computing configurations (as will be explained in detail below with reference to  FIGS. 5 and 6 ). 
         [0033]    The management server  115  also includes a metrics readout module  1803 , adapted to monitor, retrieve, and record performance metrics associated with the various virtual servers  142 . A user  105  would find it useful to be aware of the various performance metrics associated with the virtual servers  142  that may affect his user experience and also the efficiency of operation of the virtual servers  142 . For example, the user  105  would find it advantageous to be aware of the load (memory load, processor load, etc.) on the physical server associated with the cloud computing block  140  hosting his virtual servers  142 . The metrics readout module  1803  is adapted to monitor performance metrics related to each virtual server  142  instantiated through the management server  115 . 
         [0034]    The metrics readout module  1803  monitors both computing performance and I/O related performance metrics associated with the virtual servers  142 . Examples of computing performance metrics include load on the physical server associated with the virtual server  142 , available memory in the associated physical server, the number of processes running in the physical server, processor performance, processor capacity, etc. Examples of I/O related performance metrics include bandwidth of the communication bus to each virtual server (e.g., an FSB bandwidth), I/O throughput times of communication between memory and the processor of the associated physical server, network communication between two virtual servers  142  of a particular cloud computing block  140 , network communication between two cloud computing blocks  140  (e.g., where a user has virtual servers established through two different service providers), etc. 
         [0035]    In some instances, the metrics readout module  1803  uses instrumentation bootstraps  160  instantiated in each virtual server  142  to monitor the performance of each virtual server  142 . In one embodiment, the VS instantiation module  1801  functions in tandem with a bootstrap module  1804  to instantiate the instrumentation bootstraps  160  in each virtual server. In some instances, the VS instantiation module  1801  may install the instrumentation bootstrap  160  as a regular feature while instantiating each virtual server  142 . In other instances, where the metrics readout feature is offered as a premium feature, the VS instantiation module  1801  may install the instrumentation bootstrap  160  when the user specifically requests the metrics readout as a premium feature. The instrumentation bootstrap, in one embodiment, is a series of background processes running on each virtual server  140  to monitor and collect the information from the virtual servers  142  either periodically or upon specific requests from the management server  115 . 
         [0036]    In one embodiment, the management server  115  includes an aggregation module  1805  to record, for example, the various metrics reports, in an aggregated manner. The aggregation module  1805 , for example, works in tandem with the metrics readout module  1803  to retrieve metrics reports received from each of the virtual servers  142 . The metrics reports returned to the metrics readout module  1805  may be in raw format and consequently may not be immediately useful to the user  105 . Additionally, because several metrics are collected at regular intervals, the volume of data collected needs to be synthesized to a structured format to enable the user  105  to readily perceive useful information from the metrics readouts. The aggregation module  1805  retrieves the raw readouts from the metrics readout module  1803  and post-processes the data to a synthesized format (e.g., in the form of a spread sheet, in the form of a visual alert display, in the form of a scrolling display, etc.). 
         [0037]    The management server  115  may also include a redundancy module  1806 . In some instances, the management server  115  offers a redundancy feature to the user  105 , as, for example, a premium feature. Using this redundancy feature, a user may be able to backup virtual servers  142  and/or stored data. The user  105  may configure the management server setting to indicate that a redundant virtual server should be established in the same cloud computing block  140  as the original virtual server  142 . In other instances, a user  105  may prefer the redundant virtual server to be established in another cloud computing block. In other instances, the user  105  may prefer to maintain multiple redundant virtual servers as an enhanced precautionary measure. The redundancy module  1806 , depending on the choice indicated by the user  105 , establishes one or more redundancy features. Every time a new process is initiated, terminated, or modified in the original virtual server  142 , the redundancy module  1806  replicates the operation in the redundant virtual servers. This ensures, for example, that the redundant virtual servers are ready to take over for the original virtual server  142  should the original virtual server  142  suffer a failure. 
         [0038]    The management sever  115  may also include a service transfer module  1807 , adapted to enable a user  105  to transfer one or more virtual servers  142  from a first cloud computing block  140  to a second cloud computing block (not shown in  FIG. 2 ). The functionality of the service transfer module  1807  is described in detail with reference to  FIG. 3  below. 
         [0039]      FIG. 3  illustrates an exemplary service transfer mechanism offered by the management server  115 . In one embodiment, the management server  115 , as indicated above, includes a service transfer module  1807  to perform the various functionalities of the service transfer mechanism. The phrase “service transfer,” as referred to herein, refers to a sequence of operations involved in transferring one or more virtual servers (e.g.,  262 ,  264 ) from a first cloud computing block  260  (of a first service provider) to a second cloud computing block  266  (of a second service provider). 
         [0040]    The following section details one possible mechanism for transferring the virtual servers from the first cloud computing block  260  to the second cloud computing block  266 . It is understood, however, that other possible mechanisms for suspending and reinitiating operations of a server, as known by one of skill in the art, may also be utilized in performing the transfer operation. In one embodiment, the service transfer module  1807  receives a request initiated by a user  105  (through the management server  115 ) to transfer virtual servers ( 262 ,  264 ) from a first cloud computing block  260  to a second cloud computing block  266 . The first cloud computing block  260  and the second cloud computing block  266 , in some instances, is operated by two different service providers. 
         [0041]    Subsequent to receiving the request, the service transfer module  1807  identifies the various virtual servers ( 262 ,  264 ) to be transferred. In some instances, the service transfer module  1807  may communicate with the configuration module  1802  to retrieve information related to the virtual servers (e.g., the cloud computing block associated with the virtual servers, etc.). The service transfer module  1807  then initiates the service transfer operation by suspending all active processes in the virtual servers  262 ,  264  that are to be transferred. The service transfer module  1807  then retrieves the parameters associated with each virtual server  262 ,  264  that are specific to the cloud computing block (e.g., configuration files as they apply to 2 particular cloud computing block, etc., redundant virtual machine setup information, etc.). In one embodiment, the service transfer module  1807  operates on all hypervisors to ensure that processes specific to each hypervisor is selectively suspended. 
         [0042]    In some instances, the service transfer module  1807  then compresses and encrypts information related to the processes, setup information of the virtual servers, local storage data associated with the virtual servers  262 ,  264 . In one embodiment, the service transfer module  1807  retrieves the compressed data and stores it temporarily in a storage unit associated with the management server  115  (e.g., the persistent storage  126 ). In other embodiments, the service transfer module  1807  retrieves the compressed data and stores it temporarily in a temporary cloud computing block (not shown in  FIG. 3 ) until subsequent operations are performed. Additionally, in some instances, the service transfer module  1807  decrypts and/or uncompresses the temporarily stored data prior to transferring the virtual machines to the second cloud computing block  266 . 
         [0043]    In some instances, the service transfer module  1807  works in tandem with the VS instantiation module  1801  to instantiate a new set of virtual servers  268 ,  270  in the second cloud computing block  266 . The service transfer module  1807  may establish the new virtual servers  268 ,  270  based on one or more considerations. For example, the new virtual servers  268 ,  270  may be such that they have similar performance capabilities as compared to the previous virtual servers  262 ,  264 . In another example, the new virtual servers  268 ,  270  may be matched with the previous virtual servers  268 ,  270  in terms of cost. That is, if the first cloud computing block  260  offers virtual servers for a more expensive rate, the performance capacities of virtual servers  268 ,  270  may be increased (compared to the respective previous virtual servers  262 ,  264 ) to a level commensurate with the previous cost. Still other permutations and combinations, as would be appreciated by a person of skill in the art, are additionally applicable for establishing the new virtual servers  268 ,  270 . It is also noted that the service transfer module  1807  may cause a different number of virtual servers (as compared to the number of servers being suspended and removed from the first cloud computing block  260 ) to be generated. For example, the second cloud computing block  266  may have four smaller virtual servers to replace two larger virtual servers from the first cloud computing block  260 . 
         [0044]    Subsequent to establishing the new virtual servers  268 ,  270 , in some instances, the service transfer module  1807  transfers the uncompressed and unencrypted data to the new virtual servers  268 ,  270 . Additionally, the service transfer module  1807  retrieves the parameterized values extracted from the first cloud computing block and applies the parameterized values to the new virtual servers  268 ,  270 . Since, in at least some instances, the parameterized values (e.g., configuration variables as applied to a particular cloud computing block) vary with respect to the cloud computing block, the service transfer module  1807  adjusts the values to adapt to the requirements of the second cloud computing block  266 . Subsequent to installing these template variables (or parameterized values), the service transfer module  1807  initiates the suspended processes captured from the first cloud computing block  260 . The service transfer module  1807  of the management server  115  thus enables a seamless transfer of the virtual servers from one cloud computing block to another, without requiring the user to directly interact with either of the cloud computing blocks to achieve the seamless transfer. 
         [0045]      FIG. 4  is an illustration of market-space options offered through the management server  115 . In the illustrated embodiment, a user  105  uses a user interface (not shown in  FIG. 4 ) of the management server  115  to establish a cloud computing environment (by establishing one or more virtual servers). A cloud computing environment, as described herein, refers to a collection of one or more virtual servers established for use by a particular user through the management server. The one or more virtual servers may be operated by one or more service providers. 
         [0046]    In some instances, the management server  115  functions as a portal to commercial cloud computing service providers, offering a variety of means to enable the user  105  to establish a customized and defined cloud computing environment. Through the interface, the management server  115  offers a variety of market-space options  205 . The user may use one or more of these options to custom-build a cloud computing environment. It is understood that the list of market-space options indicated in  FIG. 3  is not meant to be exhaustive, and that other options or variables to enable a user to custom-build a computing environment, as would be appreciated by people of ordinary skill in the art, are additionally applicable. Each of the market-space options illustrated in  FIG. 3  are individually discussed below. 
         [0047]    A first market-space option, namely a choice of provider option  208 , allows a user to select one or more service providers from a list of service providers supported by the management server  115 . Examples of such service providers include Amazon®, Google®, Slice Host®, etc. A second market-space option, namely a choice of hours and/or duration  212 , allows a user to select the hours and time duration during which he intends to operate the virtual servers. Some service providers may offer the virtual servers at a cheaper rate if the virtual servers are operated during off-peak hours. In such instances, for example, the user has the option of specifying a specific time (or duration of time) during which he intends to operate the virtual machines to take advantage of the cheaper rate. 
         [0048]    In some instances, the cloud computing market-space  205  includes a choice of server type and/or layout  218 . In such instances, the user  105  has the option of specifying what type of server layout and/or type (e.g., Apache server, X server, other kinds of web server layouts, FTP storage server, etc.). The VS instantiation module  1801 , for example, would instantiate each of the virtual servers with the requested server type and/or layout. 
         [0049]    Another example of the cloud computing market-space options  205  includes a choice based on cost of service  220 . In some instances, the user  105  would be able to indicate a particular cost or range of affordable costs for establishing and operating the virtual servers. Accordingly, in some instances, the management server  115  identifies one or more particular service providers, particular service time durations, etc., that match the user&#39;s choice of cost. Additionally, or in lieu of the choice of cost option  220 , a user may indicate a desired computing capacity  222  to establish the cloud computing environment. In some instances, the user may balance (e.g., using a sliding scale mechanism as shown in  FIG. 5 ) the cost and performance capacity factors to establish a desired cloud computing environment. 
         [0050]    The cloud computing market-space may also offer the user  105  a range of other options, including a choice based on geographic location of the physical server operating the virtual servers. In some instances, a user  105  may prefer the virtual server to be established such that the physical server operating the virtual server is located at an optimal geographic location. Similarly a user may desire multiple virtual servers operated by geographically distributed physical servers (e.g., physical servers operating in every continent or every country). It would be difficult to find one service provider catering to a distributed geographic topography. However, when the user  105  selects the geographic location  224  option of the cloud computing market-space  205 , the management server queries the physical server distribution (i.e., the geographic distribution) of each service provider to establish a suitable cloud computing environment for the user  105 . 
         [0051]    In some instances, the cloud computing market-space options  205  include a choice based on value-add services  226 . Using such a choice, a user may include, for example, premium add-on services while establishing the cloud computing environment. Examples of such premium add-on services include logging of performance metrics, reporting of performance alerts, redundancy options, technical maintenance and support, etc. The value-add services may include premium services offered by the respective service providers or services offered by the management server  115 . Other options in the cloud computing market-space may include, for example, storage options  228 , allowing a user  105  to choose a storage mechanism from a variety of storage options. For example, the user  105  may elect to store data associated with the virtual servers (e.g., user data, log data, etc.) in the persistent storage unit  126  of the management server  115 , or may elect to purchase a cloud storage service to store the data. 
         [0052]    As illustrated in  FIG. 4 , the cloud computing market-space features  205  include an option allowing the user  105  to bid for a cloud computing environment  216 . The user  105 , in some instances, may provide an input on a desired number of features (e.g., computing capacity, duration of operation, etc.) through the interface of the management server  115 . In addition, using the bidding option  216 , the user may also enter a base price (e.g., a daily rate that the user is willing to pay for each virtual server in the cloud computing environment, etc.) to indicate the bid amount. The management server  115 , taking into account the desired features and the bid amount, queries all available service providers to generate a list of suitable cloud computing environment configurations. In some instances, each configuration in the generated list covers a range of features, allowing the user to select one configuration. In some instances, however, when the management server  115  is unable to find any configurations at (or around) the user&#39;s bid amount, the management server  115  prompts the user  105  to enter a different bid amount. For example, if the management server  115  may indicate to the user  105  that the cheapest configuration is available at a particular price and that the user  105  should at least match that particular price when entering the bid amount. In some instances, if the management server  115  is unable to find a configuration matching the user&#39;s bid amount, the management server  115  may yet reach out (e.g., by transmitting an email or an SMS message, etc.) to the user at a later time when a configuration matching the user&#39;s bid amount does become available. 
         [0053]      FIG. 5  depicts an exemplary graphical user interface  301  of the management server  115 . In one embodiment, as described above, the management server presents a suite of market-space options to enable a user to establish a customized cloud computing environment. The exemplary user interface  301  of  FIG. 5  is for the purpose of illustration only, and is not to be construed as a limiting or sole example of the management server&#39;s user interface. As illustrated in  FIG. 5 , a first field  303  of the user interface  301  enables a user to select one or more service providers. The user may select one service provider, or make multiple selections to select more than one service provider, or may even select a feature that allows the management server to utilize any combination of service providers based on other market-space options selected by the user. 
         [0054]    A second option  305  enables the user to select a duration during which the user desires to use the cloud computing environment. In one example, the user may merely indicate AM or PM usage. In another example, the user may indicate a time range (10 AM to 10 PM). In another example, the user may just indicate that he needs to use the cloud computing environment for 5 hours every day. 
         [0055]    A third option  307  allows the user to indicate a type of availability of the cloud computing environment. In one example, the user may indicate that he intends to use the cloud computing environment only during peak hours. In another example, the user may indicate his preference to use the cloud computing environment only during non-peak hours. A don&#39;t-care option (not shown in  FIG. 5 ) may allow the user to indicate that he does not care about when the service would be available. 
         [0056]    A fourth option  309 , as illustrated in  FIG. 5 , includes a sliding scale  315  to enable a user to balance computational capacity of the cloud computing environment against the cost of the cloud computing environment. The left corner of the sliding bar indicates a low-cost criterion, while the right corner of the sliding bar indicates a high performance-capacity criterion for establishing the cloud computing environment. The user may choose any point in the spectrum to choose a desired balance between the cost and performance capacity options. 
         [0057]    A fifth option  311  provides the user one or more options to select redundancy related features. Redundancy features include, for example, a full virtual server backup, partial backup (e.g., a storage data backup), etc. Alternately, as with other options in the user interface  301 , the user may choose a “no preference” option. A server layout option  313  allows the user to select a server layout (e.g., an apache server layout, an X server layout, etc.). If the user selects a layout option, the management server  115  ensures that the virtual servers are established with the selected layout option at the time of establishing the user&#39;s cloud computing environment. 
         [0058]    The user interface  301  of  FIG. 5  also includes a geographic preference  319  option. Using this option, the user can request the management server  115  to identify service providers that operate physical servers in particular geographic locations. By indicating one or more geographic location preferences, the user is able to build a cloud computing environment that, for example, is enabled by geographically distributed physical servers. 
         [0059]      FIG. 6  is an exemplary illustration of a selection page  350  that provides a list of potential cloud computing configurations based on the user&#39;s inputs. As described with reference to  FIG. 5 , the user provides a list of options or preferences (through a user interface  301  of the management server  115 ) for establishing a cloud computing environment. The management server  115  assimilates the information and queries each service provider to determine availability of features. Alternately, in one embodiment, the management server  115  uses information already stored by the configuration module  1802 . As described above with reference to  FIG. 2 , the configuration module  1802  periodically queries each service provider to retrieve and store a list of features and cost options offered by each service provider. 
         [0060]    The management server  115  uses the information related to the service providers to build cloud computing configurations. In some instances, a particular configuration may include features from one service provider. In other instances, a particular configuration may incorporate features offered by two or more service providers.  352 ,  354 , and  356  are examples of such potential configurations that are generated based on the user&#39;s inputs. Each configuration provides a list of features and associated cost, allowing the user to select a desired configuration. Alternately, or in lieu of the above potential configurations, the selection page  350  may also offer a bidding selection  358 . Using this selection, the user may enter a bid amount that he would like to pay for a cloud computing environment that includes the features previously selected by the user. 
         [0061]      FIG. 7  is a flow diagram of a process for enabling a user to establish a customized cloud computing environment using the service offered by the management server. In one embodiment, the management server presents a front-end service to enable a user to subscribe to a cloud computing environment  402 . The management server is associated with one or more service providers, and therefore allows the user to build a customized cloud computing environment using features offered by one or more service providers. The management server presents, for example, an options menu through a graphical user interface  404 . The options menu presents a list of features for building a customized cloud computing environment, allowing the user to indicate his preferences on various features of the cloud computing environment. For example, using the options menu, the user may indicate a preference of one or more service providers, a preference of geographical location of physical servers operated by the service providers, a number of virtual servers in the cloud computing environment, etc. 
         [0062]    After the user selects one or more options from the options menu, the management server assimilates the information and builds a corresponding list of potential cloud computing configurations  406 . The management server, using the graphical user interface, presents the list of configurations to the user. An example of such a display page was described previously with reference to  FIG. 6 . The user selects a particular configuration from the list of configurations. 
         [0063]    Subsequent to the user selecting a configuration, the management server communicates with the respective service providers to establish a cloud computing environment corresponding to the selected configuration  408 . Based on the selected configuration, such a cloud computing environment may include one or more virtual servers. In some instances, the front-end service of the management server may also provide an interface enabling the user to access the cloud computing environment through the user&#39;s terminal  410 . In such instances, the management server may use, for example, hypervisor technology to provide the interface. 
         [0064]      FIG. 8  is a flow diagram of an exemplary process for using the management server to monitor and retrieve performance metrics related to cloud computing environments. In one embodiment, the management server establishes a cloud computing environment based on options indicated by a user using the management server&#39;s front-end service  502 . The cloud computing environment may include, for example, one or more virtual servers (offered by one or more service providers). These virtual servers, as described above, are accessible through an interconnect (e.g.,  110  of  FIG. 1 ). 
         [0065]    In some instances, when establishing a virtual server or subsequent to establishing a virtual server in the cloud computing environment, the management server, for example, installs an instrumentation bootstrap within the virtual server  504 . The instrumentation bootstrap, as explained above with reference to  FIG. 2 , may include multiple background processes that are adapted to monitor and record performance metrics associated with the virtual servers. The instrumentation bootstrap, either periodically or upon specific request from a user, collects computing and I/O related performance metrics associated with the virtual servers  506 . The management server retrieves the performance metrics from the bootstraps and, in some instances, aggregates the information in user-readable log files. The management server then presents this information to the user  508 . In some instances, the management server also uses the metrics information to transmit appropriate alerts and warnings to the user. 
         [0066]      FIG. 9  is a flow diagram depicting a process for enabling a user to transfer a cloud computing environment from a first service provider to a second service provider. In one embodiment, the management server enables the user to establish a cloud computing environment  602 . The management server provides the user an interface to the cloud computing environment, allowing the user to perform computing operations in the cloud computing environment  604 . The cloud computing environment may include one or more virtual servers. For purposes of illustration, the cloud computing environment is such that all virtual servers within the cloud computing environment are offered by a single service provider. It will be appreciated that the techniques discussed herein may also be extended to cloud computing environments that comprise virtual servers offered by more than one service provider. 
         [0067]    The cloud computing environment operates without interruption until a request is received from the user to transfer the cloud computing environment from the first service provider to a second service provider  606 . Upon receiving such a request, the management server suspends all active processes in the cloud computing environment, retrieves template related parameters (e.g., configuration variables specific to the first cloud computing environment, etc.), and compresses and encrypts data files associated with the cloud computing environment  608 . In some instances, the management server transfers all the files and information related to the suspended processes to a temporary location within the management server  610 . In other instances, the management server may transfer the information to a temporary cloud computing environment or cloud storage environment. 
         [0068]    In some instances, the management server establishes a (new) second cloud computing environment based on the user&#39;s choices. It will be appreciated that the order of the process indicated herein may be altered as necessary. For example, the management server may establish the second cloud computing environment even before suspending the processes of the first cloud computing environment. 
         [0069]    Finally, the management server causes the temporarily stored data to be transferred to the second cloud computing environment. The template variables corresponding to the second computing environment are initialized based on the template parameters retrieved from the first cloud computing environment. The data (that was uncompressed and unencrypted in the temporary storage location) is also transferred to the second cloud computing environment. The suspended processes are re-fired using the virtual servers in the second cloud computing environment  612 . 
         [0070]    Thus, methods and systems for cloud computing management have been described. The techniques introduced above can be implemented by using programmable circuitry programmed by software and/or firmware, or by using special-purpose hardwired circuitry, or by using a combination of such embodiments. Special-purpose hardwired circuitry may be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc. 
         [0071]    Software or firmware to implement the techniques introduced here may be stored on a machine-readable medium and may be executed by one or more general-purpose or special-purpose programmable microprocessors. A “machine-readable medium”, as the term is used herein, includes any mechanism that can store information in a form accessible by a machine (a machine may be, for example, a computer, network device, cellular phone, personal digital assistant (PDA), manufacturing tool, any device with one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), etc. 
         [0072]    Although the present invention has been described with reference to specific exemplary embodiments, it will be recognized that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense.