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. It is managed by the OpenStack Foundation, a non-profit that oversees development and community-building around the project.
What is OpenStack?
OpenStack is an open-source platform that uses pooled virtual resources to build and manage private clouds and public clouds. The tools that comprise the OpenStack platform, called “projects,” handle the core cloud computing services of computing, networking, storage, identity, and image services. More than a dozen optional projects can also be bundled to create unique, deployable clouds.
In virtualization, resources such as storage, CPU, and RAM are abstracted from a variety of vendor-specific programs and split by a hypervisor before being distributed as needed. OpenStack uses a consistent set of application programming interfaces (APIs) to abstract those virtual resources 1 step further into discrete pools used to power standard cloud computing tools that administrators and users interact with directly.
How does it work?
OpenStack is an open-source cloud platform designed to manage distributed computing, network, and storage resources in the data center. In principle, OpenStack aggregates physical resources into one big pool and allocates virtual resources out of this pool to users who can request them on-demand through a self-service portal or application programming interfaces (APIs). But OpenStack itself does not handle virtualization. Instead, it leverages the existing virtualization technologies. Therefore, OpenStack is more like a wrapper around traditional virtualization tools, enabling cloud-native capabilities.
Functions of OpenStack
OpenStack manages data center resources and simplifies resource allocation. It manages three types of resources:
- Computing resources: OpenStack can plan and manage a large number of VMs, allowing enterprises or service providers to provide computing resources as required. Developers can access computing resources through APIs to create cloud applications, while administrators and users can access these resources through web pages.
- Storage resources: OpenStack can provide object and block storage resources for cloud services or applications. Traditional enterprise-class storage technologies can no longer fulfill the requirements of many organizations due to performance and price factors. To address this, OpenStack provides configurable object or block storage functions based on user requirements.
- Network resources: Currently, a large number of configurations, including those for servers, network devices, storage devices, and security devices, need to be performed in data centers. Such physical devices are divided into more virtual devices or networks, leading to an explosive increase in the number of IP addresses, routes, and security rules. Traditional network management technologies cannot manage next-generation networks with high scalability and automation. To address these issues, OpenStack provides plug-in, scalable, and API-driven network and IP address management functions.
Apart from various projects which constitute the OpenStack platform, there are nine major services namely Nova, Neutron, Swift, Cinder, Keystone, Horizon, Ceilometer, and Heat. Here is the basic definition of all the components which will give us a basic idea about these components.
- Nova (compute service): It manages the compute resources like creating, deleting, and handling the scheduling. It can be seen as a program dedicated to the automation of resources that are responsible for the virtualization of services and high-performance computing.
- Neutron (networking service): It is responsible for connecting all the networks across OpenStack. It is an API-driven service that manages all networks and IP addresses.
- Swift (object storage): It is an object storage service with high fault tolerance capabilities and it is used to retrieve unstructured data objects with the help of Restful API. Being a distributed platform, it is also used to provide redundant storage within servers that are clustered together. It can successfully manage petabytes of data.
- Cinder (block storage): It is responsible for providing persistent block storage that is made accessible using an API (self-service). Consequently, it allows users to define and manage the amount of cloud storage required.
- Keystone (identity service provider): It is responsible for all types of authentications and authorizations in the OpenStack services. It is a directory-based service that uses a central repository to map the correct services with the correct user.
- Glance (image service provider): It is responsible for registering, storing, and retrieving virtual disk images from the complete network. These images are stored in a wide range of back-end systems.
- Horizon (dashboard): It is responsible for providing a web-based interface for OpenStack services. It is used to manage, provision, and monitor cloud resources.
- Ceilometer (telemetry): It is responsible for the metering and billing of services used. Also, it is used to generate alarms when a certain threshold is exceeded.
- Heat (orchestration): It is used for on-demand service provisioning with auto-scaling of cloud resources. It works in coordination with the ceilometer.
What are the pros and cons of OpenStack?
Many enterprises that deploy and maintain an OpenStack infrastructure enjoy several advantages, including that it is:
- Affordable. OpenStack is available freely as open-source software released under the Apache 2.0 license. This means there is no upfront cost to acquire and use OpenStack.
- Reliable. With almost a decade of development and use, OpenStack provides a comprehensive and proven production-ready modular platform upon which an enterprise can build and operate a private or public cloud. Its rich set of capabilities includes scalable storage, good performance, and high data security, and it enjoys broad acceptance across industries.
- Vendor-neutral. Because of OpenStack’s open-source nature, some organizations also see it as a way to avoid vendor lock-in, as an overall platform as well as its component functions.
But potential adopters must also consider some drawbacks, such as the following:
- Complexity. Because of its size and scope, OpenStack requires an IT staff with significant knowledge to deploy the platform and make it work. In some cases, an organization might require additional staff or a consulting firm to deploy OpenStack, which adds time and cost.
- Support. As open-source software, OpenStack is not owned or directed by any one vendor or team. This can make it difficult to obtain support for the technology, beyond the open-source community.
- Consistency. The OpenStack component suite is always in flux as new components are added and others are deprecated.
To conclude, OpenStack has multiple advantages. It has a vibrant ecosystem, and it is open-source and free. Nowadays, more companies are beginning to adopt OpenStack as a part of their cloud tool kit. Another advantage is that a large number of people can check the source code. Openstack is being used in many industry sectors, and more are planning to adopt it, considering its popularity and ease of use.