Cloud computing is a technology emerging at a rapid speed. The data and various applications can be accessed from anywhere, at any time with the help of clouds. Cloud helps enterprises to cut down their infrastructure cost to a large extent by renting resources from cloud for computational purpose and storage. The applications can be used on a pay-as-you-use basis by the entire company. Hence, getting license for each product is not required. But, the major problem in cloud computing is the cost optimization of the allocated resources. Also, satisfying customer needs as well as application requirements is a great challenge while allocating resources.