The worldview of elastic compute, or mine at least, has historically had very little Microsoft involved in it. Recently however, I have attended several job interviews and one question that has invariably been asked is: “We are planning on moving from Windows to Linux. Have you done it before?”

This situation usually arrives through a well-worn path brought around due a number of factors. Most startups don't hire full-time (or even part-time) sysadmins in the beginning to save on costs. Developers in startups, the ones whom I have spoken with, seem to know enough Windows to get a basic web stack configuration working, perhaps even a cluster.

The issues of how to scale out, build resilience and the costs involved are the last things on their mind.

This simple developer world view works fine for development and alpha tests and perhaps limited beta tests, where there is not really a need to add much additional compute resource. Suddenly, "go live" arrives and the site gets crushed. Only then do the real meanings of the terms elastic and scale become crystal clear.

Trying to manage your own physical and virtual infrastructure to scale with Microsoft products isn't any more difficult than it is with Linux, given a good admin. The real problem (perceived or otherwise) is the cost of Windows deployment and trying to work out the licensing models.

Keeping it in your own tin

One of the startups I spoke to came to the troubling realisation that the costs of Microsoft licensing could potentially put it out of business due to the nature of its exceptionally spiky compute requirements and short-lived nature of the instances. There was even talk of completely rewriting the application to avoid the cost.

This spiky usage scenario is not such a problem if you use a public cloud such as Microsoft’s Azure and Amazon Web Services (AWS) to provide by-the-minute billing and the licensing cost is built into the resource-costing model. This usage and ownership model, however, doesn't fit everyone.

Those companies that don't wish to surrender their infrastructure into the cloud: what options have they got? Without a doubt, keeping your elastic compute on your own tin is going to prove more expensive than going cloud enabled, but you also retain a higher degree of control and ownership.

How do you keep your app or service on Microsoft and still run it yourself?

It’s that question that leads us to the main issue of how licensing works for elastic compute in a Microsoft environment, because the key deliverable is also the main issue: how do you deal with a Microsoft virtual machine in a highly elastic environment where the server might only live for a couple of hours?

Historically, Redmond has been complex. After coming across the question of licence-cost-induced migration several times, I decided to investigate and there are a number of options, all with different pros and cons.

Microsoft’s virtualisation card is Hyper V. If you are going all in, then you require the high-end Windows Datacenter Edition, which gives an unlimited number of virtual instances.

The list price is $6,155, no discounts. The average price on a data centre, dual CPU, unlimited core licence is $4,809 for the operating system. In a discussion I had with Microsoft, the firm quoted just under $3,500.

Often, server pricing does not include Client Access Licenses (CALs), a licence for every device accessing the server. CALs are extra and are a not very friendly licensing model for a web-facing firm that will have fluctuating numbers of customers. That’s because this pricing model grew up in the enterprise, where the number of clients was known.

On the positive side, while the processor licensing sounds expensive, Datacenter edition does give you the ability to stop worrying about licensing and if you run several machines on each host, the cost comes right down. Of course you still have the hardware, cooling and lighting costs, too.

This compares to a similarly specified virtual machine in Microsoft’s Azure cloud. Such a configuration, assuming 24/7 usage, excluding disk and network traffic, comes in at $2,640 for the year - according to Microsoft. I realise this is not a true when you compare like for like but it does give an indication of price.

You could argue the Azure pricing combined with elasticity is intended to drive developers directly to Azure. You don't use its resources, you don't pay for them.

An alternative way to do Microsoft licensing is using the “Peak overflow” method, which is basically known as “Own the base, rent the spike”. Simply put, it lets you seamlessly add additional resources to Azure to meet peak demand. There is no fee for any integration and you only pay for what is used on a per-minute basis. The downside is that it isn't on site. Also be aware that Azure is a platform by developers for developers!

You get what you pay for...

When it comes to comparing Microsoft and Linux, let’s be clear: there’s no such thing as a free lunch.

Knowing where to go as you leave startup mode is difficult. If you started on Windows then remaining on Windows means less pain, at least in the short term, but with potentially higher costs.

Going to Linux will reduce the licensing costs, depending on your vendor of choice but the downside comes in those with Windows skills and experience needing to new learn new tools and the Linux infrastructure.

My advice: make your choice up front and stick to it. Changing your mind late will cost time, effort and money either doing it yourself or hiring somebody who wasn't part of your original plan. ®