## 2 Literature Review
The proposed mechanism was named Cocao (COmputing in COntAiners) which was used to group the jobs according to resource demands and was assigned to the predefined cloud provider's group buying deals. Each deal offered the pool of resources for the job belonging to that group. The authors modeled the initial group organization as a variable-sized vector bin packing problem and used an online multidimensional knapsack for dynamic group organization to fill the resource holes. [PERSON] et al. [20] addressed the issue of consolidating virtual machines, containers, and/or applications to have an energy- and performance-effective schema for heterogeneous cloud data centers. According to the authors, there is a trade-off involved between migrating containers and virtual machines. The experimental results demonstrated that container migration increases the total number of migrations when compared with VM migrations (due to the small size of containers). The VM migration is more performance-efficient, while container migration is energy-efficient. The proposed model evaluation showed that a large number of container migrations result in high energy utilization and a decline in performance when compared to VM migration. The study in [21] presented two types of ECSched scheduling strategies, i.e., ECSched-dp (based on the dot-product heuristic) and ECSched-ml (based on most loaded heuristic). Moreover, the authors compared ECSched with Google Kubernetes and Docker Swarm which acted as the baseline for comparison. The comparison results showed that ECSched provides more resource utilization and ECScheddp has the highest resource utilization. The resource utilization increased by 4.1% to 5.3% for ECSched-dp when compared with baselines. To reduce the service cost, [PERSON] et al. [22] introduced Stratus, which was used to pack the tasks on the machines using the estimated runtime for the incoming jobs. The JVuPredict [23] algorithm was used to predict the estimated runtime of the tasks. JVuPredict determined the candidate group of the incoming job based on the history (i.e., submitted by the same user, same job name, time of day, etc. ), and then the tentative runtime was evaluated. The Stratus model made the resource allocation of the machines which were either highly utilized (mostly full) or empty ones (i.e., can be released to save cost). The simulation results showed that cost can be decreased by 17 to 44%. However, in the experiment, it was assumed that there are no intertask dependencies and that the task co-location has no or minimal impact on task runtime, which is not true for the real-world cloud computing environment. A framework named MiCADO was proposed by [PERSON] et al. [24], which provided application-level dynamic cloud orchestration, thus resulting in predicting the application capacity demand behavior. The microservices orchestration layer was divided into four sublayers; refer to Figure 3. The cloud interface layer provided cloud access from the above layers. The microservices coordination layer monitored the current execution performance and helped in identifying the bottleneck or under-utilization of infrastructure. The microservices discovery and execution layer managed the microservice execution and kept track of services running, i.e., service name, IP address, and port number. The coordination interface API provided access to application developers for the convenient development of the dynamically scalable cloud-based application. The framework was presented as the first proof-of-concept and its applicability was checked using open-source tools such as Docker1, Consul2, etc. In 2019, the MiCADO by [PERSON] et al. [24] was implemented by [PERSON] et al. [25], which provided support for the automated scalability of cloud applications. The implementation for evaluation of MiCADO was based on the CloudSigma public cloud.