You may be trying to apply your existing software licensing and support models to the world of machine virtualization. Sometimes this is possible; sometimes those existing models are at odds with this new world. Here are some best practices for deploying a licensed application in a virtual machine environment which allows the greatest flexibility to your customers without creating vulnerability for your revenue stream:
Best Practice #1 – A licensed application that supports a given physical machine should also support all popular virtual versions of that machine
Best Practice #2 – Capabilities of the licensed application should be controlled by a concurrent license which is managed by a license server
Best Practice #3 – Choose between the following two ways to deploy the license server:
a.) Allow the license server to run only on a physical machine and load concurrent licenses into that license server from trusted storage
b.) Allow the license server to run only on a virtual machine that the ISV packages as a virtual appliance and load concurrent license certificates bound to the UUID of the virtual application into that license server
Justification for Best Practice #1: it is futile for you to license your software in a way that reduces or eliminates the benefits your customers receive from running your software on virtual machines.
Justification for Best Practice #2: licensing an application based on properties of the machine running that application no longer makes sense…multi-core and then virtualization destroyed CPU-based licensing, and node-locked licensing can’t tolerate the volatility of virtual machines. You must use a “virtual license” (a.k.a. concurrent license) on a virtual machine.
Justification for Best Practice #3a: providing flexibility on where your customers can run your application may be enough. By forcing your customers to run the license server on a physical machine, you limit your vulnerability to the malicious use of virtual machines to duplicate license server deployments. By using trusted storage, you further limit malicious duplication of the configuration of the physical machine running the license server.
Justification for Best Practice #3b: first, you only have to provide one build of the license server for the one platform of your choice and are able to pre-install and pre-configure it; second, binding to the UUID of the virtual appliance allows your customers to move that virtual appliance without re-hosting its licenses; third, packaging your license server as a virtual appliance gives you the opportunity to encrypt that entire virtual machine/appliance to limit tampering.
What software licensing best practices have you implemented for virtual machines?
Please note that since this original posting, many application producers are adopting new strategies to address virtualization. Here’s a couple of blogs that address licensing in virtual environments: