GNU/Linux is winning pretty much everywhere these days - well, aside from the desktop. On supercomputers, mobiles and embedded devices it dominates completely, but in the world of enterprise computing, where it has certainly done well, there's room for it to take further market share. How might it do that? One of the huge advantages that free software has over traditional closed source programs is that new companies can take existing code and come up with exciting new solutions very quickly, without the need for massive and long drawn-out research and development programs.
A good example of that is the new company CoreOS, which has only been going for just over a year. The banner headline on its home page is "Linux for Massive Server Deployments", with this explanation of the main product:
CoreOS is a new Linux distribution that has been rearchitected to provide features needed to run modern infrastructure stacks. The strategies and architectures that influence CoreOS allow companies like Google, Facebook and Twitter to run their services at scale with high resilience.
Here are some of the key features described there:
A Minimal Operating System
CoreOS is designed to be a modern, minimal base to build your platform. Consumes 40% less RAM on boot than an average Linux installation.
Utilizes an active/passive dual-partition scheme to update the OS as a single unit instead of package by package. This makes each update quick, reliable and able to be easily rolled back.
Applications on CoreOS run as Docker containers. Containers provide maximum flexibility in packaging and can start in milliseconds.
Clustered By Default
CoreOS works well on a single machine, but it's designed to be clustered. Easily run application containers across multiple machines with fleet and connect them together with service discovery.
To find out more about the origins and philosophy of CoreOS, last week I interviewed the company's CEO, Alex Polvi, whose background includes a stint at Mozilla. The original impetus behind the creation of the open source CoreOS software, according to Polvi, was trying to answer these questions:
"What if we could just update a server as easily as we can update a software as a service application, and if we can do that, could we secure the Internet?"
This ambitious goal came from developments in the world of browsers:
When [Google's broweser] Chrome came out, Chrome had a very subtle but important innovation in it, in that it automatically updated itself. It's like software as a service. I believe that because of that innovation we have the most secure front-end Internet, and when Firefox and Internet Explorer followed suit, we also got things like HTML5, just because these software vendors could distribute updates, and upgrade everybody at once.
On servers, there's nothing like this at all: on servers the state of the art is get it running, and don't touch it. And yet servers is where all the family jewels are. If you leave a server on the Internet, and never update it, it will eventually get hacked - they just erode and you'll get compromised at some point.
CoreOS is designed to make updating servers as easy as updating a browser. But as Polvi points out, that is actually rather a frightening idea to infrastructure people:
Normally the way that you update a server is package by package. The way we do it is we lay down a whole new version of the OS, and then you flip over to it. For your phones, they already do that today. If you do a factory reset, what they are doing is blowing away one version of the OS and taking you back to the previous one.
One thing you can do with your phone or your browser is have a downtime. If your browser goes down for a minute, it's no problem. But if your server goes down, now you have issues. If you talk to operations teams, and ask them would it be a good thing if I could take one server down and the applications keep running, everyone would say yes. Then you say, can you do that today? Most companies would say no, it's just too hard; it's not that they don't want to do it, it's too difficult to do it. Ideally, if you have a server farm, and you take one server down, the applications all keep running, no problem.
That's the basic idea behind CoreOS, but some other tools were needed too to make it possible:
Next section: New tools