It might seem surprising that - for someone that has spent the last 15 years of his life working with virtualization technologies (even before I found out my hobby could one day become a career) - I really don’t like virtualization conceptually.
Virtualization - be it x86 hardware virtualization or application virtualization - is nothing more then a band-aid type solution for the issue that workloads are still tied to a specific hardware or software ( OS) environment which means that if the workload doesn’t fit the software environment it will run run without loss of functionality and that if the the workload doesn’t fit the hardware environment ( by which I mean both over\under utilization and hardware unavailability) there will be either a waste of resources or impaired or no functionality at all.
Many other advantages - a faster boot-time, snapshotting,deduplication and app portability to name a few - really have very little to do with virtualization an sich.
This also applies to containers - they are just a more elegant solution that actually combines notions of types of virtualization together. Only full SaaS web applications and serverless computing solutions such as AWS Lambda truly solve the issue - where it not that both still use hardware virtualization under the covers although on a bigger scale and with more abstraction built on-top of it.
Back to Life - Back to Reality
But alas…in our world of Office add-in’s, split-brained storage clusters,dll’s and MS NLB we are confined to our physical servers, walls padded with hypervisor layers secured tightly in our infra-as-code straightjackets to keep us from hurting ourselves.
But luckily there is some novocaine for the soul - App-V, formerly Softricity SoftGird ( Very interesting derelict document for those with some interest in IT history: Inside the Grid )
App-V creates an bubble or container which includes all the bits and pieces required to run an application independent of the target architecture - while running locally in the OS and user context (Unlike hosted applications through RDS\Citrix\Horizon). Also an App-V package is truly portable - you can use publishing server or hook them up in XenApp but you can also publish the packages locally using Powershell.
With Windows 1607 App-V has become of the Windows 10 Enterprise OS (Now part of the new Microsoft Business 365 license) and therefore an even more serious option to consider as part of your application delivery environment.
You can App-V packages locally from a SMB or HTTP(!) target by adding and publishing them - relying on some local daemon/tool to trigger a powershell script. And what if you could store your package on a central location with no server overhead and utilizing a content delivery network? Enter Azure Blob Storage.
Running App-V packages from Azure Blob Storage
First of all - yes we could also do this from AWS S3 or any other public object storage service. Secondly - yes anonymous users will be able to get your App-V packages.
But we are doing this because we can. Hey Ho -let’s go!
To use Azure Blob storage you’ll need an Azure subscription. I use my MSDN account credits - to see what it will cost you use the Azure Pricing Calculator.
Inside the Azure Portal create a storage account - pick either classic or resource manager. Inside this storage account create a blob container ( a container with the access type Blob). Take note of the url, we will be needing that later. You can pick any redundancy or performance tier - whatever suits your needs.
Because I am already running my blog and website from blog storage using my thirdpartytools.net domain I’ve also created a CDN endpoint for this container at https://public.thirdpartytools.net.
Typora is great light weight markdown editor. I’m actually typing this on Typora as we speak. So it seemed like a great app to virtualize:
- Create a sequencer VM. I chose Windows 10 for this example but the general rule of thumb is to choose the lowest OS possible ( in order of appearance that is ).
- Make sure your instance is up to date and rebooted if necessary.
- Install the Windows Assessment and Deployment Toolkit for Windows 10
- Run the App-V sequencer, use the defaults
- Save the package as Typora.appv
Now copy the .appv file over to our Blob container in Azure. Mine will be accessible at https://public.thirdpartytools.net/Typora.appv .
To publish the app locally to a Windows 10 Enterprise machine:
- Open Powershell
- Enable Appv :
- Import the module:
- Add the package:
$Package=Add-AppvClientPackage -Path https://public.thirdpartytools.net/Typora.appv
- Publish the package:
Typora will now be available from your Start Menu. Feel free to try this at home (If you have Windows 10 Enterprise installation that is or App-V installed on another OS)!