Multi-Cloud Infrastructure: How To Avoid Vendor Lock-In and Use The Best Services

Andrew Wolfe
SkipList Publication
4 min readJul 26, 2019

In the dark ages (okay, 2012 wasn’t that long ago), most people only had a single option if they wanted to deploy enterprise software: procure a server from one of a few server vendors, install it in their own managed data center or a co-location somewhere, power it on, install the operation system, update the operating system, install the software and then grant access to it.

It was an expensive and tedious task as it didn’t stop there: you needed to update and patch those machines; ensure they were redundant and have plans around servers / parts of servers randomly failing. It was a nightmare situation for CIOs and CTOs everywhere.

Now, there are so many services that do this for you that also offer managed services like databases, caches, load balancers and many others.

These cloud services have become ubiquitous and indispensable in the development world.

However, as many people have discovered, picking the right services or right cloud provider for your needs can be down-right difficult. Like previous technology trends, there are defaults that people use like Amazon Web Services (AWS), but are you really getting the best services that you need if you only use one?

Technology leaders fear vendor lock-in because many have felt the pain of it in the past.

Yet many may still find themselves stuck with a singular cloud provider without the options to move off without at least some platform changes to their software.

However, there is no need to fear: there are options to avoid vendor lock-in when it comes to cloud services. A recent trend that has become very popular, is something called Multi-Cloud.

This approach emphasizes using the best services available across all the clouds and piecing together a coherent, stable architecture that avoids vendor lock. In order to achieve this, technology leaders must do the following:

1. Use open source technology

All cloud providers offer IaaS (Infrastructure as a Service) services for popular open source technologies like Redis, Postgres, Kubernetes to name a few. Using these means that you can quickly switch your service provider to the one with the best version of the open source offering.

2. Use open source protocols‍

This one is slightly difficult but, potentially the most important one. Using an open source protocol like MongoDB’s query language prevents vendor lock-in. For example, all major cloud providers (Google, Microsoft, Amazon) provide a NoSQL managed database that uses the MongoDB protocol. Many cloud technologies will steer you towards their own protocols: avoid them. Use an open source library that has the open source protocol instead.

3. If you use proprietary technology, ensure that it’s ubiquitous

Technology like SQL Server can be found on every major cloud provider and it’s no surprise why: it’s one of the most popular technologies ever. If you must use one of these technologies that can’t be freely accessed, ensure that you use one that everyone else uses too.

4. When using one of their proprietary services, wrap and isolate it

Allowing the service to creep into various parts of your technology platform will make it incredibly difficult to replace down the road if you need to switch cloud providers. Instead, ensure that you keep the technology at the edges and only the interface that you control throughout your architecture. While this was a pattern that was common before cloud services, it seems that it has gone to the wayside recently in most codebases that I’ve seen recently.

5. Use DevOps technologies to ensure that you can recreate your infrastructure from code

Most people use the web interfaces to create and configure infrastructure within a cloud. This can cause major headaches when it comes to switching providers. The use of technology like Terraform, Chef, Puppet, plus a myriad of others defines the configuration of the services in code. If written and used properly, it will be quick to re-create a script and create the same service or server in another cloud provider assuming it’s offered.

6. Keep your application at the highest level of managed that it can be

Even with DevOps techniques and technologies, it can be very difficult to switch if your application is too low level. For example, switching a self-managed database means ensuring that not only is the new cluster online with right data but that the backups are configured correctly and many other details that are easy to miss. Using technology like containers will ensure that your code can run in any given cloud as long as it supports the container technology that you use. Using managed IaaS ensures that only the context (data, configuration, etc.) needs to be switched which greatly reduces the complexity of switching.

The switch to multi-cloud ensures that your business uses the best services available to it, which can unlock a competitive advantage for not only building software, but also scaling and hiring talent.

On our Thoughtful Software podcast , we discussed the scaling benefits of serverless architecture and the necessity for businesses to move in that direction.

In terms of attracting top developer talent, using a multi-cloud approach has advantages as well. Google Cloud Platform (GCP) for example has amazing developer tooling which can be attractive for any developers looking to work within your organization.

It also allows businesses to negotiate better rates and service, which can save an incredible amount of money for larger organizations.Multi-cloud can truly be a game-changer for engineering and information technology teams alike. Investing in multi-cloud infrastructure is about planning for long-term system resilience, flexibility, security, and data management –which makes it incredibly worthwhile.

--

--