Cloud-ifying Virtual Desktop Solutions

Envisian’s clever thinking and coding reduced our client’s public cloud cost blow out by 80%, which translated to a per annum saving of some $2.5 million.

 A major university with international campuses, had deployed its virtual desktop solution (Citrix RDS) to the public cloud (AWS).  The ‘lift and shift’ was not delivering the expected functionality and value. In the Cloud, the cost of the service was becoming quite expensive, creating a growing reluctance to use it to its full potential.  The university had to roll back the deployment and called on Envisian expertise to find an alternative solution – urgently.

The university’s service needs to handle a very large user base and a diverse BYOD load, with 100% concurrency at crucial peak times. In addition, it requires an extremely high degree of consistency across thousands of session hosts to ensure user expectations are delivered on each login, regardless of where it was initiated and handled.

Our review found that Citrix RDS was spreading all active users as thinly as possible across all hosts in Cloud. While this default is fine for an on-premises environment, it is the opposite of the desired functionality when hosting in the Cloud. In the user-pays environment of the Cloud, you want each successive host to reach full capacity before spinning up the next instance.

While little could be done to remedy this immediately with Citrix, our technical expert found that the default behaviour of the Microsoft RDS (included with the OS licence) could be adjusted to provide an interim solution.

Using some clever thinking and coding, we made use of AWS auto-scaling features and an alternative load-balancing algorithm to cater for variable user sessions. Our solution utilised smaller, cost-effective AWS EC2 instances rather than larger, expensive instances as originally deployed, demonstrating an 80% saving on infrastructure costs, while improving user experience and reducing administration effort.

Here’s what we did.

Our first step was to integrate the API in the Microsoft RDS broker service, enabling the load balancing and session draining to be remotely controlled in code.  It gave the service the ability to switch resources in the cloud ‘on’ or ‘off’ based on instantaneous demand and available resources, as well as to add or remove hosts from the cluster services on demand.

 Once the service had been tested to confirm that it was reliably auto-scaling, we converted the code base into an automatic CI/CD pipeline, using scripts that matched the skills and knowledge of the client’s technical team. Code automation allowed services to routinely complete a Quality Assurance (QA) test prior to entering production. This, in turn, triggered an existing cluster to begin deprecation and clean up the environment / active directory of any stale objects.

Using historical data from the existing monitoring tool, we developed a simulation tool to demonstrate cost savings and functionality at various load scenarios. The tool also automated the creation of image and cluster components ensuring consistency across the solution.

Finally, we took into account the Cloud functionality of the various applications.  We added testing tools that would optimize costs based on user density for each AWS EC2 instance type against various applications, ensuring servers weren’t over/under utilised. We created further tooling to integrate operational statistics from the RDS clusters into monitoring dashboards, enabling demand and operations to be communicated instantly to the support team.

A good rule of thumb when moving to Cloud: don’t assume that your existing virtual technologies will be compatible with the Cloud environment.