Conversations about cloud services often begin with AWS, but for most organizations, it won't end there. An increasing number are adopting multi-cloud strategies that include both public and private components to fight vendor lock-in, increase the diversity of available services, counter arbitrage price disparities or maintain control over particularly sensitive information. Although using multiple cloud computing platforms can be a sound strategy, it can lead to application, API and configuration management problems.
Managing applications and infrastructure configurations across cloud stacks that don't share a common API and have very different service definitions and billing models can be a complex task. It's hardly a showstopper, however, because a number of mature software and software as a service (SaaS) options are available to automate deployments across a variety of cloud stacks. Yet all the automation tools rely on a common conceptual framework: treating cloud resources as abstract objects that can be configured, run and managed as software code. Hence, there's an overlap with DevOps methodologies and organizational models.
The multi-cloud imperative
Do you think using multiple cloud computing platforms are only for hyper growth cloud-native startups or multinational enterprises? Think again. According to the RightScale 2015 State of the Cloud Report, 58% of respondents use both public and private clouds. Furthermore, 14% have a multiple public cloud strategy with another 55% working toward a hybrid mix of public and private. Lest you dismiss RightScale, a leading provider of cloud management software, of stacking the deck in favor of its product thesis, Forrester Consulting came up with similar data. Forrester found that 52% of large firms already use more than one public cloud vendor, with a third running on three or more cloud computing platforms (Figure 1).
The multi-cloud imperative is fairly simple. No organization wants to have critical infrastructure solely dependent on a single vendor, even one as large and reliable as AWS. Indeed, without a proper AWS architecture that includes multiple availability zones, outages are a very real possibility as Amazon itself, along with AirB2B, Tinder, Reddit and others found out when the Northern Virginia zone went down for several hours.
Yet, as Forrester points out, cloud heterogeneity is causing angst among IT pros. Multi-vendor hybrid cloud models require decisions about how to manage different cloud computing platforms to provide consistent experience to developers and business users of cloud applications. Inconsistent management and monitoring interfaces are particularly frustrating. Indeed, RightScale's survey found that a quarter of respondents say managing multiple cloud computing platforms is a "significant challenge." Digging deeper, Forrester's data shows the biggest issues in managing multiple clouds are:
- service consistency between providers;
- workload migration between clouds;
- consolidated management across multiple clouds;
- and supporting different cloud end-user portals.
Cloud-agnostic deployment software can help with all four.
Cloud-agnostic management options
Dozens of software and SaaS products are designed to automate infrastructure management and application management across multiple clouds. Some focus on specific needs or usage scenarios. For example, Cloudyn is designed for asset and cost management and includes a workload optimizer to identify the most efficient cost-performance deployment option for a particular workload, while CSC, using the former ServiceMesh product, focuses on cloud governance, security and lifecycle management. Others, like Cliqr, Cloudify and ElasticBox take an application-centric approach to cloud automation.
The most popular multi-cloud products are generally those used by organizations embracing a DevOps approach to cloud management, a tact that extends application programming into the realm of infrastructure configuration and management. Indeed, an important differentiator of each tool is its choice of programming language.
RightScale is on most people's short list for cloud automation; however, its own survey found that the most commonly used infrastructure DevOps tools are Chef, Puppet, Ansible and SaltStack:
- Chef: Befitting its name, Chef turns infrastructure configuration, deployment and management into a set of recipes that can be interpreted by any system running the Chef client. Of course, there is some server complexity behind the scenes, but as I detailed in a SearchAWS article on using Chef with AWS, Chef can manage all parts of a cloud application deployment and can be run within the cloud itself (i.e., the Chef server, developer workstations, system nodes and analytics engine all can run as IaaS instances). Chef supports the major cloud services including AWS, Azure, Google, VMware (vCloud Air) and IBM Softlayer, as well as SmartCloud Orchestrator and Rackspace/OpenStack.
- Puppet: Puppet is referred to as the granddaddy of orchestration software, and it is both mature and widely supported. Puppet has a class-based domain specific language (DSL), inspired by the Nagios configuration file format, which resembles JSON. Although it has a Web UI, advanced configurations will require programming and using the CLI. A newly released tool, Puppet Razor, can auto-discover and inventory infrastructure and dynamically select a preferred system image for bare metal provisioning.
- Ansible: An open source platform whose commercial version was recently acquired by Red Hat, Ansible doesn't require a software agent; it operates completely via secure shell connections. Ansible uses YAML for its configuration "playbooks," which are used for system configuration, deployment and orchestration.
- SaltStack: A relatively new platform that focuses on speed and scalability, Salt is available both as open source code and a supported enterprise edition. Salt uses YAML to describe system states; however, the entire platform includes a complex set of components that means a steep learning curve particularly for those not already familiar with another automation platform.
Recommendations, use cases
Any of the major automation platforms described here will work on both private infrastructure and across all the major public clouds; however, the integration details will vary widely.
The choice of product should be dictated by the sophistication and scale of your infrastructure and the expertise of the IT/DevOps team. Packaged SaaS products like Dell Cloud Manager (former Enstratius), RightScale or Scalr are the easiest to deploy and operate because they all have comprehensive Web UIs with prebuilt templates and integrations to the major cloud services, although connecting them to internal infrastructure may be trickier. Of the more general-purpose tools, Puppet is the most mature, making it quite popular with large enterprises. But due to its agentless design and simple YAML syntax, Ansible is probably the easiest to implement and learn.
Multi-cloud strategies may become the norm
How to manage multiple cloud providers
Identifying the best cloud management platform