Deploying applications in a multi-cloud environment can be challenging. The cloud providers face the challenge of optimally utilizing the cloud resources to achieve a goal such as reducing the clouds' power consumption. The cloud users, who deploy applications in the cloud, face the challenge of satisfying the application requirements, such as the processing and memory requirements, and application user requirements, such as the throughput and response time constraint. There is a relationship between the challenges faced by the cloud providers and cloud users, which allows these challenges to be studied together. This work covers such a problem, which aims to find a deployment or allocate resources for an application in a multi-cloud environment while satisfying the above requirements of the application, application user and cloud provider. The proposed algorithm uses a combination of queueing theory, clustering, graph partitioning and bin packing strategies to solve the multi-cloud application deployment problem.