As private and hybrid clouds become more popular, many companies are discovering the advantages of building their cloud utilizing OpenStack.
So, what is OpenStack? In short, it is a cloud computing software platform. It began in 2010 as a joint project of Rackspace Hosting and NASA, and it has evolved into a community driven open source “project” managed by the OpenStack Foundation. The community consists of over 200 contributing companies ranging from the very small to the giants of IT such as IBM, HP, VMware, Cisco, Dell, etc.
OpenStack has a very modular architecture, with each of its components geared toward a specific task and carrying a code name. Here are a few of the more common components:
- Compute (Nova) – this component manages and automates pools of compute resources and is designed to work with a wide array of virtualization technologies such as VMware, Xen, Hyper-V, KVM, as well as Linux container technology such as LXC.
- Object Storage (Swift) – scalable, redundant object storage.
- Block Storage (Cinder) – persistent block-level storage.
- Networking (Neutron) – manages networks and IP addresses.
Currently, there are 11 OpenStack components available with 5 more currently in the works. Vendors such as HP and IBM offer OpenStack based offerings that include installation services, consulting, and customer support options. They will package in some of their own software to function for an OpenStack component that is still in development. As that component becomes available through the OpenStack Foundation, the vendor will then remove their software in favor of the new component.
What is OpenStack used for? This cloud computing platform creates a virtualization layer that (1) allows the layer to utilize disparate brands and types of underlying infrastructure while presenting it seamlessly, in a virtualized fashion, to upper software layers and applications; (2) offers a standard way to access and utilize this virtualized infrastructure very efficiently; and (3) offers several tools if the goal is to build custom applications or scripts that take advantage of the underlying cloud capabilities.
For a customized experience, there are a number of ways to interface with the OpenStack components using custom software or scripts:
- Software Development Kit (SDK) – The SDKs are collections of code examples and documentation that help developers create OpenStack compatible applications in the language of their choice. There are SDKs for most of the popular languages, and a list can be found here.
- Command Line Interface (CLI) – Scripts are a quick, easy, and popular way to automate complex or repetitive tasks. Scripts can easily interface with OpenStack components using the command line interface.
- Application Programming Interface (API) – If you are using a programming language that does not have an SDK, never fear! You can utilize the APIs. This is a set of calls or functions that allow easy access to the capabilities within the OpenStack components.
OpenStack offers an open source approach to building an internal or hybrid cloud and reaping the benefits that a cloud environment can offer. The OpenStack community, through the OpenStack Foundation, continues to expand and refine its collection of components. And where the component set is still evolving, vendors such as HP and IBM step in to temporarily fill the gaps. Also, these and other vendors are creating comprehensive offerings that also include installation and support (such as HP’s Helion).
In addition, the OpenStack capabilities can be easily integrated and expanded through custom development using the SDKs, APIs, and CLIs. OpenStack continues to grow and expand, and it is an approach that should be examined with great interest for those wanting to create their own internal or a hybrid cloud environment.