US 11,900,152 B1
Controlled automatic updates to disk image layers with compatibility verification
Marc Brooker, Seattle, WA (US); David Nasi, Seattle, WA (US); Trishika Pattabiraman, Seattle, WA (US); Holly Mesrobian, Seattle, WA (US); Mikhail Danilov, Sammamish, WA (US); Peter Barry, Limerick (IE); and Peter Martin McDonnell, Dublin (IE)
Assigned to Amazon Technologies, Inc., Seattle, WA (US)
Filed by Amazon Technologies, Inc., Seattle, WA (US)
Filed on Mar. 30, 2021, as Appl. No. 17/218,015.
Int. Cl. G06F 3/00 (2006.01); G06F 9/48 (2006.01); G06F 8/71 (2018.01); G06F 11/34 (2006.01); G06F 16/18 (2019.01); G06F 11/30 (2006.01); G06F 8/65 (2018.01)
CPC G06F 9/4843 (2013.01) [G06F 8/65 (2013.01); G06F 8/71 (2013.01); G06F 11/3034 (2013.01); G06F 11/3409 (2013.01); G06F 16/1873 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A serverless code execution system comprising:
one or more data stores including i) information defining a first version of a serverless function, wherein the information identifies a layered disk image supporting execution of the first version of the serverless function, and ii) the layered disk image, wherein the layered disk image defines a file system, the layered disk image comprising a set of layers, each layer including a portion of data of the file system, wherein a first layer of the set of layers includes executable code corresponding to the first version of the serverless function and a second layer of the set of layers includes data depended on by the executable code;
one or more first computing devices configured to respond to calls to invoke the serverless function by invoking the first version of the serverless function, wherein invoking the first version of the serverless function includes provisioning one or more first execution environments with access to the file system defined within the layered disk image and executing the executable code within the one or more first execution environments; and
one or more second computing devices implementing an update service configured to:
obtain a new layer corresponding to an updated version of the data within the second layer;
generate an updated disk image corresponding to a modification of the layered disk image to replace the second layer with the new layer;
generate a second version of the serverless function whose execution is supported by the updated disk image, wherein invoking the second version of the serverless function includes provisioning one or more second execution environments with access to a file system defined within the updated disk image and executing the executable code within the one or more second execution environments;
modify the one or more first computing devices to respond to the calls to invoke the serverless function by causing a first portion of the calls to invoke the first version of the serverless function and a second portion of the calls to invoke the second version of the serverless function;
monitor invocations of the second version of the serverless function to obtain performance data regarding the second version of the serverless function; and
modifying a relative proportion of the first and second portions based on the performance data, wherein modifying the relative proportion includes increasing the relative proportion when the performance data indicates a lack of errors.