While a multi-cloud strategy is now the end goal for many enterprises, there are still challenges to overcome. The core problem is that public cloud providers try to differentiate themselves through unique services and features, which can hamper interoperability between their platforms. Today, when you use more than one provider, you'll likely have to adapt your applications to address the idiosyncrasies of each.
Many multi-cloud challenges are difficult to resolve except through application development. For example, if three providers all implement a specific cloud service, such as serverless computing, differently, you might have to write your software to accommodate those differences. But, fortunately, not all multi-cloud challenges require programming changes.
Here are three technologies that can save you a lot of grief when rolling out a multi-cloud strategy.
1. Cloud comparison and cost estimate tools
The first challenge enterprises face with multi-cloud computing is to assign applications to different providers in the most optimal way. Tools such as RightScale's Cloud Comparison and Cloudorado assess how certain applications would fit the profile of major cloud providers. These tools also offer features, such as real-time monitoring for cloud costs and usage, that can help IT teams determine when they need to reconfigure applications for certain providers.
Cloud comparison tools, however, differ in their ability to assess one critical aspect of a multi-cloud strategy: networking. Most of these tools can't readily model the migration of application components among cloud platforms, meaning they can't assess connectivity requirements, either. Most of them, though, monitor traffic charges, if imposed, to and from a given public cloud. You can use this information to assess how different arrangements of application components among clouds will affect pricing, and how they might perform.
Cloud cost comparison tools also tend to fall short in assessing the impact of special cloud service features. Cloud providers now offer dozens of web services that can augment traditional cloud applications, some of which you need to integrate into the application development process. That means, if you use these specialized web services, you'll either have to design multiple versions of your applications to ensure portability, map certain portions of an application to only one provider or enable the applications to identify the cloud they run on, and adapt to the changes.
2. A single abstraction layer
The second technology that can ease a multi-cloud strategy is an abstraction layer. There are numerous hosting choices for cloud, including traditional VMs, containers and serverless, and certain technologies help harmonize all the various configurations into a single virtual cloud. Apache Mesos, Mesosphere and DC/OS are examples of such technology.
Traditional cloud computing maps applications to a virtual host. But these abstraction technologies map them a second time to connect a virtual host to a real hosting option -- such as bare metal or VM. This enables enterprises to build application deployment processes above the cloud infrastructure layer, based on a single virtual environment, which radically simplifies multi-cloud deployments.
This model has emerged most quickly with containers. Traditionally, we've thought about container deployments as being centered on the container software platform, like Docker. But today, more container deployments are focused on orchestration rather than hosting -- with Kubernetes as the dominant tool. And this orchestration-centric container model can more easily adapt to a multi-cloud strategy.
3. Software-based networking models
Operationally speaking, networking is one of the biggest multi-cloud issues. When an application component runs in the cloud, it has an address to which a workload is directed. If you move components between cloud platforms, their addresses change, which complicates application reconfiguration during redeployment or scaling. Many users report this as their biggest source of application failures in a multi-cloud strategy.
There are many ways to address multi-cloud connectivity management, but the three most convenient approaches are:
Software-defined wide-area network (SD-WAN): This approach uses a software agent that runs at a site or within a cloud application to build virtual private networks, or extend traditional MPLS VPNs. It also offers a VPN on-ramp that can run over the Internet. Because the SD-WAN agent is software, you can bind it to a cloud application component to make that component part of a VPN. And because the VPN's address space is separate from the physical network IP address and the cloud providers' own address spaces, an application that moves between platforms doesn't require a new address. Just be sure your SD-WAN vendor offers a software agent.
Software-defined networking (SDN): This approach is similar to SD-WANs in that it creates a software-based network layer above the physical connectivity. Admins can manage an SDN, however, more like a traditional network. Like the SD-WAN approach, this model requires an SDN software agent; some SDN technology is based only on physical appliances, so can't be placed into a public cloud.
Integrated network: This model was popularized by Nicira, whose SDN product was built into virtualization technology. It became known as NSX-T, after the VMware acquisition, and can now optimally support multi-cloud applications. The advantage of this approach is that it makes networking an integral part of virtualization rather than a separate component, which simplifies multi-cloud connectivity management.
Ultimately, your best option -- cloud cost comparison tools, an abstraction layer, or new network management approaches -- depends on your multi-cloud strategy, but large deployments will probably benefit from all three. Explore multi-cloud potential early, form a plan and use all the available technology for support.