Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines

Providing virtual applications from a remote based system based on native applications. A method includes, at a remote based system, receiving a native application from an on-premises system remote from the remote based system. The method further includes at the remote based system, sequencing the native application into a virtual application. The method further includes providing the virtual application to a system different than the remote based system.

BACKGROUND

Background and Relevant Art

Further, computing system functionality can be enhanced by a computing systems ability to be interconnected to other computing systems via network connections. Network connections may include, but are not limited to, connections via wired or wireless Ethernet, cellular connections, or even computer to computer connections through serial, parallel, USB, or other connections. The connections allow a computing system to access services at other computing systems and to quickly and efficiently receive application data from other computing system.

Interconnection of computing systems has allowed for so called cloud computing. In this description and the following claims, “cloud computing” is defined as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be provisioned and released with reduced management effort or service provider interaction. A cloud model can be composed of various characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, measured service, etc.), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), Infrastructure as a Service (“IaaS”), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.).

Some systems implement smart application sequencing and publishing. Sequencing is the process of converting an application into a virtual package and publishing is the process of making these virtual applications available to the end-user. In particular, applications can be virtualized and streamed to end users.

Application streaming is implemented where portions of an application's code, data, and settings are delivered as packages to a minimalistic light weight client when they are needed rather than the entire application being available at startup of the application. As noted, running a virtualized application may require the installation of a lightweight client version of the application. Packages are usually delivered over a web based protocol such as HTTP, CIFS, or RTSP.

Various challenges exist with respect to sequencing and publishing applications. One challenge is directed to setting up a sequencer workstation. Setting up a sequencer workstation entails significant overhead for the administrator as they need to satisfy a set of pre-requisites before they can start the sequencing process. For instance, the administrators may need to configure their workstations such as configuring the operating system (OS) to match the client target, making sure that their OS images are up to date and have latest patches on them, configuring temporary directories, shutting down antivirus, firewall, and update applications etc. Setting the sequencer workstation often consumes valuable resources.

Another challenge relates to sequencing complex applications. Sequencing complex applications, such as large productivity suites, is often a cumbersome process. Package accelerators provide a simplified way of sequencing these applications by providing a predefined script or “recipe” for sequencing an application, yet most of the administrators are not able to take full advantage of them either due to lack of awareness of their existence or concerns regarding violating software agreements.

Another challenge relates to sequencing multiple applications in parallel. Currently there is no automated way of sequencing multiple applications in parallel.

Another challenge relates to storing virtual packages on a server. Once the sequencing is completed, the administrator is responsible for setting up the package on server for streaming. This means setting up server infrastructure and configuring an appropriate security model on the server.

BRIEF SUMMARY

One embodiment illustrated herein includes a method that may be practiced in a computing environment. The method includes acts for providing virtual applications from a remote based system based on native applications. The method includes, at a remote based system, receiving a native application from an on-premises system remote from the remote based system. The method further includes at the remote based system, sequencing the native application into a virtual application. The method further includes providing the virtual application to a system different than the remote based system.

DETAILED DESCRIPTION

Some embodiments may implement a hybrid service model where customer can sequence in the cloud (or more generically in a remote based environment) or seamlessly migrate existing sequenced packages to the cloud. Notably, as used herein, where examples are illustrated using the so-called “cloud”, embodiments may be implemented generically in a remote based environment as illustrated above in the explanation of cloud based computing. Embodiments may alternatively or additionally implement publishing sequenced applications (both new and existing) from the cloud. Embodiments may alternatively or additionally implement automated state management and recycling of virtual machines. Embodiments may alternatively or additionally implement integration of the sequencing (both on-premise and on-cloud) with a package accelerator service.

Before elaborating on the implementation specifics, a more general treatment of the specific features of some embodiments is illustrated. As noted above, some embodiments include functionality for sequencing in the cloud. A sequencer, and the process of sequencing, monitors the installation and setup process for an application, and records the information needed for the application to run in a virtual environment. A sequencer can be used to configure which files and configurations are applicable to all users and which files and configurations users can customize By sequencing in the cloud, the administrator does not have to take the hit of the sequencing overhead of configuring the OS to satisfy pre-requisites because the sequencing service can automatically handle these tasks. As the sequencing is being done in the cloud, the sequencing service is responsible for using pre-created images which have the latest patches and/or software updates available on them. The sequencing service also handles installing the sequencer and fulfilling the sequencer pre-requisites before starting the sequencing. The user would essentially only need to feed an installation package, such as an MSI file or other installation package, and they will get back virtual packages. This would not only ensure that sequencing is done correctly by avoiding any manual errors but also save time and money which administrators would have spent in sequencing and configuring the sequencing the OS.

Embodiments may implement smart sequencing. The sequencing service is smart because it can determine if, for a given installer, a package accelerator is available. Package accelerators provide a simplified way of sequencing these applications by providing a predefined script or “recipe” for sequencing an application. The sequencing service can determine availability of accelerators by being integrated with a remote sequencing package accelerator service to make the determination if a package accelerator is already available in the cloud. If the customer chooses to use a package accelerator then the sequencing engine would use the package accelerator to aid in the sequencing. As the package accelerators would be picked up from a controlled environment, concerns about violating software agreements could be alleviated as there is an expectation of appropriate licenses having been obtained by the service provider.

Embodiments may implement parallel sequencings. The sequencing service in the cloud may be integrated with a smart state management service so that virtual machines (VMs) can be reused for carrying out sequencings. The smart management service would be responsible for reimaging a dirty VM in an automated fashion once sequencing has been completed on it. Once the smart management service has reimaged the VM, the sequencing service would automatically configure the VM for sequencing. Also the design of the sequencing service may be configured to allow multiple worker roles to carry out sequencing of different applications in parallel while maintaining a knowledge of their state.

Embodiments may include seamless migration of existing virtual packages to the cloud. A web front end can expose an interface so that the existing packages can be auto-imported to the cloud and are available to the administrator for management and publishing from the cloud.

Embodiments may include a hybrid sequencing and publishing environment. The sequencing service can expose an interface which would allow the user a greater degree of flexibility to choose between sequencing in the cloud and sequencing on-premises. Thereafter, even if the customer chooses to skip sequencing on the cloud, they can take advantage of publishing from the cloud. In an alternative embodiment, the customer can choose to sequence in the cloud and use their own on-premise server for publishing.

Referring now toFIG. 1A, a functional flow is illustrated. In particular,FIG. 1Aillustrates a functional flow of a cloud-based application factory and publishing service. One main scenario that is supported includes an administrator102uploading a native application104to a cloud service106. Agents exist on client machines108-1,108-2, through108-nto stream virtualized applications from the cloud service106. The cloud service106sequences the native application104to a virtual application104′ and publishes it to the client machines.

Various sub-scenarios for this main scenario exist. For example, as illustrated inFIG. 1B, in some embodiments, an administrator102uploads existing virtualized applications104′ directly to a publishing (or streaming) portion of the service106. The virtualized applications104′ are then published to client machines (referred to generically as108, but shown with specificity inFIGS. 1A and 1Bat108-1,108-2, and108-n). The service106provides the infrastructure for hosting and publishing the virtualized applications104′ to client machines108.

In another example sub-scenario illustrated inFIG. 1C, an administrator102uploads a native application104to the sequencing portion of the service106and downloads the virtualized application104′ (targeted to a specific version of client agent).

Embodiments may be implemented with logic built into a boxed sequencer to directly interface with a cloud based package accelerator service and to simplify sequencing of complex applications, such as by providing predefined scripts or “recipes”. However, interfacing with the accelerator service is not limited to boxed sequencers. For example, sequencers in the cloud also interface with the package accelerator service.

Some embodiments may be implemented to provide sequencing on a pay-per application model/application-factory basis. For example, an administrator102can upload one or more applications104for sequencing and payment would be made for the number of applications sequenced into virtual applications104′. Customers (e.g. the administrator102) can directly download a virtualized application based on a specific licensing model applicable to the customer.

Referring now toFIG. 2, a block diagram illustration of the application factory and publishing service106hosted in the cloud is shown. The application factory and publishing service106comprises three core components. Namely, the service includes a web front-end110, a sequencer role112, and a reimaging role114. In addition to the above core components, embodiments may also include accelerator logic to simplify the sequencing of complex packages. This is implemented as a web service which provides package accelerators to on-premise sequencer services and/or cloud based sequencer services.

The web front-end110is the component with which a user, such as an administrator102(seeFIGS. 1A-1C) directly interacts with. It provides various functionalities. In particular, the web front-end110provides a web application for uploading native application installers so that they can be converted into virtualized applications and streamed to the virtualized application client. The web front-end110provides a web application for uploading pre-sequenced virtualized packages to the cloud. The web front-end110provides a web service that hosts virtualized applications for streaming to clients108(seeFIG. 1A). The web front-end110component communicates with other parts of the system106via cloud storage116, which may include tables118, queues120and blobs122.

The following illustrates additional details regarding the sequencer role112. Once native applications104(seeFIG. 1A) are uploaded to the service106they are converted into virtualized packages104′ by a sequencing component so that they can be streamed to the client108. This sequencing is done on a sequencer role112. Additional details are illustrated with reference toFIG. 3. The web front end110communicates with the sequencer role112using a queue120-1where it sends a message containing the package name, the package installer, if a search for a package accelerator should be performed, and (if applicable) the package accelerator used during sequencing. A fresh reimaged sequencer instance112-1or112-2which has a clean state (on which no prior sequencing has been done after reimaging, as explained in more detail below) would pick up the message and start the sequencing of the application104. Once sequencing has started on a sequencer instance, e.g.,112-2, it will mark itself as dirty so that it cannot sequence any more applications until it has been reimaged. The process of reimaging is an automated process requiring no user intervention as is discussed in more detail below. The usage of queues, referred to generically as118, and automated imaging allows multiple applications to be sequenced in parallel by different sequencer instances, referred to generally as112, and in an automated fashion.

Referring now toFIG. 4, additional details regarding the re-imaging role114illustrated inFIG. 2are illustrated. Sequencing is typically done on a computer that is in a known state. This is most easily accomplished on a computer that does not have multiple applications installed or running on the system. For this reason a virtual machine hosting a sequencing instance can be re-imaged after each sequencing cycle. This is achieved by maintaining a queue120-3of instance IDs that correspond to sequencer virtual machines.FIG. 4illustrates a reimaging flow.

FIG. 4illustrates at 1, an act of queuing an instance name. For example, a unique identifier identifying a virtual machine instance previously used to sequence an application can be added to a queue120-3. At 2, an act of de-queuing is illustrated. For example, as illustrated, the reimaging instance114-1may de-queue the identifier from the queue120-3. At 3, an act of loading a certificate to use for an HTTPS call is illustrated. For example, a certificate126for use with the service106can be loaded. At 4, an act of sending an HTTPS request to a cloud based service management API is illustrated. For example, a request for reimaging of a VM can be sent to the service106. At 5, an act of getting account details, instance and certificate is illustrated. At 6, an act of validating and accepting a request is illustrated. At 7, an act of reimaging an instance is illustrated. For example, a VM previously used for sequencing may be reimaged.

The reimaging service works as shown above, by invoking the cloud based service management API to re-image a particular instance based on the queue populated by the sequencer role. In particular, the reimaging may be performed using functionality native to a cloud based service106.

Referring now toFIG. 5, embodiments may also implement a package accelerator service128. A sequencer112-3, either running on a worker role in the cloud service106(i.e. on a remote based service) or on-premise (i.e. at a local based service local to an enterprise) can also be integrated with a package accelerator service128. If a customer wishes to use a package accelerator service then the sequencer112-3can query the package accelerator service128for any package accelerators that can be used to accelerate the sequencing process. Package accelerators provide a simplified way of sequencing these applications by providing a predefined script or “recipe” for sequencing an application. A package accelerator service128is a web service deployed to the cloud based service106that stores information about known package accelerators along with the information about the applications and installers for which they can be used. The service itself can be implemented in a very straightforward fashion as only basic CRUD (Create Read Update Delete) operations may be required in some embodiments.

A package accelerator service128will store information about package installers in the cloud storage116. Use of the package accelerator service128is now illustrated in additional detail. A user uploads an installer and affirms that they want to use the package accelerator service128. A sequencer112-3on the worker role (or an on-premises system103) extracts information about the installer such as, for example, an installer hash, an application name, a product name, a product version, etc. The sequencer112-3sends this information to package accelerator service128. The package accelerator service128performs a search, based on the information, to identify any package accelerators and returns any found accelerator information identifying any package accelerators that may be used for sequencing. One or more of the found package accelerators may be downloaded to a temporary location. The package accelerator flow of any downloaded package accelerators on sequencer is then initiated.

An interface defining the package accelerator service128exposes methods for adding and retrieving package accelerators and enumerating any existing set of package accelerators. If no package accelerators are found, then an existing sequencing flow monitoring the application when it is being sequenced is followed.

Referring now toFIG. 6, a method600is illustrated. The method600includes acts for providing virtual applications from a remote based system based on native applications. The method600includes at a remote based system, receiving a native application from an on-premises system remote from the remote based system (act602). For example,FIG. 1Aillustrates a service106receiving a native application104from an administrator102at an on-premises system103. Illustratively, an on-premises system may be a system in close physical proximity to an enterprise. For example, the on-premises system may be located, physically, in the same location as the administrator102. The remote based system (e.g. the service106) may be located physically remote from the administrator102. In particular, the remote based system may be a system that is located and connected that a number of different enterprises, each with their own on-premises systems, can connect to the remote based system.

The method600further includes at the remote based system sequencing the native application into a virtual application (act604). For example, as illustrated inFIG. 2, a sequencer role112at the remote based system106may be used to sequence a native application104(seeFIG. 1A) to a virtual application104′. The sequencer role112may sequence the application104by installing and setting up the application for use and monitoring the installation and setup process for the application104. The sequencer role112records information needed for the application104to run in a virtual environment.

The method600further includes providing the virtual application to a system different than the remote based system (act606). For example, as illustrated inFIG. 1A, a virtual application104′ can be provided to client machines108. Alternatively, as illustrated inFIG. 1C, the virtual application104′ can be provided back to the on-premises system103to the administrator102.

As noted above, and as illustrated inFIG. 1A, the method600may be practiced where providing the virtual application to a system different than the remote based system comprises streaming the virtual application to one or more clients. Also noted above, and illustrated inFIG. 1C, in an alternative embodiment, the method600may be practiced where providing the virtual application to a system different than the remote based system comprises returning the virtual application to the on-premises system.

The method600may be practiced where sequencing the native application into a virtual application is performed by a virtual machine. Such embodiments may further include the virtual machine marking itself as dirty as a result of performing the sequencing operation. This can be used to cause the virtual machine to be reimaged prior to being used for a subsequent sequencing operation on another virtual application.

The method600may be practiced where sequencing the native application into a virtual application is performed by a virtual machine. Such embodiments may further include reimaging the virtual machine used to sequence the native application into the virtual application. In particular, this allows a “clean” machine without lingering settings or data to be used to perform sequencing operations.

The method600may further include examining the native application to be virtualized. Based on examining the native application, embodiments may include performing a search for one or more accelerators that can be used to sequence the native application to a virtual. The accelerators include scripts defining a set of sequencing actions that can be used to accelerate the act of sequencing the native application into a virtual application. In general, the method600may include performing sequencing acceleration using one or more predefined accelerators.

Some embodiments of the method600may be practiced where different roles of the remote based system communicating through remote based storage. Examples of this are illustrated inFIG. 3, which illustrates communication through queues, such a queue120-1.

Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission computer readable media to physical computer readable storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer readable physical storage media at a computer system. Thus, computer readable physical storage media can be included in computer system components that also (or even primarily) utilize transmission media.