Micro-services are all the rage, but one downside is that they replace existing applications with a loosely-coupled collection of dozens, or possibly hundreds, of micro-services.
In an enterprise with hundreds, sometimes thousands, of applications, the prospect of managing several thousand loosely-coupled micro-services sounds like an operational nightmare, but a startup company named Shippable believes they have the solution.
For those not already strapped firmly to the bandwagon currently careening through large piles of investor money, let me have a stab at explaining what all the excitement is about.
Some years ago, a few bright people had the idea of using virtual machines on the x86 chip architecture, though virtual machines had been around since at least the 1970s, mostly on VMware is built on the concept. It helped people to more efficiently use physical resources by sharing them between multiple logical workloads. You could load multiple versions of Windows (or Linux, or whatever x86 compatible OS you chose) on the same physical server instead of having to buy a new box every time you wanted a new copy of the operating system.
This made deploying a new operating system instance much faster, because it was just software instead of physically moving hardware around, and the efficiency gains in both operational and capital expenses were substantial. It saved a lot of people a lot of money, and quite a bit of it made its way to VMware.
There was much rejoicing.
The thing about operating systems, particularly ones that are tied pretty tightly to a graphical user interface (GUI), is that they’re, well, big. Making the windows shiny and transparent takes quite a bit of code, and deploying that code takes up a lot of room.
Around 2013, some different bright people pondered “what if we shared this base operating system stuff between multiple environments, just like virtual machines do with the physical hardware?” which again wasn’t a new idea, but it had a new name–containers–and so people became excited about it. Enter Docker.