A. I've gotten this question a lot recently, so I decided to put pen to paper (or finger to keyboard) and talk through the technologies, why we have these technologies, when you should use them, and why you get different answers.
Terminal Services (presentation virtualization) has been around for a long time. Many new features have been introduced but the technology is essentially one or more Terminal Services servers (now called Remote Desktop Session (RDS) Hosts in Windows Server 2008 R2) that run a server OS, such as Server 2008 R2, and support many concurrent user connections. These user connections can be initiated from any client that supports the Remote Desktop Protocol (RDP), including Windows client OSs, thin clients (such as Wyse terminals), mobile phones, and slate devices. Once users connect to the terminal server, they're presented with a full desktop that looks like a client OS environment. Users can run any application that can be installed on Windows, such as Office and line of business applications. The key is that users are sharing the server OS instance and are isolated at a session level from one another. This provides the required security, but because the OS is shared, it isn't possible for users to modify the OS, install software, or perform reboots, because those actions would affect all other users on the server OS instance.
VDI is a relatively new technology but is catching on in many companies. With VDI, you have a number of virtualization hosts (such as Hyper-V server) that host a large number of virtual machines (VMs) that run a Windows client OS, such as Windows 7. Users connect to these client OS instances from any client that supports the Remote Desktop Protocol (RDP), again including Windows client OSs, thin clients, mobile phones, and slate devices. Once connected, the user has a full desktop that's its OS instance and can run Windows applications such as Office and line of business applications. The difference from Terminal Services is that with VDI, the users are isolated at an OS level so, if you want, you can give power users the ability to customize the OS, install applications, and reboot. It's possible with VDI because any actions on the OS won't affect other users' OS environments.
After reading the above, you could assume that VDI does everything Terminal Services does, so you could just move everything to VDI. This assumption isn't entirely wrong (note, though, that RDS supports the ability to only publish certain applications rather than an entire desktop). Just note that VDI is often more expensive than using Terminal Services, and the two technologies have very different infrastructure, licensing, and management requirements.
In a Terminal Services environment, you have one or more servers running server OSs. They host the sessions. Another server acts as a connection broker and initial connection point. This one balances incoming connection requests between the terminal servers and reconnects disconnected users to their existing sessions to avoid data loss. Users require RDS CALs and you need to maintain and patch the servers. You can still use application virtualization technologies, such as Microsoft Application Virtualization (App-V), to provide the applications to users of the terminal servers. Each user uses a fairly minimal amount of memory, based on the applications they run, and you only have one OS instance that's shared between all the users on that box. It's common to see hundreds of concurrent users on a single terminal server.
In a VDI environment, you have one or more virtualization hosts. You also have another server that acts as a connection broker and initial connection point—it balances incoming connection requests between the available VDI client instances and reconnects disconnected users to their existing VDI session to avoid data loss. These server components all need to be maintained. You also have all the client OSs, which might require patching, depending on your architecture. (Some VDI environments can dynamically create the client OS environments as needed from a gold client image, so you only have to patch a single client instance.) Each client OS is a separate VM that needs memory allocated to it—each user has a fairly heavy memory requirement, especially compared to Terminal Services. A server that supports hundreds of users under Terminal Services might only be able to support tens of users with VDI. They could need between 1 and 2GB each, depending on the client OS and applications. Users also need disk space for the client OS (or changes to the OS if you're using streamed images).
Each user still needs an RDS CAL if you're using Microsoft components to manage connections or if you're taking advantage of new features, such as RemoteFX. Each user requires a Virtual Desktop Access (VDA) license if their main desktop isn't covered by Software Assurance. This means that for the same number of users, you need a lot more hardware and licenses if you're going VDI instead of Terminal Services.
Last week I had a call with a client who was trying to decide between Microsoft, Citrix, and VMware VDI for their store locations. The conversation went like this:
Me: What applications will the users need to run and what types of actions?
Client: Microsoft Office, mainly Outlook, with some Word and a couple of line of business applications.
Me: Will the users need to be able to customize the OS, install software or perform customizations?
Client: No, these users are very basic. We want the environment locked down.
Me: Have you looked at Remote Desktop Services? It may be a better fit for the requirements you've described, and it would save you money on licensing and hardware.
Client: No, I've not heard of that, tell me more.
I proceeded to demo to a user experience when connecting to a Server 2008 R2 Remote Desktop Server. The demo included Aero and ran Office that had been virtualized with App-V. The client was blown away and we're now proceeding with an RDS solution at a fraction of the cost of a VDI solution. The cost difference is mainly due to the fact that they can get a lot more users on the terminal servers than if they were running multiple client OS VMs. Terminal Services is also an easier solution to manage and implement.
To be clear, VDI is a great solution. If your users need a power user experience with the ability to customize the OS environment, install their own software, and reboot the OS, VDI is a great solution. If users just need to run standard applications and browse the web and don't require those "power" abilities that require a separate OS environment, then Terminal Services is probably a better option—you'll get more bang for your buck. It's common for organizations to need both solutions, and if you design your systems correctly with virtualized user profiles, folder redirection, and virtualized applications, users can move between a VDI environment and Terminal Services and have access to the same data, applications, and environment, giving you the best flexibility.
So why do you hear different answers? Why will some people say "VDI for all," some say "Terminal Services for all," and some say "Both"? ("Both" is where I fall.) It's largely based on what the vendor you're talking to sells. If you're talking to people who don't have a Terminal Services solution, they'll push VDI for everyone because they want the sale. If you ask a company that has VDI and Terminal Services, you're likely to get a more intelligent and fair conversation that gives the strengths of both while giving you the optimal solution for your business.
Imagine you had tennis elbow and went to an unscrupulous surgeon who only did amputations. He'd advise you to cut off the arm just above the elbow, because that’s all he does and he wants the business. If you went to a doctor who could refer you to an amputation surgeon but also to other types of doctors and therapists, he'd likely suggest some exercises and physical therapy, because he can choose what's best for you based on your actual situation. As a plus, you'll still be able to play the violin.