Application virtualization (mostly App-V & Thinapp) has been around for some time now, application layering however, is still relatively new. Although assumed by some and theoretically possible in some cases, application layering is not meant as a replacement for application virtualization. In fact, you could say that they go hand in hand. Today there are multiple layering solutions available, and while the concept is the same they all take a (slightly) different approach. By the way, if itโs the (graphical) cheat sheet youโre interested in, I would suggest you scroll down.
App virtualization in general
One of the biggest issues when it comes to application virtualization is that simply not all applications can be virtualized. The more applications a customer has the harder this will be, which makes sense.
Due note that Iโm primarily focusing on a RDSH / VDI deployments
Take a look at some the results of this yearโs Project VRC (the annual Virtual Reality Check). As the graph shows, being able to virtualize around 50 to 60% of all applications on average is hard enough, let alone even higher.
From what I have seen at various customer sites itโs not uncommon for a mid-sized to larger company to have (at least) a few hundred different applications. And if โonlyโ 60% of those applications can be virtualised (again, on average) you are left with dozens, potentially hundreds even, of applications that you will have to ‘present’ to your users in some other way.
And while cloud based applications are becoming more and more popular, they wonโt fit all use cases and primarily apply to new(er) applications in general.
Many older, or legacy applications simply canโt be replaced that easily meaning you will still need to come up with a way to ‘present’ those applications to your users. This is where application layering can help.
The big bad image
So what happens with applications that cannot be virtualized or replaced in another way? Right, they end up in your โbaseโ image. Not something to get very exited about. Letโs have a brief look at some of the cons associated with this approach.
- It will make your applications harder to maintain and manage. When an application needs to be updated / patched you will always have to make those changes on your โproductionโ image. This could also be true for some of your virtualized applications, which might be pre-cached for example, but at least you have a choice.
- Although, based on permissions, your users will only be able to see and start what they are allowed to (at least that’s what they think) there will (potentially) be a whole bunch of applications on the base image that need to be shielded and/or hidden so users will be unable to locate and start the them. Not to mention that although not used by everyone, all applications will still need to be patched and updated.
- The same applies to adding new, and removing old applications, itโs not dynamic, at all.
- You will have a hard time installing and maintaining multiple versions or editions of the same software.
- Your image might potentially grow up to hundreds of GBโs. This doesnโt have to be an issue per se, but it sure can be.
- I have come across (multiple) applications that needed to be updated on a weekly basis, or twice per week even. Queuing the updates and applying them once every two weeks or perhaps only once a month is far from acceptable in most cases. Can you imagine the horror?
- Itโs not that hard to see how all this will negatively impact production and not to mention your users. Think about it, when updating and thus changing a production image, with most companies it will need to be retested and โacceptedโ each time before taken back into production as part of their standard โchangeโ protocol. This will take one or two day at a minimum, and thatโs fast, trust me!
- This could easily force you to create multiple images / siloโs, based on departments for example, while it should be, less is more.
- Another consideration might be the use of fat clients (niche software) or another form of persistent desktops, which you might not want to do, preferably.
- Application lifecycle management becomes much harder.
- And there is more to consider.
Bring on the layers
Although this post isnโt meant to give you a detailed technical explanation on how layering works, and this will also differ per product (vendor), hereโs a simplistic explanation on what it is aboutโฆ First an application gets installed / captured on a VDH or VMDK file (virtual hard disk).
This virtual disk will then be mounted onto a virtual machine (assigned to a user or machine, this also differs per layering solution). In some cases a so-called in-guest mount is also optional making layers available to physical machines as well.
Almost without exception all application layer vendors make use of (mini) filter drivers a.k.a. write filters (write when capturing data and read when the application is in use) residing in the base Operating System to โmanageโ the file system containing c:\ etc. These โfiltersโ will also make sure that all application layers mounted to a machine will be seamlessly merged into the file system making them appear as if they were installed locally, including any .ini, .dllโs, registry entries and other files that may come with it.
From there on any โcallsโ made to the file system, when launching an application for example, will be โfilteredโ and directed to the appropriate application layer, or VHD / VMDK file.
How do they help?
Some might argue that using an application layering solution ads yet another product to the stack, itโs another โtechnologyโ and potential interface that admins need to get familiar with. It will also come at a certain cost with regard to purchasing the product, licenses and so on. Applications will not be isolated like with app virtualization for example. However, these cons, if you can call them that, are soon forgotten when you have a look at some of the pros that come with application layering. For exampleโฆ
- As for the โanother product to the stackโ argument, yes thatโs true, but if you forget what is going on under the hood technology wise, which is easily done, then learning how to deal with layers (creating, assigning and updating them) will probably only take you a couple of hours max.
- Another GUI? Perhaps. But if you are a VMware or Citrix shop for example, then go with App Volumes or App Disks once it goes GA. The impact on your existing product stack will be minimal. And who cares about โanotherโ GUI if it helps you solve some major issues.
- About the costs. I donโt have any list prices to share, but just think about what you would have to do, and how much time and effort it will take managing all your applications, or environments that you might be managing as a consultant, when taking the โtraditionalโ route.
- No isolation. Yes. But if applications canโt be virtualized thereโs usually a reason for this. I mean; being able to interact with the underlying OS and any applications or other resources that might reside on there can be an advantage just as easy.
What about some of the (other) prosโฆ
- No more applications in your base image, with a few exceptions free for you to choose.
- You might end up with just one โgoldenโ image, maybe two.
- No need for physical or other type of persistent machines if you donโt want to.
- Applications can be managed completely independent from each other, on a per layer basis if you will. Even on different time schedules or โon the flyโ if needed, without impacting your production environment.
- It also works for drivers, add-ons, plug-ins and so on.
- Applications can be added and removed dynamically, the user does not have to log out, reboot etc. When a layer has been added the application icon will appear almost instantly on the users desktop, same with removing layers.
- They all work on top of your existing infrastructure, leveraging Active Directory for layering assignment to users, groups of users, machines and so forth.
- Non-persistent desktopsโฆ
- Support for all Hypervisors (does depend on solution chosen) and works for all major RDSH and VDI platforms out there.
- When combined with a personal data / app disk (optional in most cases) you can achieve persistent desktops but still maintain all the advantages of non-persistent.
- Most application layering products have build-in application lifecycle management capabilities.
- Reduces storage, compute and network costs. Not to mention the time it takes to rapidly โpackageโ and provision applications to users. Including overall management.
- Layering and application virtualization go hand in hand.
Some specifics
This is where it starts to confuse people. To start, when thinking about implementing an application layering solution there will always be a few (basic) questions you have to ask yourself (or out loud) with regards to the platform you are supporting or going to support.
- To start, is it Citrix XenApp / XenDesktop, VMware Horizon / View or maybe โplainโ Microsoft RDSH that you want to support?
- The same goes for supported hypervisors. Depending on what you are using your options might be limited to a few vendors.
- Is there a steep learning curve?
- Does it need to work for persistent as well as non-persistent, and does it?
- Do we need to be able to assign layers to users, machines or both?
- Does it support both VHD and VMDKโs?
- Can we assign layers to virtual as well as physical machines?
- How about the rest of the vendor product portfolio, do they offer anything else that might benefit us combined with application layering?
- For example, do they offer a (persistent) personal data / app disk solution? Would I like to use it?
- A user profile solution (based on layering as well) perhaps?
Application Layering Cheat Sheet
Since not all vendors support all use cases, and it can be hard to keep them apart, I thought it might be helpful to put together a simple but, hopefully, effective application layering cheat sheet. To keep it from spreading onto multiple pages I focused on five of the major vendors within the app layering playing field today and answered questions with regards to, which Hypervisor, virtual and physical, persistent and non-persistent support, assignment to users and machines etcโฆ I’m aware that there is still some info missing, but again I wanted to keep it as ‘portable’ as possible. Please let me know what you think.
One response to “Application Layering questions? I got answers. Graphical cheat sheet included!”
Thanks much for this article, Bas. How would you say this contrasts with a Storefront option to customize the desktop oneself, based on what is made accessible to the end user on a controlled basis? What about the XenServer vDISK as possible way to keep the main image storage “clean”?