1. A computer-implemented method comprising: receiving, via one or more computing devices, a request from a user; assigning, via at least one of the one or more computing devices, in response to the request and based at least in part on allocation rules, the user to a software component selected from a plurality of software components that are interchangeably executable within a framework; executing, via at least one of the one or more computing devices, the software component; measuring, via at least one of the one or more computing devices, system performance during execution of the software component; recording, via at least one of the one or more computing devices, a result of user interaction with the software component; aggregating, via at least one of the one or more computing devices, measurement of the system performance for individual ones of the plurality of software components; aggregating, via at least one of the one or more computing devices, results of the user interaction for individual ones of the plurality of software components; and modifying, via at least one of the one or more computing devices, the allocation rules based at least in part on the aggregated measurement of the system performance and the aggregated results of the user interaction to increase an allocation of one of the software components over another one of the software components of the plurality of software components.