I just got off a phone call with Mike Culver at Amazon. During the call we discussed some of limitations of the use of Windows based AMI's during which I had an epiphany.
First of all the the traditional ideas of an AMI Bundle have been dropped because of Microsoft licensing limitations. For traditional EC2 Linux users, a local file system image can be bundled as an AMI in order to be used on Amazon EC2. This provides a direct migration path between the cloud and your data center. If you are unfamilar with the concept of of AMI bundling process it first compresses the image to minimize bandwidth usage and storage requirements. Then the compressed image is encrypted and signed to ensure confidentiality of the data, and authentication against the creator. The encrypted image is finally split into manageable parts for upload. A manifest file is created containing a list of the image parts with their checksums. This is one of the great parts of using EC2, I can move my local machines to and from the Amazon Cloud. But for EC2 Windows users, you will need to re-install all your applications, configure the new remote copy of windows and finally copy any required data from your local machine. For a one off EC2 Windows installation this might be ok, but for larger more dynamic, flexible application deployments, this could pose a huge problem.
Well, I think I found a solution. Application Streaming, (A.K.A. Application Virtualization) The basic concept of application streaming is that only specific parts of a computer program need to be available for any Windows EC2 instance in order for the end user to perform a particular function. This means that a given program need not be fully installed on a EC2 instance, but instead parts of it can be delivered over a low bandwidth network if and when they are required.
There are a number of notable solutions that enable Application Streaming including Citrix XenApp, Vmware Thinstall, Microsoft Application Virtualization and Symantec AppStream. Most of these plaforms also double as software license management platforms, automatically enforcing and ensuring compliance with software licenses and preventing piracy, while simultaneously maximizing the value of software assets and optimizing the delivery of future software updates along with there associated licenses.
Software deployment via streaming is perfect for remote delivery across the Internet because it streams only the application functions that an end user actually needs and only when those functions are needed. Rather than delivering the entire application in advance, this approach allows for the ultimate hybrid cloud computing environment spanning multiple cloud providers and traditional data centers. The most obvious use case could be in conjunction to a business continuity solution or cloud based failover environment.
Cloud based Application Streaming may very well be the ideal model for anyone looking to manage Windows applications in the cloud.
As a side, note I'll probably be trying this approach in the coming days. If anyone is interested in learning more about this approach, please get in touch.