Cloud computing is a cutting-edge technology with enormous commercial and enterprise potential. Apps and related data can be accessed from any location thanks to clouds. Companies can drastically lower the cost of their infrastructure by renting resources from the cloud for storage and other processing needs. They can also use pay-as-you-go application access available to the entire firm. Therefore, obtaining licenses for specific products is not necessary. However, allocating resources as efficiently as possible is one of the main challenges in cloud computing. Because the model is unique, resource allocation is done to lower its expenses. Meeting application and customer requirements and consumer needs presents additional issues in resource allocation. This study provides a detailed discussion of several resource allocation systems, security threats, and the difficulties they face. This work is anticipated to help researchers and cloud users overcome obstacles.