Introduction to OpenStack
It is a free open standard cloud computing platform that first came into
existence on July 21' 2010. It was a joint project of Rackspace Hosting and
NASA to make cloud computing more ubiquitous in nature. It is deployed as
Infrastructure-as-a-service(IaaS) in both public and private clouds where virtual
resources are made available to the users. The software platform contains
interrelated components that control multi-vendor hardware pools of
processing, storage, networking resources through a data center. In OpenStack,
the tools which are used to build this platform are referred to as "projects".
These projects handle a large number of services including computing,
networking, and storage services. Unlike virtualization, in which resources such
as RAM, CPU, etc are abstracted from the hardware using hypervisors,
OpenStack uses a number of APIs to abstract those resources so that users and
the administrators are able to directly interact with the cloud services.
OpenStack components
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 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 is able to 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 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.
These are the services around which this platform revolves around. These
services individually handle storage, compute, networking, identity, etc. These
services are the base on which the rest of the projects rely on and are able to
orchestrate services, allow bare-metal provisioning, handle dashboards, etc.
Features of OpenStack
Modular architecture: OpenStack is designed with a modular architecture that
enables users to deploy only the components they need. This makes it easier to
customize and scale the platform to meet specific business requirements.
Multi-tenancy support: OpenStack provides multi-tenancy support, which
enables multiple users to access the same cloud infrastructure while
maintaining security and isolation between them. This is particularly important
for cloud service providers who need to offer services to multiple customers.
Open-source software: OpenStack is an open-source software platform that is
free to use and modify. This enables users to customize the platform to meet
their specific requirements, without the need for expensive proprietary
software licenses.
Distributed architecture: OpenStack is designed with a distributed architecture
that enables users to scale their cloud infrastructure horizontally across
multiple physical servers. This makes it easier to handle large workloads and
improve system performance.
API-driven: OpenStack is API-driven, which means that all components can be
accessed and controlled through a set of APIs. This makes it easier to automate
and integrate with other tools and services.
Comprehensive dashboard: OpenStack provides a comprehensive dashboard
that enables users to manage their cloud infrastructure and resources through
a user-friendly web interface. This makes it easier to monitor and manage
cloud resources without the need for specialized technical skills.
Resource pooling: OpenStack enables users to pool computing, storage, and
networking resources, which can be dynamically allocated and de-allocated
based on demand. This enables users to optimize resource utilization and
reduce waste.
Advantages of using OpenStack
It boosts rapid provisioning of resources due to which orchestration and scaling
up and down of resources becomes easy.
Deployment of applications using OpenStack does not consume a large amount
of time.
Since resources are scalable therefore they are used more wisely and
efficiently.
The regulatory compliances associated with its usage are manageable.
Disadvantages of using OpenStack
OpenStack is not very robust when orchestration is considered.
Even today, the APIs provided and supported by OpenStack are not compatible
with many of the hybrid cloud providers, thus integrating solutions becomes
difficult.
Like all cloud service providers OpenStack services also come with the risk of
security breaches