By offering computers as a utility service rather than a product, the cloud has created a new paradigm in which pooled resources, software, and information are made available to over the network, users. While the business software and data are kept on servers located far away, cloud computing companies share applications via the Internet that may be accessed through web browsers. By efficiently allocating resources and deploying apps on the appropriate VMs in accordance with the SLA aim, cloud providers are attempting to meet the agreed SLA. At the same time, the performance of the applications must be maximized. Given that cloud computing is currently all the rage, there are a number of ongoing problems, including those involving resource provisioning, load balancing, virtual machine migration, server consolidation, and energy management, among others.