The Amazon Appstore for Android has a really cool Test Drive feature. It allows you to instantly try select applications through your computer browser or Android phone before you elect to install them.
There's some interesting technology behind the Test Drive, and I'd like to tell you a little bit more about it. Let's start with this diagram:
The app product page in the Amazon Appstore hosts a Player application. The Player application connects to an Amazon EC2 instance which runs multiple independent copies of an Android emulator. The emulator hosts and runs the Android application in a protected environment. The Player application has two primary responsibilities. First, it forwards player input to the Android application within the emulator. Second, it plays the audio and video streams produced by the Android application.
The emulator is supported in multiple AWS Regions. In order to deliver the best possible experience, the Player application is routed to the optimal AWS Region. Each EC2 instance runs multiple emulators and this supports multiple users simultaneously test-driving different applications. My diagram shows four, but this is just for illustrative purposes.
Since the Test Drives are hosted on Amazon EC2, the Amazon Appstore team can easily add additional capacity as needed, and they can add it where it makes the most sense with respect to the incoming traffic. You can easily imagine a traffic surge that moves westward from Region to Region as the daily news cycle makes people aware of the new Test Drive feature at the beginning of their day. This ability to add, shift, and remove capacity as needed is an essential part of every AWS service, and one that many developers take advantage of on a daily basis.
I spent some time talking to the developers behind the Test Drive feature earlier this week. They told me that there are currently a couple of limitations which prevent it from being enabled for every application in the Amazon Appstore. For example, Android applications that attempt to access non-existent hardware such as a phone's camera would currently fail if they were enabled. The team is working to enable additional applications; check in at the Amazon Appstore Developer Blog to learn more.
If you are planning to build an Android application, check out the AWS SDK for Android. If you've already built an Android application and you'd like to submit your application to our store, check out the Amazon Appstore Developer Program.