Re: I'm a bit confused
I'm not sure how that would save me any money. Software licenses make up almost peanuts on the cost of a DC these days. Using retail pricing, It's like $12,000 per server for all Windows Server 2012 R2 licenses including the guests running on them. If you buy 72 Cores, 6TB per server, you put 3 into DC A and 3 into DC B... that makes it cost a total of $96000 for operating systems. And nobody pays retail. So it's like $40,000 instead.
The reason you use Hyper-V instead of KVM is that Windows is paravirtualized on Hyper-V and RAM consumption is more than halved on Windows Guests. That saves nearly $2 million on RAM. Add the fact that it appears that server 2016 will paravirtualize the scheduler as well and that saves maybe $500,000 on CPU. Then add to that for interconnect that Hyper-V has full RDMA support on Ethernet or Infiniband and you can save a ton of time migrating virtual machines.
I love KVM and Open Stack, but I have a business to run. OpenStack and Azure have grown to become amazing platforms. The main difference is that I simply don't want to hire 50 people to sit around dicking with making my systems run on OpenStack. I'd prefer to just download prebuilt, supported and maintained apps from a vendor who has ten thousand customers depending on that app, so when something goes wrong, the vendor works out not only a quick and dirty hack, but a solution that had some quality control on it.
I suppose the comparison is the C programmer and the C#/Java programmers. The C programmers want to reinvent the wheel every time they start a project. They want to have absolute control over every function and they're going to write a 5 million line system using all kinds of archaic methods that end up using things like GObject from Glib because instead of using an object oriented language, they'll reinvent the entire concept of an object and even emulate the C++ vtable using macros which are damn near un-debuggable. Their lack of dependence on a garbage collector which require them to invent a memory management system which is slow as hell because clean-up always has to be run immediately instead of during idle cycles. Their code will take 3 years and require 25 developers working full time to maintain and they'll constantly suffer from memory leaks, performance issues, lock-ins blocking refactoring etc... They will claim that their method of programming is pure and better and the buy paying them to write it will think he's getting state of the art awesomeness but in reality is just getting a headache.
The C#/Java developer will focus on the job which needs to be accomplished and make use of pre-built libraries, a great C#/Java developer will make use of asynchronous tasks and manage their garbage collector and limit wasteful tree walking when it's not needed. They'll use proven and optimized classes and interfaces which are used by a million other developers and are hardened like a rock. While primitive operations in the C code ran much faster, overall the C#/Java code accomplishes every business task faster as optimized C# and Java code tends to use far less complex algorithms and thanks to threading and delayed memory cleanup, the code can spread cores cleanly. And most importantly, they'll develop 50,000 lines of code and deliver code which is clearly written and maintainable. Oh and they were in production in a month or two.
There are simply no platforms currently on the market which actually facilitate delivering business on OpenStack with KVM and/or Docker. The tools themselves exist, but the packages simply don't. Azure is a hair better since Microsoft's has worked REALLY REALLY hard on making "applications" or packages easy to move and deploy in multiple places. The biggest shortcoming in my eyes currently is that I can't see how to legally (within the license) distribute Windows Server as a guess as part of a package unless you're Microsoft.
Oh.. and Hyper-V runs RedHat (which is obscenely expensive) as a guest. So, add to that that Windows has full Docker support as well, I don't really care what the guest OS is, Hyper-V and Azure has me covered. Unlike RedHat, KVM, etc... who will probably keep focusing on 10,000 new ways to deploy new apps, I'm pretty sure the Azure platform is pretty stable now. I'm pretty comfortable knowing that Azure Stack, once officially released will have excellent app support and that most vendors who offer their apps as part of the Azure Cloud library will support Azure stack as well.
It would of course be nice if Amazon or Google released their platforms for private clouds as well, but I don't see that happening. Since neither me or any of my customers can legally use public cloud or any cloud not on their physical premises or connected to any Internet connections at all, those systems are simply not in the cards for us.