Multi-cloud has been around for a while. Apache Libcloud, one of the more popular low-level abstraction libraries was started in 2009.

Up to last year multi-cloud has been quite an unpopular topic. When I bring it up I get a lot of grumbles and frowns. People will have invested in a particular platform, coupled themselves to that platform and argue that multi-cloud is too hard, or that there is really no value and all you end up with is the “lowest common denominator” of features. Up to the past 2 years, I would agree that “too hard” is a more realistic description of the technology, but as I’ve previously written about, application portability is becoming a LOT easier. Docker has introduced this idea of packaging application deployment and runtime into a neat bundle, object storage is gaining popularity and direct-access storage requirements for applications like Windows Clusters have died a slow but overdue death.

I think the lowest common denominator argument is mostly moot when the idea is to be able to abstract the vendors away and depending on specific capabilities is just the same as coupling to the APIs themselves. Services like object storage, DNS, CDNs, Backups, are much of a muchness and there shouldn’t be any reason why deploying to 5 clouds should be the same experience and model.

SO you want to try running your application across many clouds? Just because your application may have Docker, you still need servers or infrastructure deployed somewhere, you still need storage, DNS, load balancers.

Low-Level Abstraction Libraries

Choosing a low-level abstraction library really comes down to target language, unless you’re using C#.Net, in which case you’re screwed. If you don’t have a requirement on language, you should consider which as-a-service components you want to abstract, because the libraries don’t offer a complete suite there.

The challenge that all of these libraries are trying to overcome is how do you provide a single interface to a set of APIs which are distinct. DNS is easy because it is a mature and standardised protocol, but compute is particularly tricky and each library has taken a different approach at tackling the problem with mixed success. Before you write-off the low level libraries because you can’t get all the switches and toggles for provisioning a VM that you might need, still consider the value in using them for DNS, Load Balancer or CDN/Object storage automation.