We're all accustomed to software updating itself. Windows has been pushing out auto-updates for more than a decade. Then browsers did it, then other client-side applications.
But server software? Servers are another story, particularly Linux servers.
That's because we've treated servers like pets. We’ve carefully tended them and invested in redundant power supplies and so on -- anything to keep them up and running until we absolutely need to take them down. In the Linux and Unix world, a reboot has been an admission of defeat, and OS upgrades have been rolled out as part of a careful plan.
But today, in the cloud era, we’re starting to treat servers like cows: If one falls over, that's part of the business. Cloud architecture distributes applications and replicates data across many commodity servers, so you can pull the plug on one and everything still keeps running.
This tectonic shift in the way we view server infrastructure led Alex Polvi, CEO of the startup CoreOS, to a realization: If servers can go offline temporarily, that means you can push an OS update to them and reboot them without ruffling any feathers.
In essence, Polvi thought, this little downtime window would enable him to deliver a Linux operating system as a service.
Polvi derived the idea in part from observations of the browser world. When Google Chrome arrived, it automatically updated itself without the user's knowledge or permission, vastly accelerating security patching and feature additions. As Polvi puts it: "Over a relatively short period of time Chrome can move the whole Internet forward."
If you can do that to the front end of the Internet, why not the back end?
Docker to the rescue
As any horrified admin might tell you, the obvious argument against auto-updating a server OS is the unpredictable effect it might have on server applications.
Here's where Polvi got extraordinarily lucky: “We started working on this in about February 2013, right around when the Docker guys started working on their stuff.” Docker enables you to package applications and deploy them in Linux containers, a form of application virtualization. Containers isolate applications from the OS; if an element in the base changes, it doesn’t break all your applications.
But aren’t containers simply a feature of the Linux kernel? Here’s Polvi’s reply:
We shipped our first version in August 2013 and included Docker because we need containers to do what we do, so the momentum coming out of Docker created awareness of this whole ecosystem. From the very beginning, there’s been a CoreOS/Docker story going on: Two parts that merged somewhat serendipitously, but they’re both very complementary to one another.
In contrast to other Linux distros, which pile on features for admins, CoreOS is bare bones by design. CoreOS doesn’t even have versions: You decide whether your servers get updates through the Alpha, Beta, or Stable “channels.” The Alpha channel pushes out the absolute latest version; as Polvi notes, the Alpha channel pushed out Docker 1.3 two hours after it was in release. Beta and Stable are by turns further behind, but less likely to experience a glitch.
In creating a server OS that updates itself, Polvi says he’s constructed CoreOS around double-buffered updates so his service can atomically transition versions easily and roll back if there’s a failure.
You can see why InfoWorld contributor Matt Asay has called CoreOS an existential threat to conventional Linux distros: It completely commoditizes Linux. More than that, says Polvi:
We think we can make the OS effectively irrelevant. I mean, if it’s all auto-updating and takes care of itself, you shouldn’t have to worry about it anymore. CoreOS as an organization is maintaining it for you and you just worry about your application side. And we do it wherever you want it: On cloud, on bare metal, on your laptop. Don’t worry about it. Just focus on running applications.
Red Hat responded to the CoreOS threat by announcing in April that it would release Project Atomic, its own stripped-down, auto-updating distro. Not surprisingly, Polvi sees this as validation of his model.
The cloud computing proposition at its essence is an effort to vastly simplify the management of infrastructure -- but building so-called private clouds turned out to be very difficult. In offering Linux as a service and baking in Docker containers, CoreOS has gone a long way toward making data centers more cloudlike.