Article Preview
TopIntroduction
Due to its unique characteristics, Cloud computing became a trend technology and gained a huge attention. Out of these distinctive characteristics are cost-effectiveness, elasticity, resource pooling, measured services, and adaptability (Armbrust et al., 2010). The importance of cloud computing comes from the concept of utility computing, which allows the people to utilizing the computing resources in the same way of utilizing the utility services (e.g. electricity, water, gas, etc.) (Buyya, Yeo, Venugopal, Broberg, & Brandic, 2009). In cloud computing, the user can rent the computing resources instead of owning it and pay based on his/her consumption.
The idea Cloud computing comes from the abundance of computing resources in the datacenters, which are surplus. Such huge resources represents the resource pooling that can be rented to the others upon the user’s demands (Pandya & Bheda, 2014). Elevating cloud computing as a prominent technology is due to many enabler technologies such as Service Oriented Architecture (SOA) and virtualization (L. Wang et al., 2010). SOA allows the user to use the resources as a service, while virtualization allows cloud computing provider to offer the single resource to multiple users based on multi-tenancy concept (AlJahdali et al., 2014). Consequently, these computing resources can be offered to the public over the internet to be used on demand basis. Cloud computing can be offered in different service models based on the offered services such as infrastructure as a service (IaaS), Platform as a service (PaaS), Software as a service (SaaS). In IaaS, the hardware is virtualized and offered to the users as virtual resources. Rackspace, Amazon Web Services (AWS), Cisco Metapod famous examples of IaaS paradigm. Platform as a service (PaaS) offered the development tools to the professional people to design their systems. Microsoft Azure and Google Compute Engine (GCE) represent this model. Besides, Google apps, Google sheets, and Google Docs are examples of SaaS, wherein the software application will be offered to the end users without any customization. The main advantage of SaaS is to avoid the burden of software licensing, batch updates, and operating systems independency. Other recent service models have been invented recently as Security as a service (SECaaS), Business Process as a service (BPaaS), Containers-as-a-Service (CaaS), and so on. Thus, the concept of anything as a service (XaaS) was introduced to represent the possibility of offering any service as cloud-based (Rimal, Choi, & Lumb, 2009).
Despite the cost-effectiveness of cloud computing, the cost reduction is still one of the service providers’ worries. In service provider side, cost reduction can be achieved throughout an effective resources provisioning process (Joe, Yi, & Sohn, 2011). Resource provisioning is an essential feature in cloud computing whereby estimating the computing resources for different computation tasks based on the expected/real workload. Accordingly, resource allocation process determines the locations and the amount of resources needed for each user to minimize the cost under certain constraints. In cloud computing, many users may share resources with different needs and expectation. Each user expects to use the resources freely and with a certain level of quality. Besides, each virtual machine is characterized with variable size, interactivity, and rapidly changing effective period (Rimal et al., 2009). Such characteristics make the design of cloud computing platform challengeable. For that, these resources should be shared in a more effective manner (Patel, Ranabahu, & Sheth, 2009). However, the virtual machines hosted in cloud computing platforms overwhelmingly suffer from the workload fluctuation and/or sudden peak workloads, which may cause a degradation in quality of service (QoS) and quality of experience (QoE).