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.