Dependency handling in an on-demand network code execution system
First Claim
1. A system comprising:
- one or more non-transitory data stores configured to store code objects, individual code objects associated with an object identifier and including code executable on an on-demand code execution system; and
one or more processors in communication with the one or more non-transitory data stores and configured with computer-executable instructions to;
receive a request to generate a task on the on-demand code execution system, the request including a code object including task code executable to implement the task and an identifier of at least one additional code object required to execute the task code;
generate a dependency graph for the task, the dependency graph identifying the code object included within the request and the at least one additional code object corresponding to the identifier of the request;
group code objects identified in the dependency graph into one or more packages, individual packages of the one or more packages including at least one code object identified within the dependency graph, wherein the code objects are grouped into the one or more packages based at least partly on an expected time to provision an execution environment on the on-demand code execution system with the one or more packages, and wherein the expected time to provision the execution environment is based at least partly on an expected caching of individual packages within the one or more packages on the on-demand code execution system and an expected time to transfer uncached packages of the one or more packages between the one or more non-transitory data stores and the execution environment;
generate the one or more packages;
store the one or more package within the one or more non-transitory data stores;
receive a request to execute the task on the on-demand code execution system; and
execute the task on the on-demand code execution system at least partly by retrieving the one or more packages from the one or more non-transitory data stores and provisioning the execution environment of the on-demand code execution system with the one or more packages.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are described for managing dependencies among code in an on-demand code execution system in a manner that enables efficient execution of the code. A user may generate a task on the system by submitting code, which may reference additional code on the system. The system can determine a dependency graph for the submitted code, and generate packages for the task based at least partly on the dependency graph. On receiving a request to execute the task, the system can provision an execution environment with the packages, and execute the code of the task. The packages may be selected based on analysis of the dependency graph, such that execution of the task on the on-demand code execution system is expected to satisfy a desired execution metric, which may include a maximum time to begin executing code of a task subsequent to receiving a request to execute the task.
505 Citations
17 Claims
-
1. A system comprising:
-
one or more non-transitory data stores configured to store code objects, individual code objects associated with an object identifier and including code executable on an on-demand code execution system; and one or more processors in communication with the one or more non-transitory data stores and configured with computer-executable instructions to; receive a request to generate a task on the on-demand code execution system, the request including a code object including task code executable to implement the task and an identifier of at least one additional code object required to execute the task code; generate a dependency graph for the task, the dependency graph identifying the code object included within the request and the at least one additional code object corresponding to the identifier of the request; group code objects identified in the dependency graph into one or more packages, individual packages of the one or more packages including at least one code object identified within the dependency graph, wherein the code objects are grouped into the one or more packages based at least partly on an expected time to provision an execution environment on the on-demand code execution system with the one or more packages, and wherein the expected time to provision the execution environment is based at least partly on an expected caching of individual packages within the one or more packages on the on-demand code execution system and an expected time to transfer uncached packages of the one or more packages between the one or more non-transitory data stores and the execution environment; generate the one or more packages; store the one or more package within the one or more non-transitory data stores; receive a request to execute the task on the on-demand code execution system; and execute the task on the on-demand code execution system at least partly by retrieving the one or more packages from the one or more non-transitory data stores and provisioning the execution environment of the on-demand code execution system with the one or more packages. - View Dependent Claims (2, 3, 4)
-
-
5. A computer-implemented method comprising:
-
receiving a request to generate a task on an on-demand code execution system, the request including a code object including task code executable to implement the task and an identifier of at least one additional code object required to execute the task code; generating a dependency graph for the task, the dependency graph identifying the code object included within the request and the at least one additional code object corresponding to the identifier of the request; grouping code objects identified in the dependency graph into one or more packages, individual packages of the one or more packages including at least one code object identified within the dependency graph, wherein the code objects are grouped into the one or more packages based at least partly on an expected time to provision an execution environment on the on-demand code execution system with the one or more packages, and wherein the expected time to provision the execution environment is based at least partly on an expected caching of individual packages within the one or more packages on the on-demand code execution system and an expected time to transfer uncached packages of the one or more packages to the execution environment; generating the one or more packages; receiving a request to execute the task on the on-demand code execution system; and executing the task on the on-demand code execution system at least partly by provisioning the execution environment of the on-demand code execution system with the one or more packages. - View Dependent Claims (6, 7, 8, 9)
-
-
10. Non-transitory computer readable media including computer-executable instructions that, when executed by a processor of an on-demand code execution system, cause the processor to:
-
receive a request to generate a task on the on-demand code execution system, the request including a code object including task code executable to implement the task and an identifier of at least one additional code object required to execute the task code; generate a dependency graph for the task, the dependency graph identifying the code object included within the request and the at least one additional code object corresponding to the identifier of the request; group code objects identified in the dependency graph into one or more packages, individual packages of the one or more packages including at least one code object identified within the dependency graph, wherein the code objects are grouped into the one or more packages based at least partly on an expected time to provision an execution environment on the on-demand code execution system with the one or more packages, and wherein the expected time to provision the execution environment is based at least partly on an expected caching of individual packages within the one or more packages on the on-demand code execution system and an expected time to transfer uncached packages of the one or more packages to the execution environment; generate the one or more packages; receive a request to execute the task on the on-demand code execution system; and execute the task on the on-demand code execution system at least partly by provisioning the execution environment of the on-demand code execution system with the one or more packages. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
Specification