In a recent email conversation, the relative virtues of Hyper-V and VMWare were being discussed. I stuck my hand up to suggest going with both. Why? Because heterogeneity is a good thing. In this post the topic is two competing hypervisors, but the arguments are the same for almost any technology. And they mostly apply to open technologies as well as to closed, proprietary technologies.
Whether Hyper-V or VMWare, having all your eggs in one basket is a bad idea. Even if your VMs run better on VMWare than on Hyper-V, or Hyper-V costs less than VMWare, use both. Put the less demanding stuff on Hyper-V, or the most common application on VMWare. If you have few skills in one or the other, run up the least important application on the one you are learning.
That way if one fails, then at worst you haven’t lost everything; at best you can bring everything back on the other. “Failure” can be anything – a bug, the vendor going bankrupt, one or the other technology advancing faster, licensing costs or conditions changing, the business relationship souring, or being unable to hire the skills you need for the technology.
By solving problems on both platforms and having the know-how to readily move applications between them, you are ready for either platform to fail; you have avoided (or at least reduced) the risk.
Having more than one technology in the mix – properly in the mix, not just in a lab – also prevents you falling prey to lock-in. Normal lock-in is where you rely on unique features of a product, so cannot move away from it without a redesign; inertial lock-in is where you could move, but the effort of moving is so great that you are effectively tied to one product. Either way you are left at the mercy of the vendor.
Some might say that this sort of argument only applies to large installations; that if you only have a few hosts, the risk is minimal. That’s not necessarily true, though.
Any number of hosts, however small, can be very important to the business concerned. It might be their entire business, for all we know – and losing it would be just as painful to them, maybe more so, as for a larger enterprise with a hundred hosts, or a thousand.
If a business intends to get bigger, it makes a lot more sense to build heterogeneity in early, while it’s relatively easy, rather than later, when zillions of decisions have been made on the assumption that it will all and always be Product X. It will also let the business find out, as it grows, whether one or the other solution fails to scale for them, and to find out early enough to change without it being a major problem. Not only that, but to change it to another technology that is already familiar and where they have already solved the problems and got the skills.
It is a great deal easier to abandon heterogeneity than to regain it.
The risks of homogeneity have to be balanced against the costs of heterogeneity. At very least, though, the issue should be consciously considered. You need to be able to say, as the last light goes out, “I did warn you….” 🙂