What is Multi-Cloud?
Multi-cloud is essentially when you use two or more public clouds for your workloads and there are two main reasons why companies would want to use multi-cloud or basically multiple public clouds.
One use case is if you want to replicate the same workload on multiple clouds and the second one is if you want to split the workload across multiple clouds. So let’s see what are the use cases for each of these options- what if your users are geographically dispersed, cloud providers usually have multiple data centers throughout the world but if one provider does not cover all the regions where your users are, then by running it on another cloud provider you can increase your distribution and service the users from the data center which is closest to them. Also many companies don’t want to be dependent on only one cloud provider like what if that provider goes bankrupt or they have an outage in their data centers and your application is not accessible by users, but if you have the same application running on another cloud it will still be accessible so you increase the availability by using multiple cloud platforms so redundancy is great for high availability.
Let’s see the use cases of when you would want to split your workload across cloud providers. If we look at the major cloud platforms like aws, google and IBM, it may seem like they all offer similar services. So no big difference between them but in reality there are big differences when it comes to specific tasks or specific services they offer.
Let’s see examples: let’s say you are running your application on aws because it is the best cloud platform for running web applications and now let’s say your e-commerce application also gathers tons of data and processes it to make some predictions and intelligent suggestions to users. Well google cloud happens to have better services for big data processing and analytics. So your data engineering team may want you to use google cloud for those services instead of aws and also let’s say all the internal processes in your company are using IBM products which internally uses IBM cloud to manage these services. So in this case you want to use IBM cloud and you do not want these IBM products to be hosted on aws or google cloud or even on-premise and managing them ny yourself. This scenario is the classic example of using Multi cloud services where you can pick and choose the best features from each cloud provider instead of limiting yourself to just one.
In another case where companies end up using multi-cloud is when two companies are merged or one company acquires another and if these two companies use different cloud providers the new merged company automatically ends up with a multi-cloud setup which then the central IT operations team will have to integrate for multi-cloud.
Now this may all sound great and beneficial in theory but multi-cloud comes with a lot of challenges.
First of all with each additional environment you have one more completely different environment your IT and DevOps team has to manage. In order to manage the different cloud environments they need to learn the process and understand on how to work with the different set of api’s and services that each cloud provider provides. There are even certifications for each cloud provider so some companies may end up having an on-premise team and aws team and IBM cloud team etc which again means a lot of resources and also you can’t move to a cloud in one step because each environment is so different you can’t just take your application and deploy it in the exact same way on another platform without some kind of re-architecting. For example, if you’re using aws lambda for your application you will have to rewrite some parts of your application if you want to run it on IBM cloud servers. So basically on any cloud where you use their special services because they make your work way easier you will have some kind of vendor locking which makes multi-cloud much more challenging.
How to address some of these challenges
Well there are many tools out there and many patterns to make multi-cloud easier to give you some examples:
Kubernetes is one such tool which makes running your applications somewhat generic because it’s not dependent on the underlying platform you deploy your applications on kubernetes the same way no matter where your kubernetes cluster is running of course you may still need to use cloud services in your kubernetes cluster but it still makes the multi-cloud easier compared to running your applications directly on the servers.
Packer is another example which allows you to build artifacts for different target environments from the same source code so your code stays the same just the packaging will be different depending on where it must run or there are also continuous delivery platforms for multi-cloud deployments like spinnaker for example and many other tools and examples like this that make it easier to work with multi-cloud setups.
Liked the blog? Please clap and follow.