Article Preview
TopIntroduction
Cloud computing models provide different shared resources, such as CPUs, memory, networks, storage, and applications. There are several main processes to manage these resources, such as scheduling and allocating, which handle the user requests that come in. One of the important requirements for these processes is that they be executed with a high level of Quality of Services (QoS), such as maximizing cloud resource usage and reaching users’ satisfaction. Several existing methods are not suitable for optimal utilization of resources because some resources are under-utilized, while others are over-utilized (Sonam Seth, 2017). The variation of workloads and its effect on performance is always a concern in a cloud environment. Load balancing plays the main role in reducing this concern and it is receiving increased attention from researchers. Consequently, an effective load balancing to distribute workload fairly across all machines/nodes will improve user satisfaction and achieve a high level of performance for the whole cloud system. In addition, accurate request prediction also greatly improves cloud systems’ performance (Yoon, Kamal, & Zhu, 2016).
In this context, weblogs represent a main source of data through performance optimization because they contain valuable information about the users who access the sites and request the services. The application of the knowledge obtained from analyzing the clouds’ real data logs represents an important factor that impacts the efficiency of resource utilization (Piraghaj, Calheiros, Chan, Dastjerdi, & Buyya, 2015). Therefore, there is a need for intelligent techniques for extracting and processing such information about users. Analyzing weblogs, for example, by using some machine learning (ML) techniques represents an important approach to extract useful patterns about users and their behavior. Clustering, classification, and prediction can play an important role and prevent systems from wasting operational costs, and they can optimize resource utilization for more system performance. There are some important metrics that can be measured, including CPU utilization per Virtual Machine (VM), memory usage, disk utilization, request time, number of jobs in the message queue, and size of the request queue in the load balancer.
For the virtualization aspect, virtual machines are widely adopted; this process is known as hardware virtualization. As presented in Abdullah, Iqbal, and Bukhari (2018) and Sharma, Chaufournier, Shenoy, and Tay (2016), this kind of virtualization is the most widely used for deploying and managing auto-scaling applications in cloud environments. The hypervisor shares or partitions physical resources between different VMs. Consequently, it facilitates the deployment of various applications with their instances in the same physical machine (or even among multiple hosts) with a good level of isolation. Hence, there is a need for a load balancer to direct traffic among them fairly. However, a new trend has emerged using OS-level virtualization technologies, such as containers (Sharma et al., 2016). The container, which is a lightweight virtualization (Ahmed, Seghir, Al-Osta, & Abdelouahed, 2019), is considered more portable and efficient, especially because there is no need for guest operating systems (Abdullah et al., 2018). Microservices architecture, which is inherently harmonized with the container approach, has advantages for resource utilization in cloud computing (Jamshidi, Pahl, Mendonça, Lewis, & Tilkov, 2018). However, this kind of approach unfortunately has different challenges, such as isolation and security issues (Sharma et al. 2016); it also might lead to losing clear boundaries and could evolve into service-meshes (Jamshidi et al., 2018). Therefore, the authors of the present study have considered the isolation and security concerns in public clouds, and they are currently opting for the most popular choice that uses VMs as virtualization technology.