Amazon AppStream provides developers the basic building blocks for getting performance-hungry applications to consumers without racks of servers. The architecture also makes it easy to deliver Windows apps to mobile devices.
AppStream is an extension of Amazon Web Services (AWS) targeted at application developers and publishers of resource-heavy applications such as games, CAD or those that use extensive amounts of video. It allows application developers to harness resources to publish graphic-intensive applications to the cloud and lets customers use compute, GPU and storage from the AWS cloud. This removes the need for publishers to provision the infrastructure they need to host and deploy their apps while lowering the initial cost and complexity barrier of building apps.
More on Amazon AppStream
Understanding AppStream and Kinesis
An app streaming alternative to Microsoft App-V
The latest offerings from Amazon Web Services
As any desktop virtualization pro could tell you, this functionality isn't ground breaking. The ability to host a Windows application that is accessible from anywhere on many types of devices has existed for more than two decades, and products such as VMware Horizon View, Microsoft Remote Desktop Session Host and Citrix XenApp and XenDesktop can host Windows applications today. These products also integrate GPUs with their stacks to allow the same kind of video-intensive applications.
What makes Amazon AppStream unique is that administrators don't need skilled technical employees or a rack full of expensive, well-connected GPU-enabled servers to build and maintain that infrastructure; they can access it from a third party instead. In fewer than 10 minutes, an AWS CloudFormation template can spin up the necessary resources to provide a host for an application in Amazon AppStream.
Current server-based computing tools use special protocols such as Microsoft's Remote Desktop Protocol, CItrix's HDX or Teradici's PC over IP to lower the network footprint of running Windows applications remotely. But AppStream uses its own proprietary protocol called STX to stream application video elements to the client. AppStream has low client hardware requirements because the application executes in the AWS cloud rather than locally on the client, so it makes sense that Amazon is gearing AppStream toward app developers confronted with deploying Windows applications to mobile clients.
Amazon AppStream architecture
At a high level, AppStream's architecture consists of a host, application, entitlement service and a client:
Host. The host is a Windows Server 2008 R2 server virtual machine in the AWS Elastic Compute Cloud (EC2) service. The server is a very large GPU instance and provides the host with eight 2.5 GHz virtual CPU cores, 15 GB of RAM and an Nvidia GPU with 4 GB of video memory. EC2 can quickly scale the number of servers or instances it takes to host the application and AppStream hosts can live in EC2 regions across the globe. When they're placed geographically closer to the clients, however, it reduces network latency.
Application. Applications that can run on Windows Server 2008 R2 can run in AppStream, but developers should review the source code for pre-written applications. Amazon provides a software developer's kit (SDK) that allows devs to channel input including mouse, keyboard, touch and video, as well as video and sound output.
Developers will also have to consider how to keep track of user data because EC2 hosts do not store data when they are restarted or turned off. Amazon AppStream allows the developers to publish only parts of the application in cloud, but devs could create a hybrid application that lets specific pieces execute on the client while items such as database queries stay in the cloud.
App publishers upload their applications' installers to Amazon's Simple Storage Service (S3), and then AppStream associates the S3 install location -- a URL -- with the application. S3 storage is independent of the EC2 host, so it persists as host instances are created and destroyed.
Entitlement service. An entitlement service is a facility that logs in and authorizes users to access the AppStream application. When a client requests to run the application, the entitlement service authenticates the user. If successful, the entitlement service returns a unique URL to the client that allows it to launch the application. In addition to its own Identity and Access Management service, Amazon provides cloud database services such as DynamoDB and Remote Desktop Services that can store user information.
Client. Developers build clients using the AppStream SDK. This links the clients' device inputs to the application and the entitlement service.
AppStream supports Android versions 2.3 and up, OS X Mountain Lion and newer versions, iOS 7.0 and up, and Windows 7 and higher. Developers should consider the screen resolution of their applications when choosing which OSes to develop their applications for because the display size on a client can differ significantly from device to device.