1. A method for assigning a task in a cloud, wherein the cloud comprises at least a first resource and a second resource, the method comprising: receiving, at a first processor, a task request relating to a task; determining, at the first processor, service related data relating to the task based on the task request; receiving, at a second processor, resource data relating to the first and second resource; receiving, at a third processor, the service related data and the resource data; determining, at the third processor, a first correlation value between the task and the first resource, wherein the first correlation value is based on the service related data and the resource data; determining at the third processor, a second correlation value between the task and the second resource, wherein the second correlation value is based on the service related data and the resource data; assigning, by the third processor, the task to the first resource based on the first correlation value and the second correlation value.