How to Know if You Need Multi-Cloud - and Succeed if You Do
Originally published at DevOps.com
Originally published at DevOps.com
There are many good reasons for running in multiple clouds, as well as times when multi-cloud environments are unavoidable due to organizational history or legal reasons. However, operating in multiple clouds adds complexity, increases operational overhead and can become expensive. Organizations should only pursue it when they have clear business reasons for doing so.
In this article, I'm going to cover some common situations when organizations can get value out of multi-cloud as well as strategies for success. Because multi-cloud is hard, the first question organizations should ask themselves is, "Do we really need multi-cloud?" So, the first order of business is to outline when technology leaders are better off avoiding multi-cloud altogether.
When Multi-Cloud is a Bad Idea
A single application and its data should never span multiple clouds, if it can be avoided. Here are some common reasons organizations adopt a multi-cloud approach when they would be better off avoiding it.
Short-term bursting (in hybrid cases). "I'll just tap into a public cloud if my private cloud suddenly needs extra capacity."
Disaster recovery. "Let's run this application on AWS and Google in case one of them disappears overnight."
Staying cloud-agnostic. "By running on multiple clouds, we are no longer locked in."
In all the cases above, network latency and egress cost will hurt your application and your business. In the best-case scenario, you will spend a lot of time and effort prematurely optimizing for unlikely scenarios.
Unless you're perfectly prepared, please, don't go there.
When Multi-Cloud is a Necessary Evil
There are also plenty of times when multi-cloud is a drag on the engineering organization and a drag on the business - but can't be avoided. Here are totally legitimate reasons to have a multi-cloud setup that will still require more effort to maintain than operating in a single cloud.
Mergers and acquisitions. Some organizations can end up operating in public clouds and private clouds as they acquire other companies. The effort required to migrate everything to one cloud provider often isn't worth it, so everyone continues using the same cloud they used pre-acquisition.
Legal. Depending on the type of data you gather and the jurisdictions you operate in, you may have to worry about where your cloud provider has regions available. There will be times when you need a data center in multiple jurisdictions; none of the cloud providers are in all of them. In those cases, you don't have much choice, you need to be multi-cloud.
If you need to use multiple cloud providers, either for legal reasons or because of mergers, it's best to focus on making multi-cloud management as painless as possible - while still accepting that it will not be as smooth an experience as running all workloads in a single cloud.
When Multi-Cloud is a Solid Strategic Move
There are also some very good reasons to adopt a multi-cloud approach on purpose. For example:
Facilitating engineering speed. Engineering speed is paramount. Companies who focus on using multi-cloud to become cloud-agnostic and avoid lock-in often sacrifice development velocity, but if the organization instead uses multi-cloud to allow everyone on the team to use the tools and environment they are most comfortable with, it can increase velocity.
Best-of-breed tooling. The cloud providers' offerings are not totally identical. Multi-cloud can let organizations use the best tools from each cloud provider; for example, machine learning technology from Google, compute from AWS and business intelligence from Azure.
Better customer experience. Especially if latency is a big concern, a multi-cloud approach can help organizations get physically closer to users, providing a better customer experience.
There is a common thread here: When evaluating whether or not you have a legitimate need for multi-cloud, the key question is whether you will be fulfilling a psychological need, a theoretical need (in other words, something that you do not actually need at this moment but might at some future date) or a concrete legal or technical need that you can easily describe. If there are no concrete legal, technical or business reasons for pursuing multi-cloud, don't. There are costs to pursuing multi-cloud, so organizations that won't actually reap benefits from it shouldn't attempt it.
How to Succeed
Multi-cloud is hard. Here's how to increase your chances of success so you can get the business benefits of better tooling or better customer experiences from your multi-cloud deployments.
Use a cloud management platform. Getting a single pane of glass for all your deployments is critical to managing multiple clouds without pulling your hair out. This abstraction, however, comes at the cost of supporting very deep and cloud provider-specific use cases, for example, using obscure service X.
Standardize workflows with Terraform and Ansible. You need to have processes that are as repeatable and predictable as possible. Even with standardized workflows, you still have to adjust for each environment, but the more standardization the better.
Use Kubernetes. Kubernetes lets you abstract the infrastructure layer and move workloads around more easily, even across clouds. The caveat here is that you have to adopt microservices and deal with the increased complexity of managing Kubernetes and its underlying infrastructure.
Each of the above approaches has its merits and flaws. They are not mutually exclusive, and you should not treat them like they are. Be prepared to mix and match depending on your needs.
Weigh the Costs and Benefits
Sometimes companies are not realistic about their technical capacity or what their needs are. They want the ability to do the latest thing they read about without thinking about whether or not that technology or approach will provide business benefits.
Multi-cloud adds a huge amount of complexity to your deployment. If multi-cloud truly is essential, however, use tools and platforms that hide that complexity from users and can simplify the management process.