OpenStack is a set of software tools for building and managing
cloud computing platforms for public and private clouds. Backed by
some of the biggest companies in software development and hosting, as
well as thousands of individual community members, many think that
OpenStack is the future of cloud computing. OpenStack is managed by
the OpenStack Foundation, a non-profit which oversees both
development and community-building around the project.
Introduction to OpenStack
OpenStack lets users deploy virtual machines and other instances
which handle different tasks for managing a cloud environment on the
fly. It makes horizontal scaling easy, which means that tasks which
benefit from running concurrently can easily serve more or less users
on the fly by just spinning up more instances. For example, a mobile
application which needs to communicate with a remote server might be
able to divide the work of communicating with each user across many
different instances, all communicating with one another but scaling
quickly and easily as the application gains more users.
And most importantly, OpenStack is open source software, which
means that anyone who chooses to can access the source code, make any
changes or modifications they need, and freely share these changes
back out to the community at large. It also means that OpenStack has
the benefit of thousands of developers all over the world working in
tandem to develop the strongest, most robust, and most secure product
that they can.
How is OpenStack used in a cloud environment?
The cloud is all about providing computing for end users in a
remote environment, where the actual software runs as a service on
reliable and scalable servers rather than on each end users computer.
Cloud computing can refer to a lot of different things, but typically
the industry talks about running different items "as a
service"—software, platforms, and infrastructure. OpenStack
falls into the latter category and is considered Infrastructure as a
Service (IaaS). Providing infrastructure means that OpenStack makes
it easy for users to quickly add new instance, upon which other cloud
components can run. Typically, the infrastructure then runs a
"platform" upon which a developer can create software
applications which are delivered to the end users.
What are the components of OpenStack?
OpenStack is made up of many different moving parts. Because of
its open nature, anyone can add additional components to OpenStack to
help it to meet their needs. But the OpenStack community has
collaboratively identified nine key components that are a part of the
"core" of OpenStack, which are distributed as a part of any
OpenStack system and officially maintained by the OpenStack
community.
- Nova is the primary computing engine behind
OpenStack. It is a "fabric controller," which is used for
deploying and managing large numbers of virtual machines and other
instances to handle computing tasks.
- Swift is a storage system for objects and
files. Rather than the traditional idea of a referring to files by
their location on a disk drive, developers can instead refer to a
unique identifier referring to the file or piece of information and
let OpenStack decide where to store this information. This makes
scaling easy, as developers don’t have the worry about the
capacity on a single system behind the software. It also allows the
system, rather than the developer, to worry about how best to make
sure that data is backed up in case of the failure of a machine or
network connection.
- Cinder is a block storage component, which
is more analogous to the traditional notion of a computer being able
to access specific locations on a disk drive. This more traditional
way of accessing files might be important in scenarios in which data
access speed is the most important consideration.
- Neutron provides the networking capability
for OpenStack. It helps to ensure that each of the components of an
OpenStack deployment can communicate with one another quickly and
efficiently.
- Horizon is the dashboard behind OpenStack.
It is the only graphical interface to OpenStack, so for users
wanting to give OpenStack a try, this may be the first component
they actually “see.” Developers can access all of the components
of OpenStack individually through an application programming
interface (API), but the dashboard provides system administrators a
look at what is going on in the cloud, and to manage it as needed.
- Keystone provides identity services for
OpenStack. It is essentially a central list of all of the users of
the OpenStack cloud, mapped against all of the services provided by
the cloud which they have permission to use. It provides multiple
means of access, meaning developers can easily map their existing
user access methods against Keystone.
- Glance provides image services to OpenStack.
In this case, "images" refers to images (or virtual
copies) of hard disks. Glance allows these images to be used as
templates when deploying new virtual machine instances.
- Ceilometer provides telemetry services,
which allow the cloud to provide billing services to individual
users of the cloud. It also keeps a verifiable count of each user’s
system usage of each of the various components of an OpenStack
cloud. Think metering and usage reporting.
- Heat is the orchestration component of
OpenStack, which allows developers to store the requirements of a
cloud application in a file that defines what resources are
necessary for that application. In this way, it helps to manage the
infrastructure needed for a cloud service to run.
Who is OpenStack for?
You may be an OpenStack user right now and not even know it! As
more and more companies begin to adopt OpenStack as a part of their
cloud toolkit, the universe of applications running on an OpenStack
backend is ever-expanding.
How do I get started with OpenStack?
If you just want to give OpenStack a try, one good resource for
spinning the wheels without committing any physical resources is
TryStack. TryStack lets you test your applications in a sandbox
environment to better understand how OpenStack works and whether it
is the right solution for you.
Ready to learn more? Every month, we publish a collection of the
best new guides, tips, tricks, tutorials for OpenStack.
OpenStack is always looking for new contributors. Consider joining
the OpenStack Foundation or reading this introduction to getting
started with contributing to OpenStack.