Why Is Microsoft Releasing SQL Server on Linux?

sql server hero
In this post I’m going to look at some of the common reasoning behind Microsoft’s recent announcement that SQL Server will be released on Linux, along with my thoughts on why I think Microsoft is releasing this $2 billion business on an open source operating system.

Stealing Business from Oracle

I have no doubt that Microsoft wants to take more business from Oracle. But a line I heard was that some enterprises are running Oracle on Linux, and Microsoft wants to have an alternative for those customers. The argument is that those customers cannot afford Windows Server. That’s a bubble that begs to be burst.
Any business that can afford paid-for software from Oracle is not short of cash. Switching from any version of Oracle database products to SQL Server will more than cover the cost of Windows Server and the requisite Client Access Licenses (CALs). But to be honest, there are very few organizations that will be able to afford Oracle software that do not already own Windows Server and Windows Server CAL licenses.

Embracing the Competition

Microsoft has made huge efforts to embrace the competition. Office runs on Android and iOS. Lots of apps appear on Android before they do on Windows. Microsoft’s public cloud even features a virtual switch appliance that’s based on a Microsoft Linux distro, and they plan to release that for Azure Stack customers. The world has flipped and rain falls up!
So this must be why SQL Server is coming to Linux, right? Nope. It just doesn’t make sense to me. You won’t just release this big of a product on another platform because you’ve launched a new lock screen for Android. Porting SQL Server to Linux and testing it must be costing Microsoft a fortune. Microsoft’s acquisition of Xamarin might help — I haven’t compiled meaningful code since Visual Studio came on floppy disks, but there’s something bigger at play here.

Windows Server is Irrelevant

Sorry, I’m choking on my breakfast at the moment. Nothing could be further from the truth. Microsoft continues to develop (Windows Server 2016 will probably be released in September) a hybrid cloud solution based on Windows Server, Hyper-V, Azure Stack, and Azure (which is Hyper-V and a super-set of Azure Stack and the Windows Server 2016 cloud fabric). Windows Server will always be Microsoft’s on-premises server OS of choice.
Although small-to-medium sized businesses are slowly moving toward a server-less world, medium-to-large enterprises will never be server-less, no matter what the pundits want to claim. And Microsoft doesn’t want those customers to be server-less either. Microsoft has a unique selling point, which is that they provide services via Azure (their own public cloud), partner services providers (public cloud or hosted private cloud), and on-premises (classic physical server, virtualization, or private cloud) with one common platform (Windows Server) and one common identity system (Windows Server Directory Services). Neither Google or Amazon can do this and probably never will.

What’s Microsoft Thinking? Containers.

I was listening to episode 456 of Windows Weekly and Paul Thurrot and Mary Jo Foley were wondering the same thing. One of them mentioned that SQL Server would be on Ubuntu first and then RedHat Enterprise Linux… why the free Ubuntu first? Now the pieces started to fall into place for me. Let me take you back to when Microsoft first started to talk about Docker and containers.
We often think of containers as a way to deploy stateless applications. Containers aren’t really stateless, but they are expected to come and go quickly. Microsoft discussed several possibilities with containers, including the possibility of running SQL Server in a container with the data files being stored elsewhere. Imagine that an architecture that might let you flip a new version of SQL Server in to replace an old version in seconds.
Containers started in the Unix world before Microsoft started working on Windows Server containers. That’s why I had the epiphany while driving into work this morning. When you are working in Azure and you want to work with the Linux implementation of containers, you deploy a virtual machine running Ubuntu, a Linux distro that has been on Azure for quite some time. And it’s only very recently that Microsoft added RHEL, a distro that is very popular in enterprises.
It makes sense to me that the primary motivation for SQL Server on Linux is containerization. Microsoft already has SQL on Windows Server, and a Nano installation probably will be pretty small. But containerization is already popular on open-source, and Microsoft might want a slice of that pie. Bear in mind that Microsoft is not shy about thinking that containers are the future of services in the cloud, and Microsoft believes that their future lies in cloud services, such as Office 365, CRM Online, and Azure.

To be quite honest, the news of SQL Server on Linux is one of those things that we will wonder about for a year. Microsoft has big visions that take time to evolve, and we get snippets of information over time. Sometime in the future at some conference, the other shoe will drop and we’ll all say, “Ah! Do you remember when they announced that SQL Server was coming to Linux?” I’m pretty sure that other show will be SQL Server in Linux containers in Microsoft Azure and, eventually, on Azure Stack.