Remote working seems to have become the new normal since the start of 2020. While working on a crucial and confidential project from remote locations, the engineers are often required to log in to remote desktops or remote servers to use the dedicated applications. This requires applications to be installed on the server with all the components needed to use the application. It can be a cumbersome task as your system or laptop should be capable enough to run the remote server and use the desktop app seamlessly. Let's take the example of AWS. You need to either use EC2 instance (Elastic Compute Cloud) as a remote server or use AWS Workspace as a dedicated service for accessing remote machines just like any other remote machine apps.
However, there is an easy alternative to all this now. A simple URL will allow you to access all your applications and their dependencies in one place. The only other requirement is a good internet connection. And the name of the alternative is AWS AppStream 2.0. Let’s see what exactly this thing is.
AWS AppStream 2.0
AWS AppStream is a service that helps you host all your applications in a browser, and with a streaming URL, you can access and work on the apps just as you do on your local machine. And once you are done with the work, you have to log out, and your work gets automatically saved in the configured database.
Amazon AppStream uses virtual machines to run the applications called streaming instances that provide the OS, GPU, CPU, memory, storage, and networking capacity as required. It is a fully managed service that gives users access to desktop applications from any browser or OS. You can select the applications that you want to stream. And that's not it; you can also provide access to your coworkers. Let's look at its architecture to understand it better.
AppStream 2.0 Architecture
Following is a simple architecture diagram of AppStream with all the essential components. Let’s discuss these components one by one.
Image Builder creates streaming instances for hosting apps. In Image Builder, you can select a system image from the range of images viz., computing to graphic instances, and proceeding further with the desired configurations. This is how the Image Builder looks like:
Once the image is created, you can use a console to load the image in a new window. Locate the “Image Assistant” application used to add your desktop applications to the App Catalog. With this, the users can use the application through the browser.
First, add the application with file types such as .exe, .bat, etc. Then configure it by providing a name (which is to be displayed) and other minor details. Once the application is configured, you will have a tab called "TEST," with this, you can test the applications with either "Administrator" or "End User."
After testing the applications, the next tab will let you load and optimize the apps to reduce the load time. Lastly, you need to provide the configuration details to publish/create the configured system as an image. You can snapshot an image to create newer instances or images, just like you do in EC2. It may take around 20-30 minutes, so sit back and relax.
Fleet is where you use your newly created image to scale it and make it available to users. Under fleet, you need to add basic information such as your image name, network/VPC, subnets, security group, number of instances, etc. Once done with all the details, the important thing here is to select fleet Type.
You will get two options under fleet type, i.e., “On-Demand” and “Always-On.” Here, “On-Demand” will load the instance every time you stream it. Thus, it will take a load time of around 2-3 minutes. On the other hand, “Always-On,” as the name suggests, will have the number of instances always in running instance. The additional cost would be levied in the case later. It would take a few minutes to create a fleet and make it available.
Here, you will be able to add storage and users to your fleet. Under storage, you get an option to add custom storage services as well, and one can add G-Suite and OneDrive as per the requirement. Users can be added using User Pool or Active Directory. It would take a few minutes for the Stack to be active. Once the Stack is in an Active state, you can generate the Streaming URL to access the applications in the browser.
AWS AppStream 2.0 is an excellent service to use, especially when you have business users that require a few apps and not a fully loaded virtual machine. AppStream lets you stream all kinds of applications, from licensed ones to freeware. Here, you can also control the access for end-users in a more straightforward yet effective way. The flexibility in using the storage of your choice is excellent, as it doesn't require you to use another AWS service for storage, and you can deploy your existing Google or OneDrive Storage effectively. I hope this blog will help you in streaming your apps via AppStream. Do not forget to share your experience in the comments section, happy coding!