We have considered various options around how to migrate a SQL database to Azure and concluded:
On-Premise highly consolidated virtualized environment with SQL Server running on VMs whilst the virtual hosts are licensed – this is the most cost effective model – moving to cloud will be more expensive unless you move away from MS SQL.
Azure Based Virtual Machines – VM must be licensed not the host so significantly more expensive than on-premise
Azure SQL PaaS offerings – feature parity with on premise implementation is lacking and may prevent migration plus will end significantly more expensive than on-premise.
Are there other options that allow MS SQL to be kept at a reasonable price?
If there are no obvious options that allow the cost of running SQL in the cloud to be kept the same as on-premise are there any “out of the box” options?
What about machines that run in public cloud but on customer specific hardware – would this help?
Azure has several of these – for example:
D15v2 or DS15v2 about which Microsoft say that the D15v2 or DS15v2 “is isolated to hardware dedicated to a single customer.” – a 3 year Reserved Instance would cost £883 per month
E64i v3 about which Microsoft say “Azure Compute offers virtual machine sizes that are isolated to a specific hardware type and dedicated to a single customer. These virtual machine sizes are best suited for workloads that require a high degree of isolation from other customers for workloads involving elements such as compliance and regulatory requirements.” – not available in the UK
G5 about which Microsoft say “G5 instance is isolated to hardware dedicated to a single customer.” – not available in the UK
But these would only help us if multiple VMs were running on hardware dedicated to a single customer and that customer knew about it, could prove it, and Microsoft were prepared to accept the licensing only of the underlying hardware… so it doesn’t sound very hopeful.
Plus these are not your usual SQL servers – the DS15v2 has 20vCPU and 140GB memory so would only be useful here if it supported nested virtualization (i.e. running Hyper VM or VMware ESXi inside the Azure VM) and the DS series (the only one available in the UK) does not.
The dedicated VM SKUs are large VMs because this is only way MS can ensure a return on investment for the hardware purchase – if they allowed a dedicated version of the DS2v2 or DS2v3 VM then they would need that customer to purchase a lot of them in order to ensure they covered their costs but they cannot guarantee this so its not an option they offer.
Some Azure VMs are big enough to be virtualization hosts themselves – would this help?
Two VM types at present support nested virtualization – the Dv3 and Ev3 series. Assuming that the Microsoft licensing Ts&Cs around SQL allow that the Azure VM (rather than nested VMs) need to be licensed this could be a viable option.
Take as an example the D48s_v3 – it has 48vCPU and 192GB memory. At present in UK West this is £1769 per month as a 3 year RI – it could run 22 x 2vCPU / 8GB memory nested machines running SQL. SQL Enterprise licensing would require 24 2-core license packs at £2500 each meaning a total cost of £60k.
Conversely (for comparison) to run 22x D2S_v3 (2vCPU, 8GB RAM) would cost 22 x £77 per month (3 year RI) = £1694 per month. SQL licensing would require 22 x 4 core licenses or 22 x 2 x 2 core license packs – 44 core license packs which would have a total cost of £110000.
So using nested virtualization in Azure could be an effective way of reducing the license cost whilst continuing to use Enterprise Licensing.
VMware hosts available in Azure?
Microsoft / VMware have recently launched in partnership with “CloudSimple” a Vmware ESXI environment that runs on Azure – this can be found in the Azure “Add Resource” workflow by searching for VMware and selecting “VMware Solution by CloudSimple – Node” you then get this screen:
Sounds great – but you have to create a minimum of 3 nodes and its only available at the moment in East US and the minimum cost would be 3*£1753 per month. Plus there is no clear view at the moment as to how Microsoft would view this from a licensing perspective.
Is moving away from Microsoft SQL an option?
There are a number of key questions that need asking and answering here:
Does the application vendor support any alternative database solutions?
Can these database solutions – e.g. DB2, Oracle, PostGRES, MySQL – run in Azure?
What is the database migration path – is this vendor led or can you do it? Will the vendor still provide support if you do the migration?
What are the licensing terms and conditions for running the alternative database in Azure – are they really any better than Microsoft SQL?
Will the vendor support the product in Azure on the alternative database?
Is support available for the database itself when running on Azure?
Until these are answered its impossible to determine whether an MS SQL database tied to a particular application could be migrated to a different database solution.
I think there are some key “take aways” from this consideration of migrating SQL databases into Azure.
Firstly – I think its critically important to identify in any cloud migration budget plan a specific line item for the cost of running SQL in Azure or in cloud generally and you should assume it will cost significantly more (between 3-5 times as much) than it does on premise in terms of its licensing. This is especially true if you want to merely lift and shift on premise infrastructure into Azure.
Secondly – generally moving to cloud will reduce capex expenditure in the long term but increase opex expenditure year on year. But with SQL moving to cloud without revisiting what your enterprise database strategy looks like will make expenditure much higher in general – thus our advise is to think very seriously about SQL and what it will look like for you in the cloud.
Thirdly – I think application roadmaps are crucially important – if an application is going to be removed from the estate or migrated to a SaaS offering or upgraded or an alternative supplier is to be considered then considering changing its database at the same time would be much more cost effective that leaving it “as is”. For example contractually requiring a supplier to support the Azure SQL PaaS offering, MySQL, or PostGRES is probably a good next step in application roadmaps.