Keywords

1 Introduction

Cloud computing is a ubiquitous service provisioning model providing different hardware and software resources over the network. It ensures on-demand resource provisioning and pay per use billing model [1], thus amalgamating principles of grid computing and utility computing. Essential characteristics of cloud computing additionally include elasticity, scalability of infrastructure, and multitenant environment where applications of multiple clients can be cohosted.

Cloud computing services are mainly categorized as infrastructure as a service (IaaS), provisioning hardware components like processor, memory, network and platform as a service (PaaS), provisioning server instances prebooted with operating system and installed application framework for application hosting and software as a service (SaaS) that provides ready-to-use network-based user-centric applications.

There is a difference in cloud deployment approach as well. Public clouds are set up and owned by cloud service provider (CSP), and resources are provided to different clients. Private clouds are solely controlled and used by a single client, whereas hybrid cloud allows integration of public cloud and private cloud services. Many small and medium enterprises (SME) can integrate old legacy applications with new cloud-based applications.

Comparison of cloud computing environments is a widely discussed topic. In paper [2], cloud computing is defined as fifth utility and its prospects are discussed. Papers [36] compare different components of open-source cloud computing environments, whereas [7] has done performance evaluation of private cloud based on Eucalyptus and CloudStack. Papers [8, 9] discuss framework and parameters to evaluate cloud environments. PaaS CSPs are studied in [10]. In paper [11], comparison of open-source clouds is made with respect to different services provided. But none of these studies have given insight into the suitability of cloud environments as per client’s requirements and available resources. Further, most of the earlier studies focus on IaaS. In our paper, we have incorporated the study of PaaS service providers as well.

Various factors such as availability of in-house infrastructure, legacy applications, budget, IT expertise, data and application sensitivity need to be considered by the clients while choosing appropriate cloud services, cloud deployment model, and cloud service provider.

This paper aims at studying different prevalent cloud computing environments and suggests suitability of a cloud environment as per client’s requirements and available resources. The paper discusses services provided under IaaS and PaaS service models by cloud computing environments in Sects. 2 and 3, respectively. It does a comprehensive study of different proprietary and open-source environments. Section 4 provides recommendations about which cloud environment should be chosen as per client’s requirements and available resources, giving justification based on the study done.

2 IaaS Cloud Computing Environment

IaaS provides hardware resources encompassing CPU, memory, network bandwidth, and storage. The resources are owned and maintained by cloud service provider (CSP) and rented out to the clients. The client gets the flexibility to choose an operating system, application framework, etc. By subscribing to IaaS, clients can invest in in-house human and financial resources in business development instead of infrastructure management. IaaS services can be categorized as below.

2.1 Computational Services

Computational services provision the resources required for program execution like CPU and memory. They are provisioned as logical units in many ways.

Server virtualization is the traditional way which abstracts underlying hardware by introducing hypervisor layer. It divides host hardware into logical units; each unit is called as virtual machine (VM). Each virtual machine can be independently booted irrespective of the underlying host operating system and acts as an independent machine. In reality, virtual machines share hardware of host machine but are isolated from one another by the hypervisor. Clients with monolithic applications can prefer virtualization-based instances. Some CSPs use proprietary hypervisors like VMware ESXi and Microsoft’s Hyper-V, and some use open-source hypervisor like Kernel Virtual Machine is used for Google Cloud Platform (GCP) [12]. Amazon Web Services (AWS) [13] supports XenServer with unmodified guest operating system as well as Xen with para virtualized images.

The recent practice of containerization-based approach is a lightweight alternative to VM. It uses host operating system kernel but logically divides user space into different execution environments called as containers. Each container contains OS image tailored to a particular application, so it is much lighter than VM. Almost all prevalent proprietary as well as open-source cloud environments support docker [14] runtime-based container service. Clients developing highly granulated microservices-based applications can opt for this.

Bare metal-based IaaS is another important way but provided by very few CSPs. Service providers like IBM provide bare metal servers which can be virtualized by the clients with the hypervisor of their choice. This gives flexibility to the client but at the same time puts more responsibility for IT administration on client’s shoulder.

An option available with few providers is of preemptive virtual machine. These VMs are offered at a very low cost but at the same time, when resource crunch is experienced and instances with stringent SLAs need resources, these VMs are preempted. So the user may lose his work. This can be used for nontransactional and noncritical applications.

Many CSPs give good support to migrate legacy applications on cloud. Thus, consumer can make his applications more scalable. Open-source frameworks like Eucalyptus [15] provide good API compatibility with AWS services, so hybrid cloud development is easy.

2.2 Network Services

Network resources include network bandwidth and network interface plus middleware components to deal with network traffic. Service providers facilitate virtual networking among VMs over physical networking. Network traffic isolation among virtual machines of different organizations is achieved by virtual private network (VPN) which creates a private network of virtual machines used by a client’s organization. VMs from one VPN can access each other but not virtual machines in another VPN. This ensures isolation of applications and data owned by different organizations in a multitenant environment. Clients with workflow-based applications will need VPN for secure interapplication communication.

Another important service provided by CSPs is content delivery network (CDN) that works on the principle of caching web content on network edge point near client. For the first time, the client request is forwarded to actual web server. The web server mentions in response whether the response is cacheable or not. The network edge node caches the response if it is cacheable. If the same request is sent again to the edge node, then the response is given from cache instead of the actual web server, thus reducing network traffic and improving response time. Web-based applications with static content will be benefited by CDN.

2.3 Storage Services

IaaS mainly provides two types of storage. One is block storage facility which stores data in raw format without considering structure of the data. Data is transferred considering data block as unit. With block storage, only block which contains the requested part of the file is transferred instead of the whole file. AWS’s elastic block storage, GCP’s persistent storage, or OpenStack’s cinder service are block type storages. Cold storage service is peculiar service based on block data storage used to archive data like images and videos which are not used frequently. They are low price storage but have more latency compared to normal storages.

Another storage type is object storage which stores data as of particular type like a file and database table. They are used to store massive unstructured data. AWS’s S3, GCP’s cloud storage, or OpenStack’s [16] swift are some of the examples of object storage. Some CSPs like Microsoft, IBM, and VMware [17] provide SAN-based block storage as well as NAS-based file system-based storage capabilities.

Table 1 shows a comparison of different IaaS cloud computing environments with respect to the services mentioned above. It is evident that GCP, AWS, Microsoft Azure provide a wide range of services. Whereas, in open-source alternatives, OpenStack provides comprehensive services.

Table 1 Comparison of IaaS cloud computing environments

3 PaaS Cloud Computing Environment

PaaS provides software frameworks preinstalled on hardware as an instance on which applications can be easily deployed. The CSP takes care of installation and configuration of application execution environment, and client developer can truly concentrate on application development. The hardware used for PaaS services can be owned by PaaS CSP like App Engine of Google or rented out from other IaaS providers as provided by Cloud Foundry on IBM [19] datacenters.

Most of the CSPs support different linux distributions and windows versions. A wide variety of programming languages and frameworks are also supported inclusive of Java, .net, PHP, Python, ruby, etc. In addition to web-based application development, many providers support mobile applications which leverage massiveness and scalability of cloud computing. Firebase framework provided by Google Cloud Platform [12] is one of the examples.

Database services by CSPs provide structured as well as unstructured database. Relational or structured databases like MySQL, PostgreSQL, and SQLServer are supported to handle transactional data. With the advent of big data, unstructured NoSQL databases like MongoDB, HBase, DynamoDB, and Cassandra are used to store images, videos, big data collected from various sources. In-memory databases like Redis are also widely supported to reduce the latency of I/O operations.

In the past one decade, demand of application development in areas of big data, Internet of Things (IoT) and machine learning (ML) is increasing. Keeping in mind future development in these domains, many CSPs provide platforms to develop and deploy related applications. PaaS providers provide special frameworks like cloud-based Hadoop cluster to facilitate map reduce-based parallel and distributed processing [22], as well as Spark integrated with Hadoop to process stream data.

Machine learning-based APIs for voice recognition, image classification, text translation, natural language processing for text analysis are being provided by many service providers to develop ML-based applications.

Integration of IoT and cloud computing is giving rise to the concept of IoT cloud [23]. Many CSP facilitate this by providing software development kits of different languages like embedded C, Java, .net, Arduino yum for developers to develop IoT-oriented applications. To ensure reliability and fault tolerance, message queuing protocols like AMQP or MQTT are supported.

Different proprietary as well as open-source platforms-based PaaS services are compared in Table 2. All PaaS providers support web application platforms and databases. Most of them support mobile application platforms as well except Cloud Foundry. Support for big data, ML, IoT is largely available with GCP, AWS, and Azure.

Table 2 Comparison of PaaS cloud computing environments

4 SaaS Cloud Computing Environment

Software as a service provides ready to use applications over the network, which are user-centric. It gives importance to convenient use, look and feel, user-based customization, etc. SaaS providers are responsible for application development, deployment, and publication. SaaS may use proprietary infrastructure and frameworks. Social networking giants like Facebook, Twitter, LinkedIn, banking industry, government offices have their own datacenters to support services. Small- and medium-size SaaS providers mainly leverage public IaaS and PaaS to ensure scalability, availability, and robustness without upfront investment in these technologies. Websites for online courses and travel bookings are hosted on public cloud service providers. The range of services provided under SaaS service model is huge. Most of the applications are web based. SaaS provider should take care of handling a sudden increase in application requests, platform upgrading, network-based security threats.

5 Key Findings—IaaS and PaaS Cloud Computing Environments

The comparative study presented in Tables 1 and 2 can guide a client to take a decision to choose service provider as per requirements. It will also suggest whether to move to public cloud or deploy a private/hybrid cloud using open-source technologies and to choose service provider as per requirements.

As a client of IaaS, following points can be noted with respect to proprietary CSPs. AWS, GCP, and Azure provide wide range of services provisioning computational, network, and storage resources. IBM provides bare metal servers as part of IaaS which gives client flexibility to choose hypervisor as well as other middleware components. This service can be used if client doesn’t have adequate infrastructure but has skilled-IT staff to set up cloud and need dedicated resources. VMware provides IaaS based on its proprietary hypervisor and can be recommended to deploy private or dedicated cloud. Being licensed, it is not cost-effective solution.

With respect to open-source IaaS service providers, OpenStack provides almost all IaaS services at par with the proprietary CSPs. It is highly flexible and gives full control to the client. At the same time, it demands highly skilled technical IT staff to configure and maintain the cloud. Eucalyptus is highly compatible with AWS. This can be preferred option if hybrid cloud with AWS is envisaged in future. Except for OpenStack, other open-source IaaS frameworks do not support cold storage and CDN services.

As a client of Platform as a Service, following points can be considered.

GCP and AWS go hand in hand as far as PaaS service offerings are concerned. Both provide a rich set of programming language and database support. Big data analysis, machine learning, and IoT-related application building frameworks are provided at par with each other. Microsoft Azure provides PaaS services supporting a majority of languages and databases. But its support for machine learning and IoT domain-related applications is limited. IBM provides PaaS service on its own infrastructure but based on third-party Cloud Foundry framework. Cloud Foundry and OpenShift online provide support for most of the languages and databases and thus can be considered promising PaaS frameworks to build PaaS cloud on third-party infrastructure. With respect to big data, machine learning, IoT domain application development, they can provide solution integrated with GCP or AWS services or using other third-party software.

Suitability of different cloud computing environments based on client’s system parameters, viz. infrastructure, budget, and technical expertise are as given in Table 3. Other requirements considered are legacy applications, sensitivity of data, and support for special applications like big data.

Table 3 Summary of suitability of cloud computing environments based on client’s requirements and resource availability

6 Conclusion and Future Plan

Cloud computing is a promising framework ensuring scalability, availability, and on-demand network-based resource provisioning. Prevalent proprietary, as well as open-source framework-based cloud service providers, offer various services under IaaS, PaaS, and SaaS service models. IaaS CSPs provide services offering computational, storage, and network resources, whereas PaaS CSPs provide services offering software development and deployment environments for web-based as well as mobile-based applications. PaaS also provide frameworks for new technologies in big data, machine learning, IoT domains.

A wide range of services provided by CSPs gives many options to the users to choose from. Considering existing infrastructure, legacy applications, available budget, and IT expertise, clients can make choice of appropriate CSP. Based on our comprehensive study, we have recommended and justified suitability of different cloud as per client’s system and application requirements. Open-source framework-based cloud environments are economical compared to proprietary and hence can be widely used for academic and research projects. They have a drawback of having limited support for special purpose applications like big data, machine learning, and IoT. But they can integrate with third-party tools. Among public proprietary cloud providers, Google Cloud Platform and Amazon Web Services provide highly rich, comprehensive range of services. They can be opted more at an enterprise level. Academic and research projects demanding scalability and with good funding support can opt proprietary public clouds. Proprietary CSP has come up with economical services like preemptive instances which can be used for noncritical application hosting.

Considering wide use of cloud-based services especially in big data, ML, and IoT domain, as a future plan, we intend to study in detail geographical distribution of data centers. This is to decide suitability from a performance point of view. We also plan to study technical strategies of resource provisioning, load balancing, auto-scaling to ensure scalability, availability, and reliability of cloud environments.