A computing device comprising: a memory comprising machine executable code; and a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to: store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store, wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store, wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time; and in response to determining that the second snapshot references shared snapshot data within the first object, modify the first expiry time of the first object to be the second expiry time of the second object. a memory comprising machine executable code; and a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to: store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store, wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store, wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time; and in response to determining that the second snapshot references shared snapshot data within the first object, modify the first expiry time of the first object to be the second expiry time of the second object. store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store, wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store, wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time; and in response to determining that the second snapshot references shared snapshot data within the first object, modify the first expiry time of the first object to be the second expiry time of the second object.