1. A method for providing distributed application processing on a network for an end user, wherein the network includes geographically distributed compute resources, the method comprising: receiving, at a first computer system and from an application provider, a request for execution of a first application, the first application configured to be used by the end user; identifying, by the first computer system, a first set of compute resources on one or more servers of the network that are geographically proximate to said end user; determining, by the first computer system, whether the first set of compute resources are available to execute the first application; if the first set of compute resources are not available to execute the first application, determining if the first set of compute resources can be made available by snapshotting a second application executing on the first set of compute resources; snapshotting the second application so as to free up a portion of the first set of compute resources that were associated with the second application; and if the first set of compute resources are available to execute the first application, executing at least a portion of said first application using the first set of compute resources.