How to Succeed with an OpenStack or CloudStack Project
This year, we’ve seen successful OpenStack and CloudStack projects, including Cisco and Red Hat’s OpenStack-based distributions, and Citrix contributing CloudStack to the Apache Software Foundation while launching Citrix CloudPlatform.
Both Puppet Labs and Zenoss have been involved in several of these projects and wanted to share some insight with those who are looking to start an open source cloud project, or are already started. The common denominator in all of these successes has been deep technical knowledge, time to build, and forethought.
How to Successfully Start an OpenStack Project
The first decision that an organization deploying OpenStack needs to make is whether to build or buy. It's important to make this decision based on your specific situation.
If you choose to build it in-house, the most important factor to consider is whether you have the internal technical expertise to install, troubleshoot and debug any errors that may occur. OpenStack is an abstraction layer that creates APIs to abstract the management of compute, network, and storage resources away from end users. A company running their own OpenStack environment needs a certain amount of expertise at multiple layers, from underlying systems and networking troubleshooting skills all the way up to the application layer including basic proficiency in Python. Even though OpenStack abstracts the details of managing compute resources from the end user, those resources still need to be managed by someone.
Another consideration is whether you will need to write custom extensions to support your use case. OpenStack is extremely extensible, but writing extensions will require some significant Python development experience and interaction with the various projects within OpenStack itself.
If technology is not a core focus of your business, then you may want to consider just purchasing OpenStack in one of three forms: distribution (getting packages/installers from someone else along with support [Cisco, RedHat, Nebula]), appliance (buying hardware pre-configured to run a fully functional OpenStack environment [Morphlabs]), or consulting (Mirantis).
How to Successfully Start a CloudStack project
Building CloudStack isn’t all that different from OpenStack, although CloudStack is more of a turnkey solution. CloudStack manages the network, storage, and compute nodes that make up public, private or hybrid cloud infrastructures. Currently, CloudStack is within the incubator phase in the Apache Software Foundation and has just released its first Apache CloudStack Version 4.0.
If you are planning on building CloudStack yourself, the Apache CloudStack community provides excellent documentation and technical expertise. Additionally, a CloudStack installation is comprised of a management server and the cloud infrastructure. The management server consists of the web interface, APIs, management, and provides a single point to configure your CloudStack cloud. Meanwhile the cloud infrastructure may be nested and is divided into zones, pods, and clusters. It is important to familiarize yourself with CloudStack’s terminology, installation, and administration prior to installing the software.
CloudStack provides extensibility through plugins such as VMware Nicira NVP extension and Trend Micro SecureCloud. To accomplish this, CloudStack provides a plugin API that is Java and there is a set of predefined functionality that is exposed. Therefore, to write a plugin (there are other types of APIs including Platform and Agent), you must be proficient in Java.
Of course, this approach isn’t for everyone and you have the option of purchasing Citrix CloudPlatform powered by CloudStack from one of Citrix’s certified partners. Additionally, Citrix offers other value-add solutions including CloudPortal, XenServer and cloud networking via NetScaler.
Already Started? Maximize your Open Source Cloud Deployment
If you've already started an OpenStack or CloudStack project, there are a number of things to keep in mind for continued success. One of the big mistakes most organizations make is underestimating the benefits of open source projects—the code is free, but this is only a small piece of the value proposition. Many other aspects of open source software beyond just the code are open—the design, known issues, and development process are also transparent.
The designs of future features and the roadmap of the projects are also completely open for Cloudstack and OpenStack. This gives you visibility into the direction the project is headed, which can assist you in making long term plans with the software. It also gives you the ability to help define and shape the future of the project to fit your needs.
Being actively involved in open source communities also allows you to build relationships with your peers in other organizations who are solving the exact same problems as yourself. These relationships can be extremely helpful for sharing best practices, and sometimes for troubleshooting.
We have some additional simple recommendations for accessing the benefits of these open source cloud deployments:
- Stay up-to-date on changes and new releases. Due to the fast development on these projects, keeping up with changes and bug fixes can be more taxing than in the more established and slower-changing projects. For example, OpenStack has a time-based release process that releases a new version every six months. You may (and likely) have good reasons not to immediately upgrade to the newest version, but knowing what changes and updates have been added enables you to make a well-informed decision on what you should be working on. A wide variety of users will contribute back code to solve common problems, and falling behind on updates and information means you're much more likely to rely on internal workarounds, or you might be missing out on some new great features.
- Become a contributing member of the community. We'd recommend contributing back anything that isn't a key business differentiator—even if you're building a product based on OpenStack or CloudStack. If everything is homegrown, then only your organization can support it. Your time is better spent focusing on building and supporting your key business differentiators, rather than supporting small unique changes you've made to improve your cloud deployment. A diverse set of contributors can significantly reduce your ongoing support burden for maintaining code.
Tools that Will Help You Build and Maintain
There are several key tools that you’ll need to have while you build and maintain OpenStack and CloudStack. Again, you'll want to make sure to stay consistent with your existing infrastructure tools to simplify the operational management of your IaaS environment.
The base operating system, hypervisor, and OpenStack software runs on bare metal and requires provisioning and configuration management from vendors such as Puppet Labs. A bare-metal solution that can provision out your OpenStack or CloudStack infrastructure increases the efficiency at which you can provision new compute resources into your cloud.
Configuration Management is important both for ensuring a consistent and reliable deployment, as well as managing the accelerated pace at which applications can be deployed into an IaaS layer. Puppet Labs has been involved in both the OpenStack and Cloudstack communities, providing automation tooling for building out the IaaS environments, as well as automating the provisioning of VMs into those environments.
Monitoring and metrics are essential to understand both the performance and availability of your environment and to ensure reliability of the services. Zenoss provides monitoring ZenPacks for both OpenStack and CloudStack that easily integrate with solutions like Puppet to allow for automated actions to turn outages into incidents or increase/decrease capacity on demand.
Service Assurance gives the IT organizations the ability to manage services instead of elemental components. This is essential when using either OpenStack or CloudStack as it allows IT Operations to visualize the complex and dynamic relationships that exist within the infrastructure.
Log aggregation is extremely helpful when debugging issues because errors may occur simultaneously across multiple services and potentially across multiple hosts.
What a Successful Open Source Cloud Deployment Project Looks Like
The biggest indicator of success with your OpenStack or CloudStack deployment is whether or not it is enabling business objectives. There may be a lot of impressive technical infrastructure, but the measure of success should not change. Recent success stories of OpenStack in production include Cisco WebEx's overhaul of their fragmented infrastructure with OpenStack and Comcast's adoption of Cisco's OpenStack product offering.
Meanwhile CloudStack is powering many of the world’s leading telecommunications and technology companies including BT, China Telecom, KDDI, NTT, Nokia, and Datapipe.
Last Piece of Advice
If you are seriously thinking about OpenStack or CloudStack, and have the IT team available to handle the time and technical expertise it takes to do this, we highly suggest attending meet-ups and conferences to get a better understanding of the technology and how people are using it. Meeting current users at live events will give you a big head start before you even begin your project. Just joining the community to contribute code and get help when needed is a big step towards success with your open source cloud deployment.
About the Authors
Dan Bode is an Integration Specialists at Puppet Labs. He has worked in the technology industry as a consultant and software developer for almost a decade. He has spent most of the last four years building infrastructure automation solutions and teaching people how to use Puppet. He currently works in the Business Development department at Puppet Labs where he spends his time researching technologies and figuring out how they can be integrated with Puppet to provide value.
Puppet Labs’ IT automation software enables system administrators to deliver the operational agility and efficiency of cloud computing at enterprise-class service levels, scaling from handfuls of nodes on-premise to tens of thousands in the cloud. Puppet powers thousands of companies, including Twitter, Yelp, eBay, Zynga, JP Morgan Chase, Bank of America, Google, Disney, Citrix, Oracle, and Viacom.
Floyd Strimling is the VP of Community and Technical Evangelist at Zenoss. Floyd has been following the Cloud computing/autonomic computing (and predecessors), datacenter automation, virtualization, networking and security areas now for over a decade. Prior to Zenoss, Floyd was the Chief Technical Strategist for AlterPoint/Versata. Follow Floyd on Twitter, @PlatenReport.
Zenoss is a leading provider of management software for physical, virtual, and cloud-based IT infrastructures. Over 35,000 organizations worldwide have deployed Zenoss to manage their networks, servers, virtual devices, storage, and cloud infrastructure, gaining complete visibility and predictability into their IT operations. Customers include Rackspace, VMware, Hosting.com, LinkedIn, Motorola and SunGard.