1. A method of network resource allocation, comprising: collecting resource consumption measurements of a plurality of back-end server devices, wherein each back-end server device is allocated to at least one of a plurality of client devices to form a plurality of existing server-client combinations to process requests from the plurality of client devices; determining whether the resource consumption measurements of each existing server-client combination during a first time period meets a service level agreement requirement; calculating an existing server-client combination bitstring based on whether the resource consumption measurements of each existing server-client combinations meets the service level agreement requirement; creating possible server-client combinations comprising random unique combinations of each of the back-end server devices and the client devices excluding the existing server-client combinations; determining a possible server-client load for each of the possible server-client combinations based on the resource consumption measurements collected during the first time period; determining whether the possible server-client load of each for the possible server-client combinations meets the service level agreement requirement; calculating a possible server-client combination bitstring based on whether the possible server-client load of each possible server-client combination meets the service level agreement requirement; and reallocating each back-end server device to at least one client device based on the existing server-client combination bitstring and the possible server-client combination bitstring when the resource consumption measurement of each existing server-client combination does not meet a service level agreement requirement and when the possible server-client load for each of the possible server-client combinations meets the service level agreement requirement.