With the advent of virtualization and End-User Computing (EUC), a complex set of variables comes in to play in order to build a successful EUC solution. Over time, I have learned my best bet is to use the Occam’s Razor approach, designed by English philosopher William of Ockham. Occam’s Razor is a problem-solving principle that states among competing hypotheses that predict equally well, the one with the fewest assumptions should be selected.
Other, more complicated solutions may ultimately prove to provide better predictions, but—in the absence of differences in predictive ability—the fewer assumptions that are made, the better. He is also credited with stating, “entities should not be multiplied unnecessarily.” In simple terms, the simplest, working solution, is the best solution. So often it is easy to dive into the abyss of technical capabilities and get lost in that ocean, drifting, waiting for a lifeline.
To keep things in context here, I would not suggest using triple the resources so you don’t have to virtualize one application. Simple is also much more than how technically complex a working solution is. Simplifying deployment and management are key pieces to the puzzle. Today, there are A LOT of options available to solve your technical problems within the EUC realm. If you ask the vendor, their solution can walk on water and bend space time. Many of these tools are great but can also have the most pragmatic Engineer jump off the deep end and scheme a strategy that creates a black whole of abysmal technology.
If I could provide some thoughts…
When tasked to design a solution, ask yourself three questions. First, why? Is there a reason to do it that way or does it just sound cool? Second, is the juice worth the squeeze? Are you spending weeks to eliminate a task that takes 15 seconds to do manually? Third, what is the impact? Will this impact operability? Will this impact ease of management? Here are some almost universal truths I have found in my EUC travels.
- Plan. This may be the craziest idea I place in this blog. What kind of anarchist am I? Seriously though, the idea that you can make it work is a kiss of death. Shortcomings and oversights can stall or downright put your project out of its misery, and it WILL be misery if you don’t plan.
- Define your use cases. Determine what your users will need. Sometimes you can qualify them or disqualify them before you ever get a quote. The users that are running SQL servers on their systems running queries all day – good luck with that!
- Use tools to assess your environment. Seriously, you cannot wing it! This isn’t for the folks trying to virtualize their kiosk workstations. If you are an enterprise with 1,000 users and six different use cases, the capital expense you spend to get a good assessment will be saved 10 times over in the operational expense and Rolaids you will be continually purchasing.
- Inventory your applications and licensing. Ensure you know what you are getting into because, at the end of the day, your job is to get users their applications. Ensure that licensing is or can be obtained to fit within the deployment model you have chosen or have been forced to use.
- Do the math! OK, you can use a calculator, but run some numbers bro (or sis)! Look at not only the infrastructure requirements, but also growth. Don’t think you are done because you figured your IOPs, CPU, and memory. How fast do your users profiles grow? How fast does your image grow? The best way to minimize risk is to draw out the solution with math. You should be able to know exactly what the environment will look like before you even have it if you use solid math.
- You are not going to virtualize every application. I promise you, you will find yourself trying to cut through a Constantine barbwire spider web of integration that will leave you wondering what is impacting what. If you are setting up a VDI environment, find common denominators and leave them in your image whenever possible. This will allow a simplistic approach to management. How do I patch these applications then you ask? You still need to patch the OS so you will have plenty of opportunity to patch locally installed applications to your heart’s content.
- Try to get to a non-persistent, linked clone environment. That should be the goal. The bonus in ease of management and resource consumption makes this a no brainer. There will be use cases that will not allow it, but don’t let that discourage you. You cannot always get what you want. I once heard, if you try sometimes, you just might find, you get what you need. Set a goal and let the use case determine if it is feasible.
- Just because it is easier to create a pool for every use case or static desktops for everyone does not mean it is the simplest approach. It is a gargantuan, management nightmare. If someone would argue it is the simplest solution, I would argue it is easier to use physical desktops then VDI. There are some situations that make this a necessity. Really make sure it is and think outside the box. One of the biggest goals and key business drivers is consolidation and cost effective use of resources.
- For all the complexity you introduce there is often a tax associated with it. Most times this tax comes out of infrastructure performance or capacity. Sometimes it comes at the expense of your sanity and free time. As the saying goes just because you can, doesn’t mean you should. Who ever said that was a genius! Here are some examples of the complexity tax.
- Streaming 100 applications via ThinApp. Those applications being streamed consume bandwidth. Those applications will require IO on the shares they are streamed from. Make sure there is a reason you do it.
- Creating 20 pools to keep from having to ThinApp a couple applications. Those pools will have Replica disks that are IO intensive, they will consume space, and it sounds like they will probably require their own image (I will touch on that next). If you have a reference architecture based solution by any of the big vendors out there, I guarantee you they did not design it for 20 pools. You can delete that PDF and empty your Recycle Bin if that is the road you go down.
- Creating too many images. Managing multiple images is a pain in the butt. The last thing I want to do is run Windows Update four or five times, much less update every single other application on that base image. A lot of times, it is hard to have just one image. If the only reason is because one user needs Visio and one needs Project, I suggest you find a way to package those applications.
In reflection, the title and premise of this blog is almost an oxymoron. A simple EUC environment is like a redheaded unicorn (being a ginger myself I can state this without offending any unicorns). You will be hard pressed to find one. For that reason, I find it even more imperative to strive for simplicity, because you will not get it easily. So push for it and compromise where you must. Do yourself a favor, do not be part of the problem. You are here to deliver a solution.