Table of Contents
Businesses are moving to multi-cloud or hybrid clouds due to multiple reasons such as costs, legal, scalability and application agility. Businesses want to adopt a flexible approach to take advantage of best pricing combined with best of the capabilities of different cloud providers. Avoiding vendor lock-in is one of the primary concerns businesses look for a multi-cloud strategy . While a company may not like to tie with one cloud provider for an indefinite time, moving to the approach of a multi-cloud vendor is the right choice for everyone.
Today we look more in detail about challenges of adoption of multi-cloud strategy, why it is not the right choice for everyone, its benefits, and limitations.
All Clouds are not Similar
On paper applications can be deployed across multiple cloud environments but in reality ‘Application portability’ across multiple vendor clouds involve barriers which need to be resolved to make application portable across multiple cloud environments and be cloud ready.
Elimination of virtual machines from architecture of application is needed. Each cloud has its own abstraction layer which is its cloud service fabric, where network, compute and storage is used by application and all these are available as resources to virtual machines. For example, AWS networking and Azure networking are significantly different. It applies similarly to virtual machines also. A virtual machine of Azure cannot be automatically moved to AWS and an AWS machine cannot move to Google cloud directly.
- If virtual machines need to be ported to another cloud vendor the virtual machine image needs to be modified to match cloud service fabric of cloud vendor Application portability is also impacted by the way compute and storage services work across different cloud providers.
- If the application uses Platform as a service (PaaS) such as Database-as-a-service (DBaaS), WebApps, or message broker components. In such scenarios the problem is multi-fold because data storage, web application and application logic are proprietary to the cloud platform it is hosted on.
- When an application uses Function as a service (FaaS) where a cloud provider provides customers to develop, test, run, and manage capabilities of functionalities without worrying about deployment of underline infrastructure themselves.
- Application Portability – across multiple cloud vendors needs a universal adapter like a docker – a container framework which is the same irrespective of which cloud it is hosted on. Containerization of existing applications is not a very cost-effective thing to perform. Containers are lightweight, can scale resources to match the demand and help to spin-up and spin up rapidly.
- Application breakdown to Microservices- to run containers at a scale on any cloud, the first thing to be done is to break down applications into small components known as microservices. Each microservice has its own container. Microservices are discreet capabilities of an application when put together to represent a complex application. Each application functionality has its own service components. existing application break down into microservice based architecture is an expansive and time-consuming affair but it is a prerequisite for application portability.
- Application of Orchestration for Containerized Applications – to run a complex containerized application we need one mandatory component – an orchestrator, which will manage and monitor the containers. The orchestrator understands the microservices architecture and containers which all together make the application. It can guide each container where to locate the other containers required to deliver a full application. Most commonly used container orchestrator for application delivery is Kubernetes. You still find yourself locked in with Docker, whichever cloud provider Kubernetes capabilities you are going to leverage to orchestrate your microservices-based applications.
- Vendor lock-in is a Reality – for cost concerns you need to leverage your PaaS and FaaS capabilities both in the cloud. But both these services in lieu of low cost will increase the vendor lock in for chosen cloud providers. Which means you are locked in with vendor for the upgrade cycle as well as their technology!
- Cloud to use Best for Workloads – multi-cloud strategies do not involve running single application across multiple clouds seamlessly so better is to focus on alignment of workloads to leverage strengths and cost advantage to that cloud. Some vendor specific services are delivered from single regions so be careful on choosing for which services you need to rely on. Centralized DNS and authentication are highly critical for application availability so ensure to build resilience for the critical services.
- Geo Resilient Architecture and Applications – Delivery of distributed consumption of services should happen from two regional data centers to keep data close to where it is consumed and help in reduction of latency to users. All the top cloud providers have a good regional split for data centers so actually there is no need for a multi-cloud strategy; securing multiple cloud environments also is a complex task as compared to managing a single cloud vendor.
Always start with a single cloud vendor and make organization proficient enough to use native tooling and services of cloud provider. Once organization reaches a maturity level and understood all aspects of utilizing the capabilities of existing cloud provider , they can begin to assess the real benefits that can be achieved by transitioning to multi-cloud strategy.