Wringing More Value From Enterprise Cloud Computing With Open Source
Not all cloud-computing platforms are created equal, especially when it comes to one of the most important features of a cloud-computing environment, the API. If you have multiple clouds or a hybrid cloud environment where private and public clouds are working in concert, you may want to investigate API abstractions that allow you to develop to a single API or library and then let that API abstract the various cloud management calls to each platform.
You're an IT manager responsible for keeping your infrastructure up and running while squeezing every bit of value from your budget. You're interested in the latest trends and have done your research. Many enterprises rely on their existing vendors for guidance on these trends and probably recommend their own cloud offerings -- the same vendors with six-figure pricing and annual release cycles that are often lagging behind the latest technology developments.
If you are tired of maximizing your IT spend and minimizing the time you have to actually improve rather than implement your systems, perhaps it's time to look at the robust, enterprise-grade open source tools available for cloud computing deployment and management.
The world of open source software -- with its flexibility, aggressive release cycles, and tendency to integrate with other software to perform complex tasks -- is an ideal place to look for improvements in your enterprise IT infrastructure. So what kind of free and open source software is available for cloud computing? Compute stacks, distributed storage software and management tools, just to name a few.
Many of these tools offer great advantages over proprietary tools whose conservative release cycles and high cost per-server licensing are a nightmare for IT managers with aggressive goals and limited resources.
For the purposes of this discussion, I'll focus mostly on compute clouds, the logical evolution of individually virtualized servers. There are many choices to build your own cloud computing environment using hardware you already have or the hardware you prefer. You may even choose an open source hardware solution like OpenCompute, championed by one of the world's biggest cloud computing users, Facebook.
From a hardware perspective, make sure that you are using CPUs with virtualization extensions (AMD-V or Intel VT-x). Both hypervisors have their advantages: Citrix-backed Xen is pervasive and used by many cloud hosting providers, while Red Hat-sponsored KVM has a shorter history with tight ties to Linux, as it relies on the Linux kernel to provide virtualization. Theoretically this can yield performance advantages for applications relying on user-space drivers, but your mileage may vary.
Cloud Orchestration Stacks
Once you choose your virtualization technology, you need to evaluate the tools that enable these hosts to work in concert. Cloud-computing stacks or orchestration tools are software platforms that take your individual virtualized servers and allow them to work in concert as a complete cloud. Each has advantages, and given the free and open source licensing terms of each, they can provide a considerable cost savings compared to commercially licensed cloud operating systems.
- Abiquo -- Abiquo is an LGPL-licensed compute platform with support for Xen, KVM or Virtual Box supported by Abiquo, a European independent software vendor.
- CloudStack -- CloudStack is a GPL v3 licensed software platform that has been developed since 2008 by Cloud.com and was released as open source in 2010. It features high-availability features, advanced networking capabilities, a broad API and easy-to-use Web interface.
- Eucalyptus -- Eucalyptus has been around since being released in 2008 with the goal of providing full compatibility with Amazon EC2 and S3 services. The command line euca2ools is often used not only for Eucalyptus but other clouds, including EC2, to query availability zones and start and stop instances.
- OpenStack -- Founded in 2010 by Rackspace and NASA, the OpenStack project includes both a compute component called "Nova" and an object storage component called "Swift." The OpenStack ecosystem is growing very fast and includes many partners that want to support OpenStack as a pervasive cloud computing platform.
Cloud API AbstractionsNot all cloud-computing platforms are created equal, especially when it comes to one of the most important features of a cloud-computing environment, the API. The API enables software to request data and modify resources that allow you to manage common cloud tasks, usually via Representational State Transfer (REST).
While most APIs support the creation, starting, stopping and deletion of cloud guest instances, the method for each cloud computing environment varies.
If you have multiple clouds or a hybrid cloud environment where private and public clouds are working in concert, you may want to investigate one of the following cloud API abstractions that allow you to develop to a single API or library and then let that API abstract the various cloud management calls to each platform.
Cloud Computing Tools
The appeal of cloud computing isn't just the ability to launch thousands of servers simultaneously, but also the flexibility it offers. By abstracting some of the complexity of dealing with server instances, management of those resources is much less complex than individual servers running natively. This level of abstraction and broad network access allows you to automate the management of your cloud infrastructure.
Combining management tools into tool chains that automate provisioning, configuration and creation of virtual servers based on demand is the key to truly realizing the benefits of cloud computing. The alternative of doing this individually across hundreds or thousands of machines is untenable. Adopting a philosophy of scripting repeatable tasks and using automation to adapt to real-time conditions is critical to realize the full potential of the cloud. The following tools are ideal additions to your cloud computing toolbox for that reason.
- Puppet -- Puppet is an open source configuration management tool that integrates with other tools to dynamically provision and automate common deployment and management tasks. Administrators who use it in conjunction with tools like Cobbler (a provisioning tool) and the MCollective orchestration tool can build systems on demand and then start and stop services, and accomplish many other tasks based on variables defined throughout your infrastructure.
- Opscode Chef -- Chef is similar to Puppet in that it abstracts the parameters of a device's configuration and applies them based on a recipe, called a "cookbook." Not only can Chef apply a cookbook to installed servers, it can also call Linux package management tools to automate the installation of packages and build systems to a predefined specification.
- Rundeck -- A fairly new but extremely useful tool for cloud management is RunDeck, an orchestration platform that allows you to automate ad-hoc and routine jobs across multiple environments. This gives you a framework for scripting and executing repetitive tasks and deriving a workflow and schedule of those tasks.
Cloud Use Cases
The cloud computing landscape is changing rapidly, with new tools emerging, like VMware's Cfoundry (a new open source Platform as a Service), which exploded on the scene in April and promises to change the cloud landscape significantly.
Most of the tools mentioned here go through multiple release cycles a year, and new tools and services come online daily. As you plan your cloud deployment, pay attention to issues around portability, reusable infrastructure and open standards, so you can capitalize on the many current and future opportunities.