Providing a hosted appliance and migrating the appliance to an on-premise environment

An appliance support module can be configured to build software appliances for use in a hosted environment. The appliance support module can be configured to build the hosted appliances based on a request by a user for the hosted appliances. The appliance support module can be configured to receive a request to migrate the hosted appliances to an on-premise system. To migrate the hosted appliance, the appliance support module can be configured to convert the hosted appliances into a format capable of being supported by the on-premise systems.

FIELD

This invention relates generally to products and services, more particularly, to systems and methods for software appliance related services and products.

DESCRIPTION OF THE RELATED ART

The proliferation of the World Wide Web through the Internet has made a wealth of products and services available to users to purchase and use nearly instantaneously. Vendors, service providers, manufacturers, third party distributors, etc., may have websites for the users to review and purchase their respective products and/or services and to obtain technical support for the product and/or services.

Typically, in addition to purchasing the software products and services, the user must also purchase hardware to serve as a platform for the software products and services, on-premise. Often, the user may not have the capital to purchase both software products and the hardware to support the products. As such, the users will purchase the software products and contract with third parities to host the software products. Eventually, the user may wish to move the hosted software products on-premise once they have capital to purchase the necessary hardware. The user, however, must reinstall the software products in the on-premise systems and migrate any data from the hosted system. This migration can be both costly and time consuming for the users. Thus, there is a need in the art for methods and systems that provide for migrating software products from a hosted environment to on-premise systems.

DETAILED DESCRIPTION OF EMBODIMENTS

For simplicity and illustrative purposes, the principles of the present invention are described by referring mainly to exemplary embodiments thereof. However, one of ordinary skill in the art would readily recognize that the same principles are equally applicable to, and can be implemented in, all types of information and service portals, and that any such variations do not depart from the true spirit and scope of the present invention. Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific embodiments. Electrical, mechanical, logical and structural changes may be made to the embodiments without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents.

According to various embodiments, in general, an appliance support module can be configured to build software appliances for use in a hosted environment. The appliance support module can be configured to build the hosted appliances based on a request by a user for the hosted appliances. The request can include a desired pre-built appliance or available applications to be included in a custom appliance. The appliance support module can be configured to build the hosted appliance by retrieving the pre-configured appliance. Additionally, to build the hosted appliance, the appliance support module can be configured to combine the applications with a minimum amount of an operating system to provide an execution platform for the applications. Additionally, the appliance support module can be configured to build the hosted appliances in a format supported by the hosted environment.

In embodiments, the appliance support module can be configured to receive a request to migrate the hosted appliances to an on-premise system. To achieve this, the appliance support module can be configured to retrieve the hosted appliances from the hosted environment. To migrate the hosted appliance, the appliance support module can be configured to convert the hosted appliances into a format capable of being supported by the on-premise systems. Additionally, to enhance migration, the hosted appliance can include metadata describing the configuration parameters of the hosted appliances. The metadata can be migrated with the converted appliances. Once converted, the appliance support module can provide the converted appliance to the on-premise system.

By allowing a user to build an appliance supported by a hosted environment, users can purchase and utilize software products without incurring the expense of purchasing hardware to support the appliances. Additionally, by providing a mechanism to migrate the hosted appliances, the user can easily and efficiently move the hosted appliances while saving time and resources in the process.

FIG. 1illustrates an exemplary system100in accordance with an embodiment. It should be readily apparent to those of ordinary skill in the art that system100depicted inFIG. 1represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. Moreover, system100may be implemented using software components, hardware components, or combinations thereof.

As shown inFIG. 1, system100includes users105, a network110and a web service portal115. Users105can be private individuals, employees of private business or public entities or other persons interested in accessing web service portal115. Users105can access web service portal115using personal computers, personal mobile devices, workstations or other networked computing platforms.

Network110can be a combination of wide area and local area networks such as the Internet. Network110can be configured to provide a communication channel between users105and web service portal115. Network110can implement a variety of network protocols to provide the communication channel such as Internet Protocol (“IP”) Vx, ATM, SONET, or other similar network protocols.

Web service portal115can be configured to provide products and services to user105as well as provisioning, installation services, updates to software and hardware products and technical support. Web service portal115can, among other functions, provide a list of products such as software applications, software appliances and/or hardware devices as well as services such as installation, configuration, maintenance, etc., for users105to purchase. As a non-limiting example, web service portal115can also provide information for users to research, compare and purchase software, hardware and consulting services in support of those software and/or hardware purchases. Web service portal115can also be configured to provide support services, for free or by subscription, to those same software, service, and/or hardware purchases.

In accordance with various embodiments, web service portal115can be configured to provide an appliance support (AS) module120to provide software appliances to user105and support the software appliances.

FIG. 2shows an exemplary software appliance according to various embodiments. As shown, a software appliance200can comprise one or more applications205combined with a “minimum amount of an operating system” (MiniOS)210to allow application(s)205to run on a computing platform or in a virtual machine executing on a computing platform. MiniOS210can comprise a subset of the components of a complete OS that contains enough resources to support the application(s)205intended to be encapsulated with MiniOS210. Software appliance200occupies less space than regular or self-standing applications and independent OSes, because MiniOS210includes a set of reduced features and components required to provide an application space for application(s)205of the software appliance.

Software appliance200comprises a binary image of application(s)205and selected MiniOS210contained in software appliance200. The image contains the bits of software appliance200as installed on a computing platform. As such, to place software appliance200on computing platform, software appliance200only needs to be physically copied to the memory or storage of the computing platform and, then, configured to function with the computing platform or virtual machine running on the computing platform. In embodiments, software appliance200can be distributed via media such as CD-ROM, DVD-ROM, high-definition format discs or flash media, transmitted via a network, or can be downloaded from a Web site or other location.

Software appliance200can streamline the distribution of applications by minimizing the tasks typically associated with installation, configuration and maintenance. Software appliance200is completely functional as a self-contained unit, and requires no separately installed or configured OS to function. Inside software appliance200, application(s)205and MiniOS210are pre-configured to function and operate together. As such, once software appliance200is placed on a computing platform or virtual machine, software appliance200only requires a configuration of the software appliance to the computing platform or virtual machine.

Additionally, software appliance200can be pre-configured for a specific client or computing platform on which it will be placed. Specifically, during creation of software appliance200, MiniOS210and application(s)205of software appliance200can be pre-configured with the settings and parameters of the client or computing platform on which it will be placed. For example, if software appliance200includes a server OS and Email server application, the server OS and Email server application can be pre-configured to operate with the network settings of the computing platform it will be placed and the network it will serve. Accordingly, software appliance200needs only to be placed on the target client or computing platform without additional configuration. In embodiments, software appliance200can be installed to a variety of clients, servers or other target devices, such as network servers, personal computers, network-enabled cellular telephones, personal digital assistants, media players, and others, such as illustrated inFIG. 1above.

Software appliance200can also be updated and upgraded by several different processes. Since software appliance200is a binary image, an updated or upgraded software appliance can be created as a completely new binary image of the entire software appliance incorporating the updates or upgrades. To update or upgrade software appliance200using a complete image, the updated or upgraded appliance can simply replace software appliance200. Alternatively, software appliance200can be updated or upgraded incrementally. For each update or upgrade, the bits of the binary image required to update or upgrade software appliance200can be determined. To update or upgrade software appliance200, the update bits can be added to software appliance200on a binary-difference basis.

Software appliance200can also be configured to communicate with a management tool215. Management tool215can for example be utilized in order to startstop, configure, repair, and update software appliance200. Management tool215can manage the entire software appliance200, including both application(s)205and MiniOS210. Likewise, management tool215can include multiple tools, for instance to manage application(s)205and MiniOS210, separately.

According to embodiments, management tool215can be embedded in software appliance200itself. In such implementations, software appliance200can be managed from the particular computing platform on which it is placed.

Returning toFIG. 1, according to various embodiments, AS module120can be configured to build software hosted appliances for users105to be implemented in a hosted environment. AS module120can be configured to build the hosted appliances based on a request by a user105. AS module120can be configured to build the requested appliance by retrieving the pre-configured appliance. Additionally, to build the hosted appliances, AS module120can be configured to combine the applications with MiniOS to provide an execution platform for the applications. Additionally, the AS module120can be configured to build the hosted appliances in a format supported by the hosted environment.

In embodiments, AS module120can be configured to receive a request to migrate the hosted appliances to an on-premise system. To achieve this, AS module120can be configured to retrieve the hosted appliances from the hosted environment. To migrate the hosted appliance, AS module120can be configured to convert the hosted appliances into a format capable of being supported by the on-premise systems. Additionally, to enhance migration, the hosted appliance can include metadata describing the configuration parameters of the hosted appliances. The metadata can be migrated with the converted appliances. Once converted, AS module120can provide the converted appliance to the on-premise system.

FIG. 3illustrates a more detailed block diagram of web service portal115including AS module120in accordance with another embodiment. It should be readily apparent to those of ordinary skill in the art that web service portal115depicted inFIG. 3represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified.

As shown inFIG. 3, web service portal115can include a web store module305that a user can interface with the service portal. Web store module305can provide the graphical user interfaces (“GUIs”) and associated functions and/or services for web service portal115. As a non-limiting example, web store module305can generate a log-in GUI for a user to authenticate and enter web service portal115.

Web store module305can couple with an application program interface (“API”) module310. API module310can be configured to provide an interface between the functions and/or services provided by web store module305and to the appropriate module of web service portal115. More particularly, API module310can call or direct a requested function or service from the user to the respective module that provides that requested function or service. For example, a user may request a price of a product, e.g., product vending module, API module310can direct the request to a get price function in a support tools module315. Additionally, a user may request a software appliance, API module310can direct the request to AS module120.

API module310can also be configured to interface with support tools module315. Support tools module315can be configured to provide the supporting software and hardware to implement the functionality of web service portal115. Support tools module315can contain and provide access to databases that contain information such as product lines, software appliances services providers, on-line self-help (e.g., knowledgebase), etc. Support tools module315can also provide services like a chat service, a help desk, installation, provisioning, etc.

API module310can be further configured to couple with an identification (“ID”) module320. ID module320can be configured to provide identification management services for web service portal115. ID module320can also store information related to users such as purchase history, user profile, usage history of the user, and entitlement data.

API module310can be further configured to couple with a universal messaging module325. Universal messaging module325can be configured to provide a messaging application that unifies messages. More specifically, electronic mail (“email”), documents, and instant messaging can be linked in a single application. Universal messaging module325can also provide a mechanism for a user to view all the related documents for the user from email to Wiki pages.

An installer tools330can be coupled to API module310. One of the services provided by web service portal115can be the purchase of software applications and software appliances provided by independent software vendors (“ISVs”). As part of the delivery of the software applications and appliances, the ISV can be required to maintain and update the installation tools to install their respective software applications and appliances. Accordingly, installer tools330can be a repository where independent software vendors can deposit their respective installation tools.

API module310can be further coupled to a communication layer335(labeled as COMM layer inFIG. 3). Communication layer335can be configured to provide the underlying services for the modules of web service portal115to communicate. For example, communication layer335can contain middleware for a product database to communicate with a graphical user interface requesting product description.

API module310can be further coupled to an application management module340(labeled as APP MGMT inFIG. 3). Application management module340can be configured to manage applications as requested by users. More specifically, a user may purchase a prepackaged software application pack (e.g., an operating system, electronic mail program and data mining program) from web service portal115, which is stored in an application stack module345. Application management module340can then deliver the purchased software stack, install and configure the software application stack at a third party site such as server farm350or store the software application stack in a storage farm355for the user to retrieve.

Server farm350can be configured to provide computing platforms for users to lease. Accordingly, users can have a backup version of their systems, a testing platform to perform quality assurance tests on new applications or new software appliances, execute a program requiring excessive MIPS, or any other similar computing task. Additionally, server farm350can be configured to store software appliances for download by users105.

Storage farm355can be configured to provide storage space for users to lease. Accordingly, users can lease disk storage space to back up data, provide a hot data swap, or other storage intensive tasks. Additionally, storage farm355can be configured to store software appliances for download by users105.

In some embodiments, AS module120can be configured to be executed in one of the other components (not shown). As illustrated, in other embodiments, AS module120can be executed as a standalone module.

FIG. 4depicts a more detailed block diagram of AS module120in accordance with another embodiment. It should be readily apparent to those of ordinary skill in the art that AS module120depicted inFIG. 4represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified.

As shown inFIG. 4, AS module120can comprise a control module405, an application program interface (“API”)410, an identification (“ID”) interface415, a building module420, an updating module425, a search engine430, and a repository435. It should be readily obvious to one of ordinary skill in the art that the modules405-435can be implemented as software applications (programmed in C, C++, JAVA, PHP, etc.), hardware components (EEPROM, application specific integrated circuit, microprocessor, etc.) or combinations thereof.

Control module405can be configured to manage and interface with the other modules410-435to provide the functionality of the AS module120as described above and further described herein below. Additionally, control module405can be configured to interface with other modules such as ID module220via ID interface415as described above and further described herein below.

API410can be configured to generate GUIs, e.g. dialog boxes, web pages, as required by control module405and to provide an interface to other modules of web service portal115. API410can be configured to operate in conjunction with web store305and API310. For example, when a user105requests a software appliance related to a service or product via web store305, API310can pass the request to API410. One skilled in the art will realize that API410is optional and that the functionality of API410can be performed by API410.

AS module120can be configured to receive a request for a software appliance to be implemented in a hosted environment. The hosted environment can be a cloud computing environment or server environment such as server farm350. In particular, API410can be configured to receive a request for a software appliance via web service portal115. As such, API410can be configured to generate web pages in order to receive the request.

Likewise, API410can be configured to operate in conjunction with other modules of web service portal115such as universal messaging module325. For example, a user105can submit a request for a software appliance in a message, such as an email. As such, API310can pass the request from universal messaging module325to API410.

Control module405can be configured to receive the user's request for a software appliance via API410. Control module405can be configured to receive a request to build an appliance. In order to build the requested appliance, control module405can be coupled to repository435. Repository435can be implemented in any structure such as a database. For example, repository435can be implemented utilizing any type of conventional database architecture using open source technologies, proprietary technologies, or combinations thereof.

Repository435can be configured to store various pre-built software appliances based on the different functionally typically requested by users. For example, repository435can maintain various pre-built software appliances for roles such as Email Server appliance, application server appliance, customer relation management (CRM) appliance, enterprise resource planning (ERP) appliance, and the like. Repository435can be configured to store the binary image of the pre-built appliance. Repository435can also be configured to store a recipe of the software appliance. The recipe describes the bits that make up the software appliance.

As mentioned above inFIG. 2, the software appliance includes one or more application and MiniOS to support the applications. In addition to storing pre-built appliances and recipes, repository435can also be configured to store individual operating systems and individual applications. Repository435also can be configured to store versions of MiniOS to support individual applications. Repository435can be configured to store the individual applications, individual operating systems, and versions of MiniOS as separate binary images.

In order to build the appliance, control module405can be configured to retrieve the pre-built appliance, the recipe, and/or the necessary components to build the hosted appliance based on the request, from repository435. In order to locate and retrieve the pre-built appliance, the recipe, and/or components of the custom appliance, control module405can be coupled to search engine430. Search engine430can be configured to allow control module405to search repository435. Search engine430can allow control module405to search the repository based on the contents of the request.

In order to build the requested appliance, control module405can be coupled to building module420. After retrieving the pre-built appliance, the recipe, and/or components of the custom appliance, control module405can be configured to pass the retrieved pre-built appliance, the recipe, and/or components of the custom appliance to building module420. Building module420can be configured to build the appliance from the pre-built appliance, the recipe and/or the components of the hosted appliance.

For example, if building module420receives a pre-built appliance, building module420can be configured to append a unique serial number to the pre-built appliance. Additionally, if building module420receives an application and a version of MiniOS, building module420can be configured to combine the bits of the binary image of the application and version of MiniOS in order to create the binary image of the custom software appliance. Building module420can be configured to use the recipe to build the appliance.

Additional, if building module420receives an application and complete OS, building module420can be configured to generate a version of MiniOS to support the received application. Building module420can be configured to combine the bits of the binary image generated for the version of the MiniOS and the received application. Building module420can be configured to generate a unique serial number for the custom appliance and append the serial number to the hosted appliance.

In embodiments, during the building process, the building module420can be configured to build the hosted appliance in a format supported by the hosted environment. For example, the building module420can build the hosted appliance as a binary image in a format, such EC2, capable of being implemented in the hosted environment.

After building the appliance, control module405can be configured to provide the hosted appliance to the hosted environment. Control module405can be configured to pass the hosted appliance to API410. API410can then be configured to provide the appliance to the hosted environment. Likewise, API410can be configured to pass the hosted appliance to universal messaging module325in order to be transmitted to the hosted environment. For example, universal messaging module325can transmit the complete appliance to the hosted environment in an email message.

In the building process described above, control module405can also be configured to include identifying information of the user in the hosted appliance. As such, control module405can be configured to append ID information of the user requesting the appliance to the complete appliance. To achieve this, control module305can be coupled to ID interface415. ID interface415can be coupled to ID module320of web service portal115. Control module405can utilize ID interface415to retrieve the ID information for the user.

In embodiments, AS module120can be configured to include metadata in the hosted appliance. The metadata can be configured to track and store the configuration information of the hosted appliance. The configuration information can include data required to implement the hosted appliance as requested by the user, data necessary to allow the components of the hosted appliance to function together, and data necessary to allow the hosted appliance to cooperate with the hosted environment. The metadata can be created in any format such as a tuple or extensible markup language (XML) file.

In embodiments, once the hosted application has been provided to the hosted environment, AS module120can be configured to receive a request from the user to migrate the hosted appliance to an on-premise system. The request can include the format of on-premise system in order to support the hosted appliance. In particular, API410can be configured to receive a request for a software appliance via web service portal115. As such, API410can be configured to generate web pages in order to receive the request. Likewise, API410can be configured to operate in conjunction with other modules of web service portal115such as universal messaging module325. For example, a user105can submit a request for a software appliance in a message, such as an email. As such, API310can pass the request from universal messaging module325to API410.

Once the request to migrate is received, AS module120can be configured to retrieve the hosted appliance from the hosted environment. For example, control module405can instruct API410to retrieve the hosted appliance from the hosted environment. Once retrieved, control module405can pass the hosted appliance to building module420. Building module420can be configured to convert the hosted appliance from its current format into a format capable of being supported by the on-premise system. The on-premise format can be received in the request from the user. For example, building module420can convert the binary image of the hosted appliance from a format such as EC2 to a binary image in a format supported by the on-premise system such as virtual machine (VM) format.

In embodiments, building module420can also be configured to migrate the metadata to the converted appliance. As such, the configuration of the hosted appliance can be migrated to the converted appliance to allow the converted appliance to operate in the on-premise systems.

After conversion, AS module120can provide the converted appliance to the on-premise system. For example, control module405can be configured to pass the converted appliance to API410. API410can then be configured to provide the converted appliance to the on-premise system or the user. API410can be configured to pass the converted appliance to universal messaging module325in order to be transmitted to the user or on-premise system. For example, universal messaging module325can transmit the complete appliance to the user or on-premise system in an email message.

AS module120can be configured to maintain a record of appliances provided to users. In particular, control module405can be configured to generate a record of appliances provided to users. The record can include the all appliances provided to the user associated with the ID information of the user. The records can also include the unique serial numbers of the appliances.

AS module120can also be configured to update and upgrade previously provided appliances. To achieve this, control module405can be coupled to updating module425. Updating module425can be configured to update and upgrade software appliances by several different processes.

Since a software appliance is a binary image, updating module425can be configured to updated or upgrade a software appliance by creating a completely new binary image of the entire software appliance incorporating the updates or upgrades. To update or upgrade the software appliance using a complete image, updating module425can be configured to create the updated or upgraded appliance. AS module120can be configured to provide the updated or upgraded appliance to the user to simply replace the existing software appliance.

Alternatively, updating module425can be configured to update or upgrade a software appliance incrementally. For each update or upgrade, updating module425can be configured to determine the bits of the binary image required to update or upgrade a software appliance. AS module120can be configured to provide the update or upgrade bits to the user. To update or upgrade the software appliance, the user can add the update or upgrade bits to the software appliance on a binary-difference basis.

AS module120can be configured to build the software appliance to include a management tool. AS module120can be configured to embed the management tool in the complete software appliance. The management tool can be configured to provide control, management, and maintenance of the software appliance. For example, the management tool can be utilized in order to start/stop, configure, repair, and update a software appliance. The management tool can be configured to manage the entire software appliance, including both applications and MiniOS of the software appliance. Likewise, the management tool can be configured to include multiple tools, for instance to manage applications and MiniOS of the software appliance. Likewise, the management tool can be a module in AS module120capable of communicating with the appliances.

FIG. 5illustrates a flow diagram of overall appliance building, according to embodiments of the present teachings. In502, processing can begin. In504, AS module120can receive a request to build software appliances from user105to be implemented in a hosted environment. In506, AS module120can build the hosted appliance. AS module120can build the requested appliance by retrieving the pre-configured appliance. Additionally, to build the hosted appliance, AS module120can combine the applications with MiniOS to provide an execution platform for the applications. Additionally, the AS module120can build the hosted appliances in a format supported by the hosted environment. After building, in508, AS module120can provide the hosted appliance to the hosted environment.

In510, AS module120can receive a request to migrate the hosted appliances to an on-premise system. In512, AS module120can retrieve the hosted appliances from the hosted environment. To migrate the hosted appliance, in514AS module120can convert the hosted appliances into a format capable of being supported by the on-premise systems. Additionally, to enhance migration, the hosted appliance can include metadata describing the configuration parameters of the hosted appliances. The metadata can be migrated with the converted appliances. Once converted, in516, AS module120can provide the converted appliance to the on-premise system or the user105.

Then, in518, the processes can terminate, but the process can return to any point and repeat.

FIG. 6illustrates an exemplary block diagram of a computing platform600where an embodiment may be practiced. The functions of the AS module120can be implemented in program code and executed by computing platform600. AS module120may be implemented in computer languages such as PASCAL, C, C++, JAVA, etc.

As shown inFIG. 6, computing platform600includes one or more processors, such as processor602that provide an execution platform for embodiments of AS module120. Commands and data from processor602are communicated over a communication bus604. Computing platform600also includes a main memory606, such as a Random Access Memory (RAM), where AS module120can be executed during runtime, and a secondary memory608. Secondary memory608includes, for example, a hard disk drive610and/or a removable storage drive612, representing a floppy diskette drive, a magnetic tape drive, a compact disk drive, etc., where a copy of a computer program embodiment for AS module120can be stored. Removable storage drive612reads from and/or writes to a removable storage unit614in a well-known manner. A user interfaces with the AS module120with a keyboard616, a mouse618, and a display620. Display adapter622interfaces with the communication bus604and display620. Display adapter622also receives display data from processor602and converts the display data into display commands for display620.

Additionally, software appliances including management tools, such as software appliance200, can be implemented on an exemplary computing platform600. For example, processor602can provide an execution platform for embodiments of the software appliance. The software appliance can be executed during runtime on main memory606. The binary image of the software appliance can be stored in secondary memory608.

Certain embodiments may be performed as a computer program. The computer program may exist in a variety of forms both active and inactive. For example, the computer program can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read-only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the present invention can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the computer program on a CD-ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general.