Keywords

1 Introduction

The National Institute of Standards and Technology (NIST) describes cloud computing, as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction [1].

Cloud Computing has changed the IT industry [2], making the software even more attractive through new technologies such as full virtualization or lighter alternatives such as containerization. Nowadays there is a broad discussion on industrial and academic areas about the advantages and disadvantages of various commercial and public cloud technologies such as (IBM, Amazon EC2, Google App Engine, Windows Azure, Hadoop, Eucalyptus, Open Nebula, Nimbus, etc.) [3,4,5]. However, these commercial clouds usually charge high price based on the features that are used. In some specific situations, it is more advantageous for the companies build your own cloud infrastructure. On the other hand OpenStack has emerged as a full-stack of IaaS efficient and through a growing set of open source software platform and under development in addition to being one of the cloud stacks, currently most used. OpenStack is highly configurable to meet different needs. The Fig. 1 shows the relationship between the services of a typical OpenStack environment. We will address each component of this architecture in the next Section.

Fig. 1.
figure 1

Conceptual architecture, adapted from Kavanagh [6] 2015.

The remainder of this comprehensive outline is organised as follows: First in Sect. 2, we presented the object of study will be presented in a detailed, updated and statistically descriptive to describe and summarize the open source computing cloud OpenStack project. Then in Sect. 3, community participation in the OpenStack project is presented, which is considered as a major responsible for the growth of this project. Lastly in Sect. 4, the conclusions and recommendations to the issues initially raised by the unfolding of the research will be presented. The objective of this research is not to present open-source cloud management platforms or others infrastructure as a service (IaaS), we will focus only on OpenStack projects.

2 OpenStack

In 2010, Rackspace and NASA jointly launched the first OpenStack distribution titled of Austin [7, 8]. His goal was to create an open-source cloud platform that could provisioning computing services for private and public clouds. The initial release Rackspace/NASA included only two projects: Swift - for the management object storage system and Nova - for managing compute resource pools.

A way to assess the participation of companies in the OpenStack projects is to look for corporate contributions of all major projects that make up OpenStack. The Fig. 2 shows the share of the companies that most has contributed with commits to OpenStack through the years.

Fig. 2.
figure 2

Contribution by company.

Over all top contributors have been Rackspace, HP, Mirantis, Red Hat and IBM for the past two releases. E.g. the IBM ranked fourth out of 180 companies with more than 4,000 commits to the Newton release. In just one semester, 180 IBM employees contributed with about 14.329 code reviews, implemented 28 blueprints, and fixed 477 bugs for a total of more than 420,000 lines of code.

It is not just about who is the biggest contributor, whether a company wants to invest money, time or human resources for example in an environment or an OpenStack product. Arise relevant questions about potential partners, e.g. In which project the companies are focusing? What is the OpenStack partner really has the expertise to support your production needs? The investment of this partner in OpenStack release is compatible with the products and services that they are selling? This provider could be a long-term strategic partner in your future needs? These are questions that can be answered by analyzing the company’s participation in the OpenStack community.

The OpenStack releases possess different code-names that is proposed and chosen by the technical committee. Each release is comprised of components/services that are interrelated, this modularity enables the deployment of specific services for each case. Each of these services can use each other, it is also possible to modify adapt or customize any service, provided that the basic structure of the APIs is maintained, so that each of the constituent services work together to provide an integrated solution IaaS. The Fig. 3, shows the relationships between the OpenStack services.

Fig. 3.
figure 3

OpenStack logical architecture.

Compute (Nova), is the cloud computing infrastructure manager, all the activities necessary to maintain the life cycle of the instances are controlled by Nova, also is able to manage all resources needed such as cloud scalability, network and so on. The Nova project is a management platform, but does not possess any virtualization capability in itself, it uses the libvirt APIs for supporting a wide variety of virtualization technologies including KVM, Xen, LXC, VMware and more.

Image Service (Glance), provides a image services that lists, records, and retrieves virtual machine images. Glance manage images in a cluster of OpenStack, however is not responsible for the actual storage instead it provides an abstraction for specific storage technologies.

Object Storage (Swift), the OpenStack Object Store project, known as Swift, offers cloud storage software so that applications can store and retrieve lots of data with a simple API. Such objects are stored in different units so Swift ensures that the data is replicated in a clustered server. Initially Swift distributes copies of each object by region (first by region, then by zone, server and across drives).

Dashboard (Horizon), is the implementation of OpenStack Dashboard, which provides a web based user interface to OpenStack services including Glance, Nova, Neutron, Sahara and others. It brings together all OpenStack projects in a single pane based on a Django module called django-openstack.

Identity Service (Keystone), is a OpenStack Identity service that manages user databases and authentication type as (authn) and authorization of high level as (microsoft AuthZ API). It integrates with existing back-end directory services such as LDAP and has recently been re-architected to allow for expansion to support proxy services and external AuthZ/AuthN mechanisms as oAuth, SAML and openID.

Networking (Neutron, formerly Quantum), provides networking as a service to other OpenStack components (such as Nova). It does this by creating and attaching the virtual switch port to the vNIC of the VM. Neutron also includes a set of API interfaces and plug-ins that enable interoperability and network devices orchestration in IaaS environments.

Block Storage (Cinder), implement services and libraries to provide on demand, self-service access to Block Storage resources. Provide Software Defined Block Storage via abstraction and automation on top of various traditional backend block storage devices, under the most common scenario, the Cinder volumes provide persistent storage to guest virtual machines.

Orchestration (Heat), it is an OpenStack project specifically dedicated to orchestration, making it possible to manage multiple instances in an automatic way. Since the heat-engine component provides the main orchestration functionality and supports an orchestration engine to create multiple composite cloud-based model applications in the form of text files that can be treated as code through a native OpenStack API RESTful as the heat-api-cfn component similar to the AWS CloudFormation compliant API Query.

Telemetry (Ceilometer), currently, the telemetry project provides a set of functionality split across multiple projects, each project designed to provide a discrete service in the telemetry space through the following capabilities: Publishes collected data to various targets including data stores and message queues among others.

Database (Trove), is database as-a-service for OpenStack, Trove lays the groundwork for automating the provisioning and management of leading the features of a relational or non-relational database without the burden of handling complex administrative tasks. Initially, the Trove project will focus on resource isolation at high performance while automating complex administrative tasks including patching, backups, restores, configuration and deployment.

Elastic Map Reduce (Sahara), sahara project aims to provide users with a simple means to provision data processing such as Spark or Hadoop on OpenStack. This is accomplished by specifying configuration parameters such as the framework version, cluster topology, node hardware details and more.

Bare Metal Provisioning (Ironic), is the OpenStack service which provides the capability to provision bare metal servers instead of virtual machines, forked from the Nova baremetal driver but Ironic also supports vendor-specific plugins which may implement additional functionality. For a general overview please see: Introduction to Ironic in which its drivers support a variety of hardware vendors such as iBOOT, DRAC, SMTP and others.

Multiple Tenant Cloud Messaging (Zaqar), is the OpenStack Messaging and Notification service. It is similar to Amazon’s SQS product with additional semantics to support event transmission. E.g., when installing python-zaqarclient the application will have access to the plugin to python- openstackclient to create single-row operations. Thus, users can customize Zaqar to achieve a wide range of performance, durability, availability and more efficient targets.

Shared File System Service (Manila), is a community-driven project that presents the management of file shares such as NFS as a core service to OpenStack.

DNSaaS (Designate), provides DNS-as-a-Service for OpenStack such as REST API for domain, record management, integration with Keystone for authentication among others services. It is equivalent to Amazon Route 53. It is authenticated through the Keystone Token, and Designate processes RPC requests through MQ. Uses an API for the DNS Backend, such as MySQLBind and PowerDNS.

Search Service (Searchlight), it aims to improve a search capabilities and performance of various OpenStack cloud services. It accomplishes this by offloading user search queries from existing API servers and indexing their data into ElasticSearch. ElasticSearch is a search server based on Apache Lucene, your goal is to achieve a high performance and flexible query combined with p indexing in real time.

Security API (Barbican), is a REST API OpenStack project designed for the safe storage, provisioning and management of secrets such as passwords, encryption keys and SSL Certificates.

3 Community

In less than five years, OpenStack has become the largest project in open source cloud. Currently has a foundation that gathers some of the biggest IT companies in the world [9] over 180 companies contributing and more than 6,000 individual members [10] in 76 countries. The Fig. 4 shows an analysis of the nine countries among the 170 most active around the world in the OpenStack project.

Fig. 4.
figure 4

OpenStack Demographics.

The OpenStack community is extremely active and maintains several options for information about the project, such as:

The architecture is still modular [11], but as shown in Fig. 5, it has grown at each release by adding new components that provide services in IaaS layer. Nowadays OpenStack is organized in several projects, which have a size and very different levels of activity [12, 13]. Using this thought, we can look for collaborative OpenStack contributions. A basic way of looking at the collaborative contributions is to analyze the contributions aggregated to all Openstack projects.

Statistics are fundamental to transform data into information, this data is supplied from the Stackalytics [14]. Stackalytics process three major metrics for OpenStack contribution: Number of modified files, number of commits and number of modified lines. The related statistics are retrieved from the (git.openstack) through the following command:

figure a

In result we have the output:

figure b

As regards the evolution of the OpenStack development community in general, we present in this section statistical graphs that tell a story of growth throughout the release cycle of the OpenStack project.

Fig. 5.
figure 5

OpenStack evolution.

In Fig. 5 we can see the commits evolution from 2010 to 2016. It is noticed in the chart that the average is 10000 commits in the years between 2010–2013, increased to 30000 comitts in 2015, in 2015 to 2016 grew on average 7.1%, (formula (present) = (passed\()^*\) (1 + growth rate\()^n\). Where n = number of time periods).

This big jump is due to the participation of new companies in the OpenStack project [15]. If we look at the contribution of each company to the latest release of OpenStack, Mitaka, (by number of commits) and express it as a percentage of the total contribution will have the following graph.

Mitaka, the new OpenStack release, shows a continuous increase in activity compared to Liberty. Icehouse to Juno, there was an increase of 7.23 percent of the number of comitts. The Juno for Kilo, there is a greater leap in terms of commits (9.23%), but the biggest difference we can see the release version Austin to Diablo and Essex which reaches 32.7% of commits. This progressive increase is directly proportional to the incorporation of new companies to the OpenStack project. Red Hat is the first contributor, with about a quarter of all commits, closely followed by Rackspace, HP and Miratins, and at a certain distance of IBM. Others represents the others totaling more than 550 companies and more than 30,000 members in more than 170 countries collaborating with the OpenStack project [16, 17]. Looking at these numbers, it is clear that now the OpenStack project is more leveled, with less dominance by Rackspace, and a clear emerging participation of other companies that appear to be betting big on improving OpenStack codebase.

4 Conclusion

OpenStack is an open platform and scalable and intended for development of public and private clouds with global collaboration among independent developers and specialist companies, such as Huawei and IBM. Although of the newness is warm, the architecture was designed in 2010, in a partnership between Rackspace (American infrastructure provider) and NASA (US space agency), with an initial goal of making the companies consume cloud computing services with elements standardized hardware. In this comprehensive outline, we studied all life cycle of the project, for a better understanding of how OpenStack added value and sold its business model, helping us to see in a simple way the various elements that compose the OpenStack projects.