The multi-cloud approach emphasizes using the best services available across all the clouds and piecing together a coherent, stable architecture that avoids vendor lock.
In the dark ages (okay, 2006 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.
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?
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:
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.
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.
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.
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.
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.
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.
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.
Andrew has an M.S. in Computer Science from Georgia Tech University. But he prides himself over 10 years of experience working in the software industry for well-known companies such as Diebold, Tableau, Explorys, and Onshift. After years in the corporate and startup worlds as well as running his own consulting firm, Andrew realized he had to do more to improve software products and practices. From that, Skiplist was born. Skiplist is the opportunity to focus on thoughtful, quality software and change the software consulting industry.