In our first article we gave a general introduction to OpenStack versions, the program management, and development ecosystem. The next areas we are going to look into is the OpenStack foundation, and we will dive into the integrated programs that were a part of the current OpenStack Juno release which came out in October 2014.
The OpenStack Foundation
The OpenStack foundation is the governing body that helps to guide the growth and development of OpenStack. The foundation is comprised of a Board of Directors who manage corporate governance, plus a technical committee, which provides technical leadership on the OpenStack ecosystem.
By having the OpenStack foundation provide general guidance, the OpenStack ecosystem is able to be community contributed while maintaining a direction that keeps the overall development and growth on track towards a specific, agreed-upon set of goals. This has been the key ingredient in maintaining standards while also responding to community-driven change.
Understanding the Programs
Since its inception in 2010, the program list (sometimes referred to as projects) has grown to include numerous integrated programs. I tend to list them in a particular order, more by capability rather than evolution. Let's first review the programs that have been integrated leading up to Juno.
Nova - OpenStack Compute
Perhaps the most core of the OpenStack projects, Nova is the heart of the compute platform that drives the ability to run and manage guest instances. Nova has a scheduler and drivers to connect and manage hypervisors on hosts to run instances. This can be confusing to some as Nova is not a hypervisor itself.
The underlying hypervisor can include VMware vSphere, Microsoft Hyper-V, KVM, XenServer and some others (https://wiki.openstack.org/wiki/HypervisorSupportMatrix) including the Docker container platform as well. Because OpenStack is hypervisor agnostic, you can actually run multiple hypervisors and control them all together as a part of a single cloud infrastructure.
Nova also provides networking support for the OpenStack cloud with the ability to run Layer 3 networks and provide DHCP services to the running instances. Nova network was once considered to be heading towards "legacy" status, but it was found that Nova networking was sufficient for many customers and has since held and gained traction with contributions from the developer ecosystem.
Glance - OpenStack Image
For those familiar with VMware, think of images as VM templates. If you've used Amazon Web Services (AWS) or other cloud products like Azure, images are the catalogue of instance templates that you use as a baseline when deploying your personalized instances.
Images can include base instances with a simple operating system, or can also be fully customized application builds. Using the Glance program, we can upload images on a per-tenant and per-cloud basis. The tenants can also create glance images for use within their own personal tenant area
Cinder - OpenStack Block Storage
While Nova instances can run using simple ephemeral storage close to the hypervisor, the need for persistent block storage is a common one. The Cinder program manages the abstraction of storage, which can be either hardware or software driven.
Many drivers exist for commercial storage vendor platforms (https://wiki.openstack.org/wiki/CinderSupportMatrix), evidence that there are feature-specific support levels within each vendor driver.
Another misconception about OpenStack is around different features and capabilities such as mirroring, snapshots, and other features that we find in many enterprise storage platforms. Cinder itself does not provide these features, but it performs the management of features, which are offloaded to the underlying storage platform.
Neutron - OpenStack Networking
Perhaps the most-talked-about program in OpenStack is Neutron. Once dubbed Quantum, it was renamed to Neutron after the Grizzly release to eliminate any legal conflicts with the storage vendor holding the same name.
Neutron provides advanced networking capabilities to OpenStack including support for Layer 2 and Layer 3 networking with extended support to allow SDN (Software-Defined Networking) platforms such as VMware NSX, Cisco ACI, and Open vSwitch to operate stretched Layer 2 networks.
The key feature for Neutron is the design, which includes the ML2 (Modular Layer 2) plugin support that can be used by any supporting vendor. This standardized approach allows for the best in interoperability.
NFV (Network Function Virtualization) features are also present in OpenStack thanks to the capabilities of Neutron.
Keystone - OpenStack Identity
The Keystone program handles authentication and authorization. Using a built-in directory, or extending to attach to an existing LDAP compliant directory if supported, OpenStack operators are able to create and assign users and roles to use OpenStack services.
Using a token system, Keystone will authenticate a user, provide a time-based token, and all future transactions by that user session will pass the token between the other programs where the rights are checked for authorization to perform different functions.
Horizon - OpenStack Dashboard
One of the core tenets of a cloud environment is the ability to provide "on-demand self-service". This is done for OpenStack using the Horizon dashboard program. Using the web dashboard, both administrators and consumers of the OpenStack cloud can request resources, and manage existing instances and features as allocated by rights using Keystone.
The simple and effective user interface is becoming a focus of developers because of the importance of ease-of-use in adoption of any cloud technology.
Swift - OpenStack Object Storage
Distributed object storage is most commonly attributed to the widely used Amazon S3 (Simple Storage Service) platform. Objects are written to storage, remain fully accessible, and are given a fully addressable URI to retrieve them as needed.
Object storage in OpenStack works in the same way with a distributed JBOD (Just a Bunch Of Disks) methodology. The Swift infrastructure uses algorithms to distribute copies of objects across multiple storage endpoints to provide protection. This is very different from traditional RAID (Redundant Array of Independent Disks).
Swift being the oldest of most programs is regarded as one of the more mature. It has an independent release cycle and is also one of the simplest programs to upgrade due to its distributed topology and ring architecture.
Ceilometer - OpenStack Telemetry
Telemetry is the measurement and metering of instances. The Ceilometer program provides instrumentation and usage information about the running instances and hosts. This detail can be used to feed into a chargeback system and provide pricing per-tenant.
Heat - OpenStack Orchestration
The Heat program handles orchestration within OpenStack. There are many other orchestration tools that work along side an OpenStack deployment such as Puppet, Chef and Ansible, but the native orchestration can now be done within Heat.
Using a YAML-based template format called HOT, administrators and tenants alike can build Heat stacks to be used for repeated deployments and automation within the OpenStack cloud.
Trove - Database Service (DBaaS)
While traditional relational databases can be run inside a guest instance, there are many cloud-based database alternatives that have risen in popularity. Azure offers the same features as traditional on-premises MS SQL server in their cloud platform. This is precisely what the Trove program is built to do for OpenStack.
The database service can be used by any instance in the tenant, which allows for a distributed database design without the need to manage the underlying operating system and dependencies.
Sahara - Data Processing (aka Big Data)
Since Icehouse, the release that preceded Juno, the Data Processing program codenamed Sahara was elevated from incubation to an integrated program. This exciting program has many watching how it is forming and is also attracting a lot of contributions. By providing an as-a-Service type of presentation for a Big Data platform, we could see the overall data processing field move more to the mainstream as people have a new way to deploy and test.
Much more coming!
We've reviewed the integrated projects here, and there are more to talk about as we review the incubation projects in our next article in this series.