These cloud computing environments give the impression of boundless computing
resources to cloud clients, allowing them to modify their resource consumption rate
according to demand. Cloud computing environments include two sorts of actors: cloud
providers and cloud users [1]. On the one hand, providers keep massive amounts of
computer resources in massive data centers and rent them out to customers on a per-use
basis. On the other hand, other users have apps with variable amounts of load and rent
resources from providers to run them. The connection between providers and consumers
follows the shape indicated in Figure 1.1 in the vast majority of cases. A user sends a
resource request to a provider first. When the provider receives the request, it looks for
resources to fulfill it and assigns them to the user who made the request, which are
generally virtual computers (VMs).The user then uses the assigned resources to execute
programs and pays for the resources used. Once the user has done using the resources,
they are returned to the provider. The fact that these people are usually from different
backgrounds and have different interests is a fascinating aspect of the cloud computing
ecosystem.
Most providers want to make as much money as possible with as little investment as
feasible. They may want to make the most of their computer resources for this reason,
such as hosting as many virtual machines as possible on a single system. To put it another
way, providers try to get the most out of their resources. Putting too many virtual machines
on a single computer, on the other hand, may cause them to interact, resulting in poor
and/or unpredictable performance that irritates users. Users, on the other hand, want their
duties done for the least amount of money possible, or to put it another way, they want to
maximize their cost effectiveness.