Being a Sr. Architect within Citrix for almost a decade, I've been asked by more Citrix administrators than I could ever count, wanting to know if they should virtualize their XenApp environment. My typical response, which is common for a consultant, was "It depends." Unfortunately, this is not an easy yes or no question. XenApp is a unique beast in the delivery center. Users don't interact indirectly with a XenApp server like they do other systems (database, web, etc). Instead, users work on the servers directly. And if the servers have been designed appropriately, they should reach their memory limit or CPU limit.
Let's say, for example, your business is to write screenplays for "The Simpsons" and you have a set of XenApp servers hosting a single application for storyboarding. This application is critical to the business. On average, throughout the day, the CPU is 60% utilized and the memory is 80% utilized (4GB on Windows 2003 Server). What advantage would you gain by virtualizing this system? The hypervisor WILL take resources. Chances are slim you would be able to host a second virtual server on this physical system. In this case, I don't see where server virtualization fits. You could add more memory and additional CPU sockets, but you are spending more money just to try to save money. Of course there are some XenApp servers that are underutilized. Why? Was it an improper design? Or was there a business reason? With underutilized severs, we do have the opportunity to reduce the XenApp hardware footprint somewhat. But in my opinion, server virtualization is trying to solve a small problem in the XenApp world, consolidation. With proper hardware design, this can be mitigated. I have seen, based on my experience as a consultant and an administrator, the bigger challenge is management, availability and flexibility.
When I was an admin, we used to have a scripted build for our MetaFrame 1.0, 1.8 and XP servers. The scripts were very elegant and worked like a champ (I can say this because I wrote them), but they were a pain to maintain. Plus you had to take into account hardware changes, application modifications, etc. I've seen people go to cloning-like solutions, but you still have hardware configuration challenges, which I've seen some people end up with 10, 20 or even 50 different images. When it was time to patch those systems, the good times rolled (sarcasm). Server virtualization cloning has the same challenges, although hardware changes are mitigated by the hypervisor. Cloning in the virtualization world allows one to quickly get a system up and running, but does little for maintaining the images. Just in my own personal lab, I've got roughly 20 virtual images. And it seems like every time I turn on one virtual machine, there are new updates!!! We have all heard of DLL-hell, well new we have Patch-hell.
And we all love the server virtualization solution, even I do, which is why I'm writing this blog entry instead of preparing for my Synergy sessions or watching a good episode of The Simpsons without my boss catching me (Hope he doesn't read these). Everyone is talking about it as the next big thing, but we will continue to have tons of servers that are not virtualzed. Does that mean 2 solutions, 2 sets of images, 2 sets of tools based on your environment? When I think of that, I'm thankful I'm not an administrator. But this is where the story gets really interesting:
Provisioning Server integrated with XenServer, what a great concept. One image for multiple servers. And what's more, that one image can span virtual and physical servers. When I need to make an update to the app or OS, I update one image and reboot the servers. Time to rebuild the farm equals the time it takes to reboot the farm. I don't care if the server is physical or virtual, they are all the same to me. As I use this integrated solution more and more, I am impressed with the ease of maintenance.
But let's get back to the original question... If you now ask me if you should use server virtualization integrated with your XenApp environments, my answer has not changed... I will still say It Depends. But what I say next is to look at the bigger picture. Why do you want to virtualize? What are you trying to solve? What is wrong with your XenApp environment that you are looking at server virtualization? And I bet the more we look into it, we will end up with a challenge revolving around management, availability or flexibility. So I dare you to ask me, but be ready for a longer conversation, which will include some relevant Simpsons quips as well.
If you are interested on architectures, guidelines, implementation guides, then I encourage you to take a look at a set of materialsI've developed focused on the integration of XenServer and XenApp. If you think I'm totally on, let me know so I can show my boss how awesome I am, but I'm also game for a good discussion with differing viewpoints.
Daniel,
I agree with you 100%. Sometimes solutions from the same company may seem an un-natural fit. The "It depends" asnwer really is the right answer when it comes to XenApp.
As an example, I recently wrote a white paper detailing the high-level benefits of running XenApp on XenServer. The primary benefit was in cases where servers are underutilized. This underutilization occurs for a number of reasons. The most common if which are improper design (as you've mentioned) or some business need that has forced server siloes. This business-driven siloing is of the biggest concern to me as a veteran Citrite. What happens is that if one business unit pays for their XenApp servers and wants them maintained seperately from the XenApp servers owned by other busienss units, then that SLA is met by physically seperating the servers from each other. This is bad practice for XenApp servers and it is this business need that has driven a lot of server sprawl in the data center. Another reason for sprawl are service siloing for the sake of isolation which is another story all together.
Customers can maintain isolated environment for business units while maximizing server utilization by using XenServer. So, if one business unit (BU) server is utilized 30% and another BU's server is utilized 30%, then hosting them both on one XenServer will improve hardware utilization, reduce power consumption, reduce footprint, etc., etc., etc. It should also reduce the cost to the Business Units as well since they are not paying for dedicated physical hardware. The challenge in this case then becomes creating a VM internal cost model that can be used to do internal chargebacks. I've heard it's something we are internally working in our own IT department here at Citrix.
Some other things to consider with regards to virtualizing XenApp are that XenServer can be a godsend if you consider the ancillary services and components included with XenApp. XenServer could be a great solution for Licensing services, the IMA Data Store, Password Manager services, a Program Neighborhood Agent site or even Application Performance Monitoring database. These services are a part of the XenApp infrastructure but do not host application sessions. Seperating them away from hosting servers (XenApp core servers) and virtualizing them can increase capacity on XenApp servers (assuming customers have installed these services on farm servers). Now, it's important to note that I am not saying these are best practices. I am simply suggesting that these are areas customers may want to consider for virtualization. As an example, it may not make sense to virtualize Application Performance Monitoring in environments with many servers or devices, especially if it is being used for End-point data capture as well.
Anyways, great post man! Thanks for letting me piggy-back.
Vinny Sosa
Sr. Technical Marketing Manager, XenApp