Systems and methods for customizing and programming a cloud-based management server

Systems and methods for managing Software-as-a-Service (SaaS) provided by a virtual machine are described. The system may include a management application, and may receive a feature package from the virtual machine. The feature package may be associated with a function supported by the virtual machine. The system may integrate the feature package into the management application, and transmit a first command to the virtual machine for executing the function at the virtual machine. The first command may be generated by the management application based on the feature package.

BACKGROUND

A Software-as-a-Service (SaaS) provider may offer software applications as software services. These software applications may be designed for different operating systems, or programmed using various programming languages, middleware, and other technologies. Each of these software applications may have a distinctive user interface, and may have a specific approach in managing its own operations. For example, different software applications may have different methods in provisioning, backing-up, and upgrading. Thus, a SaaS management server may need to be pre-programmed with interfacing functionalities in order to interact with these software applications. Likewise, an operator of the SaaS provider may have to learn and support the distinctive user interface and management approach of each software application in order to offer these software applications as software services.

SUMMARY

Systems and methods for managing SaaS provided by a virtual machine are described. The system may include a management application, and may receive a feature package from the virtual machine. The feature package may be associated with a function supported by the virtual machine. The system may integrate the feature package into the management application, and transmit a command to the virtual machine for executing the function at the virtual machine. The command may be generated by the management application based on the feature package.

DETAILED DESCRIPTION

In some embodiments, a cloud management server may be configured to manage a cloud network having one or more virtual machines providing SaaS to cloud-based clients. The cloud management server may utilize a management application for monitoring and controlling the various software applications executing on the one or more virtual machines. When a new virtual machine joins the cloud network, or an existing virtual machine in the cloud network includes new software applications to its software services, the new or existing virtual machine may submit a feature package to the cloud management server. The feature package may contain sufficient information to customize and program the management application, thereby enabling the cloud management server to manage the new virtual machine or the new software applications without making any code changes to the management application. Further, the cloud management server may be able to utilize an existing user interface of the management application for managing new or updated virtual machines and software applications.

FIG. 1illustrates a software-as-a-service (SaaS) environment within which a cloud management server may be customized and programmed, according to some embodiments of the present disclosure. InFIG. 1, a SaaS cloud130, which may be formed by one or more SaaS virtual machines121,123, and125, and may be configured to provide cloud-based software services to one or more SaaS clients120. The SaaS virtual machines121,123, and125may be created based on a virtual machine template110. A cloud management server140, which may be configured to manage the SaaS cloud130and the SaaS virtual machines121,123, and125, may be accessible via a management client150. The SaaS virtual machines121,123, and125, as well as the cloud management server140may be implemented using one or more physical computer systems (not shown inFIG. 1), which may include one or more processors, memory, and other hardware components.

In some embodiments, the SaaS cloud130may be configured to provide software applications as software services over a network. The SaaS clients120may then access the SaaS cloud130and its software services using a web browser or a light-weight application. The provider of the SaaS cloud130may be responsible for the management of the infrastructure of the SaaS cloud130and the operations of the software services. The SaaS clients120may be able to utilize the software services without installing the software applications. The SaaS cloud130may be scalable, as its software services may be provided by one or more of the SaaS virtual machines121,123, and125. Further, the SaaS loud130may utilize load-balancing to distribute the requests from the SaaS clients120to multiple SaaS virtual machines121,123, and125, while the SaaS clients120may use a single access point to the SaaS cloud130even when some of the SaaS virtual machines are under heavy loads.

In some embodiments, the cloud management server140may create the SaaS virtual machines121,123, and125by cloning based on a virtual machine template110. The virtual machine template110may define a standardized group of hardware and software configurations for hardware components, virtual hard disks, operating systems, and software applications. The virtual machine template110may also contain cloud-based SaaS configurations. Once created, the SaaS virtual machines121,123, and125may appear as physical computer systems to the SaaS clients120, and may be further customized based on the specific needs of the SaaS clients120. After creation, the SaaS virtual machines121,123, and125may provide on-demand software services to the SaaS clients120.

In some embodiments, the cloud management server140may use a commercial or open source “management application” to manage the SaaS cloud130as well as the SaaS virtual machines121,123, and125. Based on the instructions received from the management client150, the management application of the cloud management server140may perform specific management tasks such as configuring hardware and software, starting and stopping a specific SaaS virtual machine, and/or backing-up/restoring the software applications in the SaaS virtual machine.

In some embodiments, when the SaaS virtual machines121,123, and125are homogenous (meaning these SaaS virtual machines may have similar capabilities and configurations), a standard management application may be sufficient to manage all the SaaS virtual machines121,123, and125. The management application may interact with a common agent application executing in each of the SaaS virtual machines121,123, and125. Specifically, the agent applications and the management application may communicate in a pre-defined protocol, with the agent applications acting on behalf of the management application to control and monitor the SaaS virtual machines121,123, and125and to provide software services for the SaaS cloud130. Once the management application transmits a pre-defined command to an agent application of a specific SaaS virtual machine, the agent application may perform pre-defined operations on the specific SaaS virtual machine, and report operation results and statistics back to the management application. Often, the management application may have more knowledge about the agent application than the agent application may have about the management application. However, when a new SaaS virtual machine having different hardware or software configurations is added to the SaaS cloud130, or when an existing SaaS virtual machine in the SaaS cloud130is installed with new software applications, the management application may no longer be able to manage the new SaaS virtual machine or the new software applications using its pre-defined commands.

In some embodiments, each of the SaaS virtual machines121,123, and125may contain an agent application that is capable of customizing and programming the management application in the cloud management server140with new capabilities. For example, when a new SaaS virtual machine is added to the SaaS cloud130, or an existing SaaS virtual machine is configured with new hardware configurations, the agent applications running on the new or existing SaaS virtual machine may be configured to “teach” the management application on how to interact with the new hardware configurations. In addition, when a new software application is deployed to a specific SaaS virtual machine in the SaaS cloud130, the agent application running on the specific SaaS virtual machines may be configured to “program” the management application on how to operate the new software application. The details of the customizing and programming the management application are further described below.

FIG. 2illustrates a virtual machine configured to customize and program a cloud management server, according to some embodiments of the present disclosure. InFIG. 2, a SaaS virtual machine210, which may correspond to any one of the SaaS virtual machine121,123, and125ofFIG. 1, may be configured to communicate with a cloud management server140, which may correspond to the cloud management server140ofFIG. 1. The SaaS virtual machine210may be configured to contain, among other modules, an agent application220having one or more function blocks (e.g., function blocks221and223). The cloud management server140may be configured with, among other modules, a management application250. A management client150, which may correspond to the management client150ofFIG. 1, may communicate with the management application250in managing the SaaS virtual machine210.

In some embodiments, the agent application220may be a software module installed and executing in the SaaS virtual machine210. The agent application220may be configured to monitor and manage the SaaS virtual machine210. Specifically, the agent application220may collect the configurations and the statistics of the software and hardware operating in the SaaS virtual machine210, and control the executions of the software applications that are providing the software services to a SaaS cloud (not shown inFIG. 2). The agent application220may be configured to communicate with the management application250, which may also be a software module installed and executing in the cloud management server140, via a secure channel such as a Hypertext Transfer Protocol Secure (HTTPS) channel.

In some embodiments, the agent application220may be configured to customize and program the management application250with new capabilities. For example, a new software application added to the SaaS virtual machine210may have a start/stop routine that is different from any of the existing software applications in the SaaS cloud (not shown inFIG. 2). In this case, the agent application220may be re-programmed with a function block (e.g., the function block221) to support the new software application and its start/stop routine. However, the cloud management server140as well as its management application250may not know, or may not have a mechanism to activate, this start/stop routine of the new software application.

Without making source code changes to the management application250, the agent application220may transmit (231) a feature package230to the management application250, which may program itself using the feature package230to support the new software application and its start/stop routine. After being programmed by the feature package230, the management application250may gain additional capabilities, and may be able to invoke the start/stop routine of the new software application by issuing (241) a command240to the agent application220. Upon receiving the command240, the agent application220may invoke the function block associated with the new software application to perform the start/stop routine in the SaaS virtual machine210. The agent application220may further provide a new user interface with native look-and-feel to the management console of the management application250, thereby allowing the management client150to use the same management console for managing the new software application.

More specifically, before installing the feature package230, the management application250may not be aware of some of the configurations and/or the functionalities of the SaaS virtual machine210. As a result, the management application250may neither be able to configure and manage some of these configurations and/or functionalities, nor be able to generate or issue the command240. After installing the feature package230, the cloud management server140may gain the capabilities to configure and manage the SaaS virtual machine210. Thus, the feature package230may inform the management application250the functions and features now supported by the SaaS virtual machine210, and provide the management application250the mechanisms to activate these functions and features, as described below.

In some embodiments, the agent application220may initiate a request to upload the feature package230to the management application250. The management application250may accept the uploaded the feature package230, or transmit a message to the agent application220to download the feature package230. Afterward, the management application250may program itself by extracting the various modules from the feature package230, and installing the various modules based on an installation program supplied by the feature package230. Alternatively, the various modules may be developed based on certain industrial standards (e.g., Enterprise Java Bean standard), and may be loaded into the management application250according to these standards.

In some embodiments, the feature package230may contain, without limitation, one or more executable modules251, one or more plug-ins253, one or more user interfaces255, and one or more workflow programs257. The management application250may extract these modules and load them into its own operating environment. Optionally, the management application250may create a sandbox260in the operating system of the cloud management server140, and execute some of the modules of the feature package230in this sandbox260. The sandbox260may be configured to provide a run-time execution environment with restrictions to access certain software and hardware components of the cloud management server140. In other words, when the management application250invokes these modules in the sandbox260, these modules may have limited accesses to the resources of the cloud management server140, and therefore may cause little or no effect to the functions of the management application250and/or the cloud management server140.

In some embodiments, the feature package230may contain an executable module251which may be executed in the cloud management server140and/or the management application250. For example, the executable module251may be a JAVA® based application module that can provide a specific type of network communication previously not available in the cloud management server140. And the cloud management server140may provide a Java Virtual Machine (“JVM”) sandbox260for executing the JAVA based executable module251. Also, the executable module251may be programmed using a domain specific language (DSL) such as shell scripts or SQL. For example, the executable module251may contain statistics plotting DSL to plot the charts or tables to be displayed on the management console of the management application250. Further, the executable module251may be a web-based application module that can be executed in a web server environment.

In some embodiments, the executable module251may be configured to generate a command240, transmit the command240to the SaaS virtual machine210, and invoke a specific function block in the agent application220. Alternatively, the executable module251may utilize the management application250's capabilities for delivering the command240to the SaaS virtual machine210and/or the agent application220. For example, the executable module251may transmit a command240to retrieve the SaaS virtual machine210's hardware configurations, such as the number of disks in the SaaS virtual machine210, or the utilization statuses of these disks. Also, the executable module251may transfer a command240to reconfigure the SaaS virtual machine210, such as adding or removing disks or network cards. Further, the executable module251may issue commands240to initiate/format/mount the disks, shutdown/restart the operating, and/or updating the IP wait list, of the SaaS virtual machine210.

In some embodiments, each of the function blocks221and223may be an independent process initiated by the agent application220and/or executing in the SaaS virtual machine210. Alternatively, the function blocks221and223may be threads executing in the agent application220's application space. Further, the function blocks221and223may be initiated and/or invoked by the command240. Afterward, the function blocks221and223may listen to the external communications (e.g., the command240) from the cloud management server140, perform specific operations, and/or transmit messages back to the cloud management server140in response to the command240. In some embodiments, the function blocks221may act in a “stateless” mode. In the stateless mode, each command240may interact with a newly created process/thread for the function blocks221and/or223. When the function blocks221and/or223complete their operations, they may terminate without storing any temporary information associated with the command240. Alternatively, the function blocks221and223may be concurrently running processes/threads which may operate as daemons for continuously listening to the incoming command240.

In some embodiments, the feature package230may contain a plug-in module253guiding the installation of the feature package230into the management application250. For example, the plug-in module253may contain XML configuration files for configuring and installing the executable module251into an appropriate location in the management application250. The plug-in module253may also contain instructions to update configuration files of the management applications250, or to load the user interface255into the management application250's management console. The plug-in module253may further define runtime parameters for the executing of the workflow program257. After the executable module251, the plug-in module253, the user interface255, and/or the workflow program257are installed in the management application250, the new features and functionalities in the feature package230may become available for use by the management client150and/or the management application250.

In some embodiments, the feature package230may contain a user interface255that has the similar look-and-feel as the native user interface (e.g., a management console) of the management application250. The user interface255may be designed for users that are familiar with the management console, so that these users may quickly figure out how to operate the new features in the management application250without learning a new user interface. The user interface255may be constructed using HTML® or JavaScript® codes, and may be installed in a similar approach as the installation of the executable modules251in the management application250. After installation, the user interface255may be displayed by the management application250in the management console. The user interface255may also include configurations to show or hide certain original components in the management console.

In some embodiments, the feature package230may contain a workflow program257, which is configured to assist the management application250in performing a workflow (e.g., a database recovery). A “workflow” may describe a process having multiple steps and logics in order to accomplish a specific task. The workflow program257may define and organize the multiple steps and logics into executable procedures, taking the user inputs and virtual machine statuses into considerations. The workflow program257may be installed into the management application250similar to the above installations of the executable module251and user interface255. Afterward, the management application250may execute the workflow program257to perform the multiple steps defined in the workflow program257. The details of the workflow program257are further described below.

In some embodiments, the SaaS virtual machine210may be installed with a database management system (DBMS) application for managing a database215. The agent application220may include a function block223which is configured to communicate with the DBMS application and interact with the database215. Alternatively, the function block223may be a module provided by the DBMS application for accessing the database215.

In one example, the management application250's database management features may originally support DBMS applications with point-in-time recovery (PITR) and SQL capabilities. However, the database215may be a non-SQL database such as MangoDB® that may not support PITR. In this case, the agent application220may utilized a feature package230to add non-PITR and non-SQL database supports to the management application250. The feature package230may include an executable module251which is capable of issuing commands to create/start/stop/restart the non-PITR, non-SQL database. The executable module251may also include executable scripts which may be transmitted to the agent application220as a part of the command230, and may be executed against the non-PITR, non-SQL database215. The feature package230may further include a workflow program257for executing complex tasks such as backup/restore, or reconfigure the engine of, the non-PITR, non-SQL database215. The feature package230may optionally include a user interface255which may be added to the management console of the management application250, and may switch-off the PITR functions in the management console.

Thus, even after the management application250is deployed in the cloud management server140, a SaaS virtual machine210may be able to customize the management application250by developing an agent application220and utilizing the agent application220to customize and program the management application250. This flexibility may enable the cloud management server140and the SaaS virtual machine210to evolve on their respective paces, and remove the coupling between the management application250and the agent application220.

FIG. 3illustrates a workflow program executable in a management application of a cloud management server, according to some embodiments of the present disclosure. A SaaS virtual machine320may program a cloud management server by transmitting a feature package including a workflow program310(similar to the workflow program257ofFIG. 2) to the cloud management server. A management application of the cloud management server may apply the feature package to itself, and the workflow program310may become a part of the management application. The workflow program310may contain multiple actions311,312,313,314,315,316, and317, each of which may be associated with one or more operations331,332,333,334,335,336, and337. Further, the SaaS virtual machine320may be configured with an agent application (not shown inFIG. 3) which contains a function block330(with operations331,332,333, and334) and a function block340(with operations335and336). A second SaaS virtual machine350may be configured with an agent application (not shown inFIG. 3) having a function block360with operation337.

For example, the workflow program310may be a process for upgrading a database in the SaaS virtual machine320. The workflow program310may define a starting action (e.g., action311) and the logics for invoking the subsequent actions. In other words, once the management application invokes the workflow program310, the workflow program310may start by performing action311(“A1”), which issues a command321to the SaaS virtual machine320. Upon receiving the command321, the agent application of the SaaS virtual machine320may perform an operation331(“Op1”) corresponding to the command321. In this case the operation Op1 may contain logics to check the running status of the database, and return a database status message in response to the command321. The workflow program310may then evaluate the returned database status message, and upon a determination that the database is operating, select action312(“A2”) as the next step to perform.

In some embodiments, action A2 may issue a command322to the agent application of the SaaS virtual machine320, which in turn may perform an operation332(“Op2”). Operation Op2 may evaluate whether the SaaS virtual machine320has sufficient storage space to support the upgrading process, and return a status message to the workflow program310. The workflow program310may evaluate the returned status message, and based on whether there is sufficient storage space, choose either action313(“A3”) or action315(“A5”) as the next step of the workflow program310.

In some embodiments, if the workflow program310determines that there is insufficient storage space, then it may perform action313to issue a command323to activate operation333(“Op3”) in the function block330. Operation A3 may perform storage space cleanup and/or add new disks to the SaaS virtual machine320. If the workflow program310determines that there is sufficient storage space, then it may perform action315to issue a command324to activate operation335(“Op5”). The operation Op5 may then download files related to database upgrade from an external source. Further, the operation Op5 may be provided by the function block340, which is separated from the function block330. In some embodiments, the function blocks330and340may be processes/threads concurrently executing on the SaaS virtual machine320. Alternatively, the command324may include mechanism to initiate a new process/thread associated with the function block340, and communicate with the newly initiated process/thread in performing the operation Op5. Thus, the workflow program310allows the agent application to perform dynamic operations on the SaaS virtual machine320.

In some embodiments, the workflow program310may define a set of actions which may interact with one or more function blocks located in one or more SaaS virtual machines320and350. For example, in the workflow program310, the action317(“A7”), which is to execute a second workflow program (not shown inFIG. 3), may invoke an operation337(“Op7”) located in the function block360of a separate SaaS virtual machine350. The operation Op7 may be configured to transmit a second feature package containing the second workflow program to the cloud management server. The cloud management server may then install the second feature package in the management application of the cloud management server, so that the workflow program310may activate the actions in the second workflow program. Thus, the workflow program310allows the agent application to orchestrate complex operations, and make intelligent determinations based on a specific operating status of the virtual machine.

FIG. 4shows a flow diagram illustrating one example process401for managing SaaS provided by a virtual machine, according to some embodiments of the present disclosure. The process401sets forth various functional blocks or actions that may be described as processing steps, functional operations, events, and/or acts, which may be performed by hardware, software, and/or firmware. Those skilled in the art in light of the present disclosure will recognize that numerous alternatives to the functional blocks shown inFIG. 4may be practiced in various implementations.

At block410, a management system (e.g., a cloud management server) may receive a feature package from a virtual machine (e.g., a SaaS virtual machine). The virtual machine may be located in a SaaS cloud to provide cloud-based software services. The virtual machine may be configured with an agent application, and the management system may be configured with a management application. In some embodiments, the management application may lack certain capabilities to monitor or control the virtual machine as well as the software services provided by the virtual machine. The feature package may be associated with a function supported by the virtual machine but is not yet accessible and manageable by the management system.

At block420, the management application of the management system may integrate the feature package into the management application. In some embodiments, the management application may extract an executable module from the feature package, install the executable module in the management application, and launch the executable module in a sandbox for the management system. Further, the executable module may be configured to issue a first command to the virtual machine and/or the agent application for invoking the function at the virtual machine. Thus, the feature package may allow the management system to gain the management capabilities it previously does not have before integrating the feature package, and the first command may be generated based on the feature package.

In some embodiments, the management application may extract a user interface from the feature package. The user interface may be configured to provide an interface for the executable module. The integration process may include installing the user interface as a component of the management application. During operation, the management application may display the user interface in a management console of the management application. A user of the management console may transmit a user instruction to the management application via the user interface. Based on the user instruction, the management application may activate the executable module to issue the first command to the virtual machine. In other words, the first command may be generated by the management application based on the feature package.

At block430, the management application and/or the executable module may transmit the first command to the agent application executing on the virtual machine. In some embodiments, the agent application may invoke the function in the virtual machine, and generate a message associated with the executing of the function in the virtual machine. The message may be related to an operating condition of the virtual machine, or a status of the execution of the function.

At block440, the management application may receive from the virtual machine the message associated with the operating condition of the virtual machine. At block450, the management application may generate a second command generated based on the feature package and the message. In some embodiments, the first command and the second command may be defined in a workflow program, which may be extracted from the feature package and installed in the management application. The management application may perform the workflow program, which contains logics to determine and generate the second command based on the message received from the virtual machine after issuing the first command.

At block460, the management application and/or the workflow program may transmit the second command to the virtual machine for continuous executing of the function at the virtual machine. In some embodiment, the function may be a function block containing multiple operations. The agent application may perform a first operation in the function block upon receiving the first command, and perform a second operation in the function block upon receiving the second command. In other words, the first command may allow the executing of some operations in the function block, and the second command may allow the continuous executing of other operations in the function block.

FIG. 5shows a flow diagram illustrating one example process501for customizing and programming a management application of a cloud management server, according to some embodiments of the present disclosure. The process501sets forth various functional blocks or actions that may be described as processing steps, functional operations, events, and/or acts, which may be performed by hardware, software, and/or firmware. Those skilled in the art in light of the present disclosure will recognize that numerous alternatives to the functional blocks shown inFIG. 5may be practiced in various implementations.

At block510, an agent application executing on a virtual machine may transmit a feature package to a management system. The virtual machine may be located in a SaaS cloud to provide cloud-based software services, and the management system may be a cloud management server configured with a management application. In some embodiments, the management application may lack certain capabilities to monitor or control the virtual machine as well as the software services provided by the virtual machine. The feature package may enable the management application to issue a first command for executing a function at the virtual machine.

In some embodiments, the feature package may include an executable module for the management application. The executable module may be configured to issue at the management system the first command, and transmit the first command to the virtual machine. The feature package may also include a user interface configured to provide an interface for the executable module. The management application of the management system may be configured to install the user interface as a component of the management application. The feature package may further include a workflow program defining the first command and a second command. In this case, the management application may be configured to perform the workflow program and generate the first command and the second command.

At block520, the agent application may receive from the management application the first command for executing the function. At block530, the agent application may execute the function in the virtual machine based on the first command. At block540, the agent application may generate a message associated with an operating condition of the virtual machine. At block550, the agent application may transmit the message to the management application after executing the function.

At block560, the agent application may receive from the management application a second command for continuous execution of the function at the virtual machine. In some embodiments, the second command, which is issued by a workflow program invoked by the management application, may be generated based on the first command and the message transmitted to the management system.

At block570, the agent application may continue the execution of the function at the virtual machine based on the second command. In other words, the agent application may follow the direction of the workflow program to perform a specific task.