## 1 Introduction  
Cloud computing is a way of sharing computer system resources with more than one user using different virtualization technologies [1]. It has gained substantial popularity because of its pay-as-you-go business model. A pay-as-you-go business model is one in which you will have to pay the price for the number of resources or services you are using before you use it [2]. It helps lower service costs, and users can scale the resources as their business requirements change. The user needs to register with a cloud service provider (CSP) and request it over the internet to avail any service [3]. The cloud service provider has to satisfy all requests coming from different clients and manage the computing resources. For efficient resource management, the cloud service provider uses different types of scheduling techniques [4]. All the operations on cloud computing are enormously affected by the allocation and scheduling of resources. Therefore, many researchers have shown interest in task scheduling and resource allocation in the cloud [5, 6]. A task needs to be completed before the deadline to achieve the quality of service (QoS) and satisfy the service level agreement (SLA) [7, 8]. Load balancing plays an essential role in achieving better performance in cloud systems [9, 10]. The users' tasks must be distributed among all available computing nodes so that no computing node will be overloaded or under-loaded [11, 12]. If a node is overloaded, users' tasks may unnecessarily miss their deadline in the waiting queue. Similarly, if a node is under-loaded, there will be a wastage of computing resources putting the computing node in an idle state. Hence, proper use of the load-balancing algorithm will reduce response time and improve user-satisfaction [13, 14]. Different approaches are there for load balancing in cloud computing, such as using an efficient task scheduling algorithm, efficient resource allocation, resource migration such as VM or container, resource reservation [15], and service migration [16], etc. In addition to a typical cloud service model such as IaaS, PaaS, and SaaS, a new cloud service model Containers as a Service (CaaS) has really been introduced by different cloud service providers. A Container in cloud computing is an approach to operating system-level virtualization [17]. The application code, runtime, system tools, system libraries, and settings are all included in a container image, which is a lightweight, independent, executable bundle of software. It contains everything you need to execute the program. Containers are the fundamental building blocks of operating system-level virtualization [18]. They provide isolated virtual environments without the need of an intermediary monitoring medium such as a hypervisor. OS level virtualization can be implemented using OS Container or Application Container [19]. In this paper, we consider the OS container for our experiment. OS containers are best suited when you want to package different libraries, languages, databases, etc. Application container is best suited when you want to package the application as a component [20]. The architecture of a virtual machine and a container is illustrated in Figure 1.  
The Container as a Service (CaaS) model implements hybrid virtualization. In CaaS, tasks get executed in a container scheduled in VMs, and VMs are hosted in a physical machine. The architecture of a CaaS model shown in Figure 2 is a combination of system and OS-level virtualization. In a CaaS model, the system allows users to run, manage, scale, upload, and organize containers using OS-level virtualization. It is highly portable, i.e., once you create a container for an application or task, this container has everything to run that application. One of the main reason of using the CaaS model is security. Virtual machines are more isolated than containers. So, instead of running all containers in a server, if we group them and deploy in different virtual machines, they will be more isolated and secure.