6 ms·
The problem and the cost is not just the licensing. It's also the logistical overhead and the complexity tax. Imagine a parallel world, one where you could spi
by InclinedPlane 8y ago
The problem and the cost is not just the licensing. It's also the logistical overhead and the complexity tax.
Imagine a parallel world, one where you could spin up Windows and SQL Server installations with ease and you just get a bill at the end of the year for your licensing costs, with easy payment and financing terms. If that were the way things work (and it is to some extent for the cloud, one reason why azure is so popular) then it wouldn't be terribly bad to deal with MS technology. But in large part that's not how things work. Instead you have to deal with the overhead of finding out exactly what you need (do I want Windows Server 2016? what's the advantage of getting the Data Center SKU? do I want SQL Server clustering? etc.) then you have to go out and buy it, install it. And then, after all of that, you have to occasionally put up with Microsoft barging into your business and doing an intrusive audit to make sure you're not stealing anything.
Compare that to the alternatives out there. If you have a big beefy server you can spin up a VM host and infinity linux VMs, you can run as many copies of nginx, postres, and all the other great technologies out there that you want. And you don't have to be burdened about the complexity of licensing, let alone the cost. When you are paying developers 500, 1000, 1500 bucks a day that complexity cost, and the opportunity cost from not just feeling free to experiment and try things out can easily be more expensive than the actual licensing.
I love C#, coding in VS with the .NET stack behind you almost feels like cheating or like "easy mode" because there's just so much available to you and so much you can do trivially in that world which takes so much work and pain with other tech stacks. But ultimately the truth is that nginx is pretty much just a better web server than IIS and linux is a better platform than Windows, especially for services. Docker on windows is light years improved today compared to where it was a year ago, but it's still an also ran compared to Docker on linux. The Microsoft platform just doesn't have the edge it used to, which makes it hard to justify the cost.
- CyanLite2 8y agoThe "new" Microsoft and .NET Core has solved much of the licensing issues and burden. Direct support for MySQL/Postgres and containerizing your app is only like 3 lines in your Dockerfile.
- InclinedPlane 8y agoThe problem of Docker on windows isn't a matter of the size or complexity of Dockerfiles, it's everything else. You can easily have images on windows that are tens of gigabytes and take hours to build. I'm not talking about "crazy, psychopathic examples", I'm talking about running stuff that are examples that Microsoft itself publicizes on official websites. That sort of thing simply doesn't happen when you're dealing with linux, it's just a much better experience all around.
- wenc 8y agoTo be fair, building the average Windows Container image doesn't usually take hours -- that sounds like an unusual build. However, it is true that Windows Containers are very heavy compared to Linux Docker images, and for the most part they aren't production-grade (yet). The microsoft/windowsservercore image is currently ~10-12GB. The lighter-weight microsoft/nanoserver image is ~600MB, which sounds more reasonable, but there are certain limitations. Compare this to the Alpine Linux Docker image at ~5MB. It takes significantly longer to provision an Azure Container Instance (ACI) running a Windows Container than a Linux Container. That said, if you need to run Win64 or .NET Framework binaries (say from a proprietary vendor), Windows Containers are your only choice... else you have to spin-up a full blown VM. That said, .NET core running on Linux containers and connecting to open-source databases are a reasonable alternative. Devs tell me that .NET core itself is still pretty new so while it works for the most part, teething issues are to be expected.
- setquk 8y agoAgree entirely. However docker for Linux running .net core is a good option. Automating Windows is the biggest cost in these environments. It’s just not worth the hassle because even on the best of days with the best tools at hand it barely works.
- CyanLite2 8y agoNo one is (practically) using Docker on Windows. It’s all Linux and .Net Core is built from the ground up to be a first class framework for Linux.