“Multi-cloud” refers to the use of multiple cloud computing services within a single architecture. Proponents of the approach argue it gives you greater flexibility and resiliency by eliminating any reliance on a single vendor. Conversely, multi-cloud systems can be trickier to set up and scale, making long-term maintenance a chore.
Once you’re using a few products from one provider, selecting their offering for your next requirement can seem a logical step. You don’t need to put all your eggs in one basket though: choosing a different platform for your new component can give you more functionality at a lower cost.
Using multiple clouds is a strategic choice which lets you access the best of everything. Spreading across providers requires your service be componentized into distributed microservices, helping you become cloud native.
You might run your core service on Microsoft Azure, use Amazon S3 for file storage, and Google Cloud for some specialist AI workloads. Trying to rely on one of these providers alone could be a sub-optimal solution, even though they all offer broadly comparable functions.
RELATED: What Does Cloud Native Actually Mean?
When to Go Multi-Cloud?
Selecting a cloud provider is usually an involved process. If you get the decision wrong, you could find your service hamstrung by a limited feature set, poor scalability, or excess costs.
Finding a platform that ticks all your boxes usually makes it the prime contender for your next cloud infrastructure purchase. Blindly choosing the service because you already use it might not be the best course of action though – you could be creating a dependency on a set of interlinked third-party systems, leading to vendor lock-in.
Opting to use another cloud forces you to critically evaluate the entire market at the time you add a product to your stack. For larger customers, it can increase your buying power if no single vendor gets to take your custom for granted. You’re encouraging innovation and competition which creates better deals and more opportunities for your architecture.
Sometimes the decision to adopt a second or third cloud might be forced by external factors. If customers start clamoring for features your current platform doesn’t offer, you may be compelled to look outside the box. Or, your business might become subject to regulatory requirements that require you store some data in accordance with specific security standards.
Multi-cloud is similarly useful when you need to use a technology that’s not regularly paired with your current provider’s focus area. A company that’s using a Linux-oriented virtual compute provider may develop a need to run a Windows server. Such a workload might make more sense on Microsoft Azure where there’s first-party support for the operating system.
A final driver of multi-cloud architectures is when you need to position a critical service closer to your customers. Entering a new market can be perilous if your current provider can’t offer a local datacenter. You’d risk increased latency for all your foreign users. Adding a new instance of your service in a cloud that supports the region would help you provide a better customer experience.
RELATED: What's New in Kubernetes v1.22?
Problems You Might Encounter
Transitioning to multi-cloud isn’t something that happens overnight. It needs buy-in and acceptance across your organization because it will affect every team.
Developers will need to build with distributed services in mind. Operations teams have to remain mindful of the various clouds in use, the services that belong to each, and how data flows between them. Security practitioners will see a rise in the number of credentials and control panels that need to be protected against intrusion. Multi-cloud architectures do present an increased attack surface which could leave your system more susceptible to intrusion.
The biggest challenge with multi-cloud is the ease with which flexibility can become a burdensome liability. Adopting a multi-cloud strategy can lower billed costs but the saving’s quickly wiped out if your team needs to spend more time managing servers and auditing weaknesses.
Consistency is another problem you’ll need to solve from the outset. Although you’re looking to capitalize on the merits of each platform, your own application should still be uniform in how it’s developed and deployed. Using automated CI/CD deployments with your projects on AWS? Make sure you use something similar with your Azure workloads too.
Normalizing your overall approach to applying changes helps avoid unnecessary fragmentation. Wherever possible, try to use an abstraction layer atop any individual provider’s services. A platform like Kubernetes gives you consistency in what you target, letting you move between clouds with relative ease.
Monitoring the various clouds involved in your system can be a struggle. Most organizations will opt for a form of cross-cloud monitoring system such as Datadog, Grafana, or New Relic. These tools come with their own complexity and learning curves but let you aggregate all your resources into a single visualization. This is more effective than trying to work with multiple cloud provider dashboards to understand where an outage has originated.
RELATED: Getting Started With GitLab's Continuous Integration & Deployment Pipelines (CI/CD)
What Else Should You Think About?
You don’t necessarily need to go all-in on multi-cloud. For some organizations, an effective multi-cloud strategy might be a simple replication of key services across two or more platforms. This can aid disaster recovery scenarios, giving you redundancy if one service experiences an outage. While it can be tempting to treat public cloud platforms as infallible, in practice even the largest services have unplanned downtime which could cause knock-on impacts for your customers.
More generally, going for a multi-cloud approach should be founded on a real business need. Be intentional and deliberate as you evaluate new services, keeping your objective at the forefront of your mind. There might be a different way of achieving your aims that has less of an impact on your existing workflows.
Take the example of lowering operating costs: moving key services to another cloud could help here but you might be overlooking options closer to home. Auditing your use of your existing platforms might uncover ways to increase efficiency by changing plans, requesting a tailored offering, or adjusting your usage patterns.
Another consideration is the extra cost of multi-cloud. In some scenarios, a multi-cloud architecture can be more expensive, particularly if you regularly move data between vendors. Most major providers charge substantial fees for data egress and ingress that can erode any at-rest savings you make.
Multi-cloud is a buzzword that refers to using services from several different cloud providers as part of a single system. It lets you glean the advantages of all the platforms in the marketplace but can be tricky to configure and maintain.
The best way to approach any new cloud architecture is by avoiding undue emphasis on terms like multi-cloud and hybrid-cloud. Instead you should assess the options available to you, irrespective of vendor, and then devise a plan to combine them together in a way that benefits all teams.
When it doesn’t look like multi-cloud will work without increasing complexity, adding unacceptable security risks, or creating a burden on operations teams, there’s no need to pursue it further. You can always shift your research to finding the best single platform that offers all the technologies you need in one package. Just make sure it’s got a suitable service-level agreement (SLA) and appropriate procedures for handling unplanned outages.