Updated June 2016
At a RightScale Compute conference, RightScale Senior Product Manager Utpal Thakrar shared some key design consideration for organizations building private and hybrid clouds. The most important advice: Build your cloud applications with both your application and business goals in mind. For instance, increased agility — including reduced time for provisioning applications — might be a goal for your development staff, while cost savings, a flexible infrastructure, quicker time to market, and business unit satisfaction are potential business goals.
Cloud computing began with the advent of the public cloud. A public cloud is accessible over the public Internet and hosted at a service provider, which supports multiple customers who use a shared infrastructure. Each of those customers pays as it consumes resources provided by the cloud infrastructure service.
But certain applications aren't best suited to public clouds. A better option may be a private cloud, which may be hosted on-premises or at a colocation facility and is typically devoted to a single organization.
For instance, if you're using Hadoop to manage and analyze big data, the virtual machines available through public cloud providers are not as conducive to that type of workload as are those that you can build in a private cloud. You might need to comply with certain regulatory standards, often involving security. Or you might have latency issues with distant public cloud providers that make your users' experience unacceptably slow, and therefore choose to deploy a private cloud closer to your users.
Because public clouds and private clouds have different and complementary strengths, many organizations deploy both in what is commonly called a multi-cloud or hybrid cloud environment, which spans more than one private or public cloud and may even include a private virtualized environment.
Organizations that run applications on private clouds, which provide a finite amount of resources, might choose to employ a multi-cloud or hybrid model when they outgrow their hardware. In such cases you may be able to supplement your private cloud with on-demand resources from a public cloud. (However, this practice — often called cloudbursting — has several important technical and business implications that you should be aware of, including latency and security concerns.) Or the reverse might be true: Enterprises that are using public cloud might have hardware available that they want to deploy to create private clouds. And they may also have regulatory constraints on where their data is housed, in which case public clouds might not be the best choice for some workloads. Multi-cloud environments are also common in organizations where different business units use different applications that run in their own clouds.
A hybrid environment can work well with untested workloads, such as seasonal promotions. Organizations can use the public cloud to test their code before making a significant investment in in-house infrastructure. If the new project isn't successful, they release the resources and wrap up the project. If it is, they can transition to an appropriate private cloud once things become stable — or if the project is wildly successful, maybe they remain in the public cloud.
Another use for a hybrid cloud environment is warm backup to provide high availability (HA), fault tolerance (FT), and disaster recovery (DR). In this case, if a private cloud goes down, an organization can fire up its application servers and load balancers in the public cloud and take advantage of the backed-up data until it is ready to switch back over to the original system.
You can minimize the latency between your private and public clouds by taking advantage of a solution such as AWS Direct Connect or Azure ExpressRoute, which places the production environment in a private cloud hosted in a data center that's in close physical proximity to the DR environment in a second cloud — generally within the same data center.
When you're designing your clouds, specify your hardware, networking, and storage with your application in mind. Commodity hardware is great because it allows you to easily add capacity and quickly swap out failed components, but you may have special needs for high-speed storage or fast processing.
Key Design Considerations for Private and Hybrid Clouds
You also have to choose a private cloud software stack. Thakrar highlighted two open source options with commercial support, CloudStack and OpenStack — both of which RightScale supports. Which you choose may depend on such things as their web interface, API, documentation, and the familiarity your staff has with either stack. Both support a multitude of hypervisors, including KVM and Xen.
Next, you have to decide where the private cloud will live. If you're reusing your own hardware, you can host it in your own data center or find a colocation facility. If you think you might move to a hybrid cloud architecture, consider a hosting facility adjacent to a public cloud. You should also build HA into your private cloud infrastructure by eliminating potential single points of failure.
Design is just the first stage of the implementation process. You also need to monitor your workloads using a tool such as Zabbix. And you have to automate your workloads, so that if you have a failure, you can invoke the recovery process and be back up quickly. Tools such as Chef, Puppet, and Docker can be helpful with that task. Make sure that you separate your management layer from the infrastructure — not doing so is equivalent to locking your keys inside your car. RightScale cloud management abstracts the underlying details of your cloud infrastructure, presents a consistent interface to all available resources, and makes it easier for you to switch cloud providers without learning a new management tool.