A method for load balancing, executed by a computer apparatus, comprising: receiving a plurality of resource availability profiles, including a first resource availability profile that comprises a first plurality of parameters describing a first resource associated with a first server and a second resource availability profile that comprises a second plurality of parameters describing a second resource associated with a second server, the first and second servers being different servers; storing a plurality of policies including different policies that compare different parameters, where the different policies are applied for different connection requests based on different contexts comprising different requirements for the different connection requests; wherein the plurality of policies includes a policy comprising a comparison of one or more of the parameters in the first resource availability profile for the first resource and one or more parameters of the second resource availability profile for the second resource; assigning a weight for the first resource and a weight for the second resource based at least in part on the policy, one or more values for the one or more parameters from the first resource availability profile and one or more values for the one or more parameters from the second resource availability profile; determining that the policy of the plurality of the policies, but not other policies of the plurality of policies, corresponds to a particular context associated with a particular connection request, wherein the particular context associated with the particular connection request comprises a requirement for the particular connection request; and selecting the first server for the particular connection request based at least in part on the weights assigned to the first and second resources for the policy for the particular context. receiving a plurality of resource availability profiles, including a first resource availability profile that comprises a first plurality of parameters describing a first resource associated with a first server and a second resource availability profile that comprises a second plurality of parameters describing a second resource associated with a second server, the first and second servers being different servers; storing a plurality of policies including different policies that compare different parameters, where the different policies are applied for different connection requests based on different contexts comprising different requirements for the different connection requests; wherein the plurality of policies includes a policy comprising a comparison of one or more of the parameters in the first resource availability profile for the first resource and one or more parameters of the second resource availability profile for the second resource; assigning a weight for the first resource and a weight for the second resource based at least in part on the policy, one or more values for the one or more parameters from the first resource availability profile and one or more values for the one or more parameters from the second resource availability profile; determining that the policy of the plurality of the policies, but not other policies of the plurality of policies, corresponds to a particular context associated with a particular connection request, wherein the particular context associated with the particular connection request comprises a requirement for the particular connection request; and selecting the first server for the particular connection request based at least in part on the weights assigned to the first and second resources for the policy for the particular context.