When it comes to virtual desktops you have plenty of options, you can deploy them on-premises and also on Public/Private Clouds. Deploying a desktop or an application has become very easy thanks to all of the available tools. However, this has led a lot of people into thinking that anything can work well out of the box because it can be deployed in the blink of an eye. Problems arise when users test or even worse, when the solution goes into production. This is when users start losing faith in these technologies, and in the skills of the team that has designed and deployed the environment… If there was any design at all!
No matter how big or small your organization is, and how simple or complex the environment can be, not architecting your environment correctly can lead you to costly re-designs. The cloud hype has led many organizations to rush into it without taking all the necessary considerations in order to deliver a reliable and secure desktop or application for the user without compromising user experience. This is why it is always very important to take a step back to design and architect your environment correctly.
It doesn’t matter if you are delivering desktops or applications on-premises or from any cloud, there are basic design principles that you have to take into consideration when designing any environment, simple things such as the network, the authentication provider, user’s location, and the placement of the applications have to be considered, otherwise your organization or department will end up having more issues than the ones you were having originally.
Make sure your users, desktops, and applications are as close as they can be; if this is not possible, you can always try to improve application performance using Content Delivery Networks (CDN), caching solutions, Database Services, or any other tools offered by the vendors (AWS, Azure, GCP, Citrix, F5).
Keep in mind there is no one size fits all design/architecture that can fit all the organizations or environments. The best starting point for designing your environment, is to think in terms of the best user experience, from there you can start working your way down to reduce costs and management.
In case this is just too much for you to handle, you can always get help from an expert that can work with you to meet your project goals. In the end, this is cheaper than struggling with problems for a while, having to re-design/re-build the environment, and losing credibility.