Multicloud infrastructures sound great in theory, but organizations looking to gain the advantages of multicloud are running into multiple challenges. The problem is most acute in the context of stateful deployments. 


What is a Multicloud Strategy?


A multicloud architecture gives organizations the ability to develop, run and manage applications across multiple cloud environments – typically AWS, Azure & Google Cloud – in a vendor-agnostic way. Instead of putting all the proverbial eggs into one basket, an organization mixes and matches the various services offered by multiple vendors, utilizing them to meet different demands. 


What are the Benefits of Multicloud?


As a result of the increased operational flexibility afforded by multicloud, the approach reduces infrastructure costs, increases agility, and optimizes performance. 


Mix and Match Offerings from Multiple Cloud Vendors as you See Fit


By using multiple cloud vendors, organizations can take advantage of the strengths provided by each vendor and compensate for the weaknesses of the other ones.


AWS has over 200 cloud services, but it still cannot meet the entirety of cloud computing requirements of any large business. Organizational requirements are not uniform, and different business units in different geographical regions may have different demands: AWS may be ideal for one unit, Azure or VMware may be best suited for another.


Balancing several cloud vendors allows you to play on the strength of each to satisfy specific business needs and achieve operational flexibility.


According to Janet Kuo, Kubecon+CloudNativeCon 2018 co-chair and software engineer at Google:


“Cloud portability and multi-cloud gives users the freedom to choose best-fit solutions for different applications for different situations based on business needs. Multi-cloud also enables more levels of redundancy. By adding redundancy, users achieve more flexibility to build with the best technology, and also helps them optimize operations and stay competitive.” 


Avoid the Vendor Lock-In Syndrome


In a Gartner survey of public cloud users, 81% of respondents said they are working with two or more providers. Michael Warrilow, VP Analyst, at Gartner said:

“Most organizations adopt a multicloud strategy out of a desire to avoid vendor lock-in or to take advantage of best-of-breed solutions. We expect that most large organizations will continue to willfully pursue this approach.” 


Today’s reality of the public cloud is such that if you build your apps to run on one cloud platform, you are restricted to that platform for eternity. For most organizations, that initial decision ties them to a particular cloud vendor pretty much indefinitely because the cost and complexity of switching to another vendor are simply too great, even when business requirements and context change. Businesses end up locked in into potentially suboptimal solutions as a consequence of past decisions.


But the only constant in the world is change (especially in the Covid-19 era), business requirements shift, competitive pressures change and cloud vendors introduce new services and alter pricing. What was optimal 5 years ago, is not necessarily an optimal choice today.


But even as prices of the currently used cloud skyrocket or new useful features become available elsewhere, the locked-in businesses are immobilized and can’t easily take advantage of other opportunities.


Reducing dependency on a single cloud vendor and gaining the flexibility to move workloads freely between public clouds is a great advantage or a multicloud approach. The multicloud approach gives the power back to the organization, giving you the flexibility to take advantage of different platforms’ best prices or capabilities and optimize cost and performance.


Multicloud is Less Popular Among Kubernetes Users


But with all of these wonderful advantages, it may come as a surprise to learn that multicloud deployments are less popular among Kubernetes users. According to the most recent CNCF poll, less than 50% of developers have adopted a multicloud approach:

Challenges of multicloud among kubernetes users

Kubernetes Multicloud Challenges


Stateful Applications and Databases


To run multicloud stateful workloads, organizations need the ability to move data (or state) between cloud vendors as easily as they can shift other Kubernetes resources, like stateless deployments. Stateful multicloud deployments present a unique challenge because each cloud uses different storage technologies.  

Running multicloud apps in a Kubernetes environment is not straightforward, and it requires effort to manage for multiple reasons.


Multicloud Networking. Please, Kill me Now.


The most nightmarish aspect is setting up the networking infrastructure. To make multicloud work with Kubernetes requires complex network engineering. It takes time to set up, manage and troubleshoot, not to mention the cost of maintaining multicloud infrastructure for different vendors.


The complexity is further exacerbated by the fact that such advanced networking requires highly specialized know-how and expertise that is very difficult to come by these days. You are more likely to meet a unicorn than a DevOps engineer willing to sink a few months of work into the task.


According to Janet Kuo, Kubecon+CloudNativeCon 2018 co-chair and software engineer at Google:

“Kubernetes already does a good job of abstracting the underlying infrastructure layer so that cloud provider services, such as networking and storage, are simply resources in Kubernetes. However, users still face a lot of friction when running Kubernetes in multi-cloud. Technical challenges include connectivity between different regions and clouds, disaster discovery, logging and monitoring, need to be solved. We need to provide better tooling to make the user experience seamless and the community is dedicated to providing those resources.”


We elaborate more on the complexity of managing K8s deployments in this post.


Storage Infrastructure between the Different Cloud Vendors is Incompatible by Design.


Wouldn’t it be nice if you could take your EBS snapshot from AWS and copy it to your Azure cluster? Unfortunately, you can’t. Each cloud vendor’s virtual storage implementation is unique and not compatible. There is no API for that, and it is highly unlikely that cloud vendors would offer compatibility any time soon since it is in their interests to keep you locked in with their service.


In our previous blog post, we discussed how this lack of standardization is posing a big challenge for K8s users who wish to deploy stateful workloads


The Challenge of Stateful Apps


Multicloud poses significant challenges for stateful Kubernetes workloads. Much of the multicloud challenge is due to the fact that despite Kubernetes clusters being highly portable, the application state remains tied to the physical infrastructure.


There is no simple way to reconcile the portability of Kubernetes clusters with the physicality of the application state.


Consequently, DevOps teams usually give up when faced with the insurmountable challenge of migrating stateful containerized applications to multicloud environments. With stateful apps, the multicloud approach seems to be out of the question for the time being.


The Answer: A Managed Kubernetes Data Fabric


What could you achieve if you could take advantage of multicloud infrastructures without the painful, complex, and convoluted setups? 


The Statehub managed Kubernetes Data Fabric bridges the gap between incompatible cloud infrastructures, turning data into an always-available, declarative resource. Zero infrastructure setup is required.  Data provisioning, networking, and replication are fully automated and allow you to set up multicloud replication with a single command.


Sounds too good to be true? Check it out for yourself; Start here to set up multicloud replication with Statehub in less than 5 minutes.