What Is OpenStack?

OpenStack is a system for creating clouds. It provides a single interface to allow the user to distribute computing, storage, and networking over a number of computers. What is different about OpenStack is that it is an open source solution that allows individuals and groups to create their own clouds. This is important because in the past, when companies wanted to create their own clouds, they had two choices. Some, like Twitter, built their own clouds. Most, however, chose to use other company's proprietary clouds. For example, Pinterest uses Amazon Simple Storage Service (S3) for all its storage needs.

History

Back in 2008, Rackspace Hosting had created a cloud based storage system. They were looking to expand it, so they ventured into virtual hosting. At the same time, NASA was working on a system that allowed it to join together large numbers of computers to solve the kind of CPU intensive problems that astronomers have to deal with. In 2010, Rackspace and NASA decided to combine their projects into a single one that dealt with computing, storage, and networking. That was OpenStack.

Eventually, hundreds of other companies would join the project. These include some of the biggest technology companies in the world: AMD, AT&T, IBM, Intel, and even Cisco, which has traditionally been resistant to open source projects. OpenStack has really caught on in the hardware and hosting worlds.

Components

There are many components of OpenStack, but they can be put in three broad categories: computing, storage, and networking. In addition to these, there is also the components that allows users and developers to interact with OpenStack.

Computing Functions

The computing functions of OpenStack are the core of anything that a user does in the cloud. It is the brains of the operation. And it is correct to use the plural, because it is broadly two different things. One is Image Service (Glance), which manages images. But note that these are not images on a disk as you would find on Instagram. Rather they are images of disks: executable code and virtual machines. But Glance doesn't store the images itself. That is done by other components of OpenStack.

The other part of OpenStack computing system is more of what we think of as a traditional operating system: Nova. It manages the instances that are running. But whereas in a traditional operating system, the instances would be processes on a single machine, Nova controls whole virtual machines potentially distributed over thousands of computers.

Storage

There are two parts to OpenStack storage. The most obvious part is Object Storage, or "Swift." Is is the standard system for storing data distributed in a redundant form (think: RAID). This is generally how Glance stores images (although they can be stored on a single drive in a traditional way).

The second component of OpenStack storage is Block Storage of "Cinder." It provides storage for the virtual machines to use. So, just as you might mount a hard drive on a traditional unix system, Cinder allows virtual machines to mount virtual drives. This is the main way that virtual machines have of storing information between instances — more or less the virtual machine equivalent of power cycling.

Networking

Networking is done to some extent in the computing portions of OpenStack, but primarily with the Neutron component. It manages networks and IP addresses. For example, it can give a virtual machine a static IP address or use DHCP for dynamic addressing. It also provides for load balancing and the creation of private networks.

Interface

There are three ways to interface with OpenStack. The primary way is with the OpenStack Dashboard or "Horizon." It is a graphical interface to that allows administrators to manage the cloud, and users to access and use their parts of the cloud. OpenStack also provides a command-line interface and an API.

Doesn't Amazon Offer the Same Thing?

Amazon offers cloud computing — and has since the end of 2006. But it is a proprietary system. It allows users to do much the same kind of stuff like create distributed virtual machines. But it does not allow people to set up their own clouds or take part in improving or advancing the software.

How Can OpenStack Be Used

There are three ways that you can use OpenStack. It's even possible you already are, in the most indirect way, by using a cloud that is built on OpenStack. For example, the HP public cloud is OpenStack based. The more direct way to use OpenStack is to set up your own cloud with it. This is what the system was always meant for. In fact, NASA has stopped being an active partner in developing OpenStack and now just uses it for its many computational needs. And that, of course, brings us to the third way that people use OpenStack and that is by becoming part of the development team to add features or improve the existing system.