With this blog post, we begin a short series about OpenStack, one of the key technologies used by our engineering teams.
You may also hear about Cloud Native computing and containerized solutions, which create competition across the technological landscape for OpenStack and service orchestration. This is all correct – cloud-native gets a lot of traction – however, considering OpenStack maturity and the specific features it provides, it won’t disappear for years, constantly increasing its maturity and richness of features.
Before going there, let’s look at how this all started.
About 10 years ago, two companies, NASA and Rackspace, began building the first free, opensource cloud management software, which is now known as Nova. It was to focus on providing computing resources in a virtualized cloud environment, in order to deploy their cloud solution based on virtual machines and without spending a fortune. Since then, the whole project has grown to become a powerful package able to manage entire Cloud data centers. I will highlight the architecture of the software shortly.
The OpenStack Foundation describes its software as “a Cloud operating system that controls large pools of compute, storage, and networking resources throughout a data center, all managed and provisioned through APIs with common authentication mechanism”.
In other words, it is a software package that lets operators manage their data center through a single UI. It allows users to deploy new VMs, configure them, define network connections and storage amounts, routing rules, etc. Essentially, everything needed to easily manage modern computing systems.
OpenStack is made up of various components, all of which play a role in managing the entire system.
Source: http://www.openstack.org/
Horizon - provides a single User Interface used for VM deployment, configuration and monitoring
Nova - compute service, controls compute resources and provides its telemetry
Cinder - block storage service, provides control over block storage resources (i.e. SSD)
Neutron - networking service, provides control over networking (network abstraction layer)
Glance - provides services and libraries to store and manage bootable disk images
Swift - object storage service, provides scalable object data storage
Keystone - authentication service, provides common authentication methods
Of course, you can achieve the same results using native Linux with KVM as a hypervisor and Linux bridges or OVS. However, you can imagine how much work would be needed to do that for thousands of servers, while still ensuring the same time efficiency, automatic scalability and VM optimization as per resource utilization.
We also cannot forget about security. Since a virtualized cloud environment is intended for multi-tenant use, every tenant needs to be separated from one other to avoid any data breaches. This just implies more complications in your manual deployment and is just the tip of the iceberg.
If you want to know more about architecture and history, I would recommend the resources below.
Please note that there are several OpenStack solutions, both commercial and opensource. 'Why this is happening’ is the topic for an upcoming blog post, to which I warmly invite you to read. Stay tuned!
Main OpenStack Open Source project
https://www.openstack.org/
Commercial solutions (examples):
https://www.mirantis.com/,
https://www.redhat.com/en/technologies/linux-platforms/openstack-platform
Glossary
https://docs.openstack.org/doc-contrib-guide/common/glossary.html