1. A method, performed by a resource management server, for resource allocation in a virtualization environment, the resource management server comprising a non-transient computer readable medium and a processor to execute computer executable instructions stored on the non-transient computer readable medium, so that when the instructions are executed, the resource management server performs the method of: determining an average service rate for each virtual machine (VM) pool running an application; predicting a workload of the application; determining a set of collaborative VMs to serve the application in order to satisfy a service level requirement, the set of collaborative VMs comprising a number of selected VMs from the VM pools running the application; distributing incoming application requests of the application among the VMs in the set of collaborative VMs.