IP Library Granted Patent US 11,314,601
Granted Patent B1
US 11,314,601 · App. 15/791,763 · Granted Apr 26, 2022

Automated capture and recovery of applications in a function-as-a-service environment

Inventors: Assaf Natanzon (Tel Aviv, IL); Amit Lieberman (Raanana, IL)
Assignee: EMC IP Holding Company LLC
G06F11/1464G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,314,601
App. No.
15/791,763
Granted
Apr 26, 2022
Kind
B1
Abstract

An apparatus in one embodiment comprises at least one processing platform including a plurality of processing devices. The processing platform is configured to receive a request to execute an application in a function-as-a-service (“FaaS”) environment, to initiate execution of the application responsive to the request, and to invoke a plurality of application functions with each such application function interacting with one or more backend services in executing the application. The processing platform is further configured to automatically generate an application manifest characterizing relationships between the application functions and the backend services utilized in executing the application, to capture state of the application for a particular point in time based at least in part on the application manifest, and to perform operational recovery of the application for the particular point in time utilizing the captured state. The application manifest illustratively comprises a graph having a plurality of nodes corresponding to respective ones of the application functions and the backend services.

Claims (84)

1. An apparatus comprising:

at least one processing platform comprising a plurality of processing devices;

said at least one processing platform comprising a compute services platform accessible to a plurality of user devices over a network and being configured:

to receive a request to execute an application in a function-as-a-service environment of the compute services platform;

to initiate execution of the application in the function-as-a-service environment of the compute services platform responsive to the request;

to invoke a plurality of application functions of the function-as-a-service environment of the compute services platform with each such application function interacting with one or more backend services in executing the application;

to automatically generate an application manifest characterizing relationships between the application functions and the backend services utilized in executing the application;

to capture state of the application for a particular point in time based at least in part on the application manifest; and

to perform operational recovery of the application for the particular point in time utilizing the captured state;

wherein the application manifest comprises a graph having a plurality of nodes corresponding to respective ones of the application functions and the backend services;

wherein edges between respective pairs of the nodes each indicate one of: (i) an invocation of a particular one of the backend services by a particular one of the application functions, and (ii) an invocation of a particular one of the application functions by a particular one of the backend services;

wherein automatically generating the application manifest comprises:

determining one or more triggers for each of at least a subset of the application functions; and

based at least in part on one of the triggers for a given one of the application functions comprising a given one of the backend services, creating an edge between one node of the graph corresponding to the given backend service and another node of the graph corresponding to the given application function; and

wherein capturing state of the application for a particular point in time based at least in part on the application manifest comprises:

determining at least one set of connected nodes for the application in the graph;

generating a backup of the set of connected nodes; and

generating backups for respective ones of any of the backend services having corresponding nodes in the set of connected nodes.

2. The apparatus of claim 1 wherein the application comprises a serverless application.

3. The apparatus of claim 1 wherein the backend services comprise at least one of a database service, an object storage service and a message processing service.

4. The apparatus of claim 1 wherein invocation of the application functions occurs under conditions specified by one or more application function mappings.

5. The apparatus of claim 4 wherein the conditions specified by the application function mappings comprise respective events each relating to one or more of the backend services.

6. The apparatus of claim 1 wherein automatically generating the application manifest comprises automatically detecting the application functions and the backend services.

7. The apparatus of claim 6 wherein automatically generating the application manifest comprises automatically detecting the application functions by generating at least one list-functions command directed to a particular service provider and for each resulting application function executing at least one get-function-configuration command to determine its associated backend services.

8. The apparatus of claim 7 wherein a given instance of the get-function-configuration command provides access to function code and environmental variables for a corresponding one of the application functions.

9. The apparatus of claim 1 wherein the application manifest comprises:

a listing of the application functions of the application; and

a listing of backend services that are invoked by or invoke each of the application functions.

10. The apparatus of claim 1 wherein automatically generating the application manifest comprises determining function code and environmental variables for at least a subset of the application functions and responsive to a determination that the function code and the environmental variables for a given one of the application functions invokes a given one of the backend services, creating an edge between one node of the graph corresponding to the given application function and another node of the graph corresponding to the given backend service.

11. The apparatus of claim 1 wherein the graph comprises a directed graph in which directed edges between respective pairs of nodes indicate respective directions of invocation between the corresponding application functions and backend services.

12. The apparatus of claim 1 wherein performing operational recovery comprises:

determining one or more backups of the application;

generating one or more commands for a target portion of the compute services platform based at least in part on the one or more backups; and

executing the one or more commands against the target portion of the compute services platform to recover the application;

wherein the one or more commands are configured for:

updating application function mappings to mappings that were in use when the one or more backups were captured;

redeploying application function container images from the one or more backups; and

recovering applicable backend services using the one or more backups.

13. A method comprising:

receiving a request to execute an application in a function-as-a-service environment, the function-as-a-service environment being implemented in a compute services platform accessible to a plurality of user devices over a network;

initiating execution of the application in the function-as-a-service environment of the compute services platform responsive to the request;

invoking a plurality of application functions of the function-as-a-service environment of the compute services platform with each such application function interacting with one or more backend services in executing the application;

automatically generating an application manifest characterizing relationships between the application functions and the backend services utilized in executing the application;

capturing state of the application for a particular point in time based at least in part on the application manifest; and

performing operational recovery of the application for the particular point in time utilizing the captured state;

wherein the application manifest comprises a graph having a plurality of nodes corresponding to respective ones of the application functions and the backend services;

wherein edges between respective pairs of the nodes each indicate one of: (i) an invocation of a particular one of the backend services by a particular one of the application functions, and (ii) an invocation of a particular one of the application functions by a particular one of the backend services;

wherein automatically generating the application manifest comprises:

determining one or more triggers for each of at least a subset of the application functions; and

based at least in part on one of the triggers for a given one of the application functions comprising a given one of the backend services, creating an edge between one node of the graph corresponding to the given backend service and another node of the graph corresponding to the given application function; and

wherein capturing state of the application for a particular point in time based at least in part on the application manifest comprises:

determining at least one set of connected nodes for the application in the graph;

generating a backup of the set of connected nodes; and

generating backups for respective ones of any of the backend services having corresponding nodes in the set of connected nodes.

14. The method of claim 13 wherein the graph comprises a directed graph in which directed edges between respective pairs of nodes indicate respective directions of invocation between the corresponding application functions and backend services.

15. The method of claim 13 wherein the application manifest comprises:

a listing of the application functions of the application; and

a listing of backend services that are invoked by or invoke each of the application functions.

16. The method of claim 13 wherein automatically generating the application manifest comprises determining function code and environmental variables for at least a subset of the application functions and responsive to a determination that the function code and the environmental variables for a given one of the application functions invokes a given one of the backend services, creating an edge between one node of the graph corresponding to the given application function and another node of the graph corresponding to the given backend service.

17. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing platform, said at least one processing platform comprising a compute services platform accessible to a plurality of user devices over a network, causes said at least one processing platform:

to receive a request to execute an application in a function-as-a-service environment, the function-as-a-service environment being implemented in the compute services platform;

to initiate execution of the application in the function-as-a-service environment of the compute services platform responsive to the request;

to invoke a plurality of application functions of the function-as-a-service environment of the compute services platform with each such application function interacting with one or more backend services in executing the application;

to automatically generate an application manifest characterizing relationships between the application functions and the backend services utilized in executing the application;

to capture state of the application for a particular point in time based at least in part on the application manifest; and

to perform operational recovery of the application for the particular point in time utilizing the captured state;

wherein the application manifest comprises a graph having a plurality of nodes corresponding to respective ones of the application functions and the backend services;

wherein edges between respective pairs of the nodes each indicate one of: (i) an invocation of a particular one of the backend services by a particular one of the application functions, and (ii) an invocation of a particular one of the application functions by a particular one of the backend services;

wherein automatically generating the application manifest comprises:

determining one or more triggers for each of at least a subset of the application functions; and

based at least in part on one of the triggers for a given one of the application functions comprising a given one of the backend services, creating an edge between one node of the graph corresponding to the given backend service and another node of the graph corresponding to the given application function; and

wherein capturing state of the application for a particular point in time based at least in part on the application manifest comprises determining at least one set of connected nodes for the application in the graph, generating a backup of the set of connected nodes, and generating backups for respective ones of any of the backend services having corresponding nodes in the set of connected nodes.

18. The computer program product of claim 17 wherein performing operational recovery comprises:

determining one or more backups of the application;

generating one or more commands for a target portion of the compute services platform based at least in part on the one or more backups; and

executing the one or more commands against the target portion of the compute services platform to recover the application;

wherein the one or more commands are configured for:

updating application function mappings to mappings that were in use when the one or more backups were captured;

redeploying application function container images from the one or more backups; and

recovering applicable backend services using the one or more backups.

19. The computer program product of claim 17 wherein the graph comprises a directed graph in which directed edges between respective pairs of nodes indicate respective directions of invocation between the corresponding application functions and backend services.

20. The computer program product of claim 17 wherein the application manifest comprises:

a listing of the application functions of the application; and

a listing of backend services that are invoked by or invoke each of the application functions.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (044535/0109) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0414 →
RELEASE OF SECURITY INTEREST AT REEL 044535 FRAME 0001 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0475 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 044535/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Nov 29, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 044535/0109 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2017
From: NATANZON, ASSAF; LIEBERMAN, AMIT
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 043936/0951 →
Cited By (9)
US 12,294,505 US 12,348,527 US 12,355,619 US 12,363,126 US 12,399,751 US 12,511,199 US 12,517,907 US 12,547,390 US 12,657,037