Separator

Does Your App Need A Multi-Cloud Strategy?

Separator
Kiran Darisi, Co-Founder & Director - DevOps, Freshdesk An alumnus of Sri Venkateswara University, kiran is a scalable cloud architect. He was previously a senior software engineer at Accenture Technology Solutions.

A few years ago, the biggest concern of an enterprise company when it came to hosting their data was the cost. Private data centers cost a lot in terms of real estate and in terms of people who could manage these data centers. But with the advent of IaaS (Infrastructure as a service) companies, enterprises got an option to pay them to do the hard work of managing the physical servers and to host their data on an already setup, easy-to-use environment.

With more and more apps moving from their own datacenter to a public cloud model, the main concern has also moved from cost of hosting to security and availability. Availability is the single most important factor that determines an application’s success. Being available doesn’t just mean having a backup running somewhere that can be booted up in-case of a downtime. It also means being available in different locations.

This is why enterprises that want to promise almost a 100 percent up time to their customers are experimenting with a multi-cloud approach. A multi-cloud approach is the use of two or more cloud services (like AWS, Microsoft Azure, Google) to deploy your app as opposed to using one service. This way, if one service is down, companies can
rely on the other provider to keep the app running. Apart from uptime, multi-cloud approach is also used to over come geographical restrictions and to overcome specific weaknesses of the single service provider.

But there are a few things to consider before you make the switch from a single cloud to a multi-cloud model:

Development Cycle
Setting-up a local development environment that mimics the services
used by each public cloud app will not be easy. The OS that the engineers work on cannot be custom made for each public cloud the app is using. A way around this would be to use Linux containers (LXCs) like dockers. Dockers are self contained execution environment that contain their own, isolated CPU, memory, block I/O, and network resources. Dockers are, therefore, cloud agnostic and can be used to deploy an app in multiple cloud providers.

Monitoring
When the data is flowing between multiple clouds, monitoring the entire network will be a challenge. It would meana remodelling of all the homegrown monitoring apps. Not to mention the retraining of the NOC team that supports the application 24x7 on different cloud environments. This means, companies opting for multi-cloud should be ready to invest in commercial monitoring tools that show all the data from different environments in a single dashboard so incidents can be resolved faster.

Resources
Public clouds will have a resource limit. Not all of them can provide the apps with as much computing power as they need in case of a disaster recovery situation, especially if the apps have to rely on the secondary provider when the primary is down. Additionally, the traffic has to hop between the networks of multiple clouds, meaning, important data has to travel via the same internet that is used to access cat videos. So bandwidth also ends up becoming a problem. The ideal way to run the app is always share the load between pods so traffic is distributed.

Compliance
Lot of mature public clouds will already have compliance in place. But some are not compliant to certain region’s regulations, like the German Data Protection Act. Companies have to keep that in mind when they are choosing the public cloud providers and when they are distributing functions between the providers.

Identical Services
Each public cloud will offer a variety of preliminary services like data storage, email service etc. Companies need to evaluate the performance/SLA of each service before picking the right one for their apps.

Data Transfer Latency & Security
During multi-cloud deployments, data takes time to travel through different public networks (between clouds). This increases latencies, security concerns, and other in consistencies. Companies have to prepare for the worst case scenario and would have to make a wise choice on what kind of data transfers can be compromised in these situations.

Multi-cloud deployments are the definite next step when you want to promise your customers a 100 percent uptime. Even companies like Netflix have started using multi-cloud to make themselves available across the world. Implementing multi-cloud is not easy but when you want to scale rapidly and give better solutions to your customers, It is necessary.