Envisian’s clever thinking and coding remedied our client’s public cloud cost blow out and led to changes in its vendor’s remote desktop solution.
One of our clients, a major university with international campuses, had re-hosted its virtual desktop solution (Citrix) in the public cloud (AWS), only to find that the move was not delivering the expected functionality and value.
The university’s service needs to handle a very large user base and a diverse device 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. In the Cloud, the cost of the service was becoming quite expensive, creating a growing reluctance to use it to its full potential.
Our review found that the default behaviour of the client’s existing out-of-the box virtual desktop solution had not been adjusted for Cloud. It continued to spread all active users as thinly as possible across all hosts – which is fine for an on-premises environment, but 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.
We were asked to come up with an alternative – quickly. Using some clever thinking and coding, we developed a solution that 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 existing Remote Desktop Server (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. As a result of our work, Citrix adjusted its RDS broker service solution in line with our design/recommendations.