IP Library Granted Patent US 11,748,162
Granted Patent B2
US 11,748,162 · App. 16/735,195 · Granted Sep 5, 2023

Function execution environment selection for decomposed application

Inventors: Victor Fong (Medford, MA); Xuebin He (Westwood, MA); James R. King (Norwood, MA); Alex Robbins (Mansfield, MA); Kenneth Durazzo (San Jose, CA)
Assignee: EMC IP Holding Company LLC
G06F9/5027G06F9/45558G06F2009/45595
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,748,162
App. No.
16/735,195
Granted
Sep 5, 2023
Kind
B2
Abstract

Techniques for function execution environment selection for a decomposed application are provided. In one example, an apparatus comprises at least one processing platform configured to execute a portion of an application program in a first virtual computing element, wherein the application program comprises one or more portions of marked code, receive a request for execution of one of the one or more portions of marked code, decide whether to execute the portion of marked code identified in the request in the first virtual computing element or in a second virtual computing element, determine an execution environment from one or more execution environments specified in the marked code for the second virtual computing element to execute the marked code, when it is decided to execute the portion of the marked code in the second virtual computing element, and cause the portion of marked code identified in the request to be executed.

Claims (58)

1. An apparatus comprising:

at least one processing platform comprising one or more processing devices;

said at least one processing platform being configured to:

execute a portion of an application program in a first virtual computing element, wherein the application program is decomposed into functions and comprises one or more portions of marked code, the marked code comprising a given function to run in a separate execution environment from the rest of the application program and an environment selection code marker to specify a plurality of execution environments where to execute the given function of the marked code, wherein the plurality of execution environments specified in the marked code comprise a plurality of different pre-configured execution environments for code execution;

receive a request for execution of one of the one or more portions of marked code;

decide whether to execute the portion of marked code identified in the request in the first virtual computing element or in a second virtual computing element;

determine an execution environment from the plurality of execution environments specified in the environment selection code marker of the marked code for the second virtual computing element to execute the marked code, when it is decided to execute the portion of the marked code in the second virtual computing element; and

execute the portion of marked code identified in the request;

wherein the processing platform is further configured to determine an execution environment from the plurality of execution environments specified in the marked code by:

evaluating at least one selection criterion for the plurality of execution environments and selecting an execution environment based on the evaluation; and

wherein evaluating at least one selection criterion for the plurality of execution environments comprises:

considering a remaining budget from a given quota for a first one of the execution environments; and

selecting the first execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the first execution environment.

2. The apparatus of claim 1 , wherein the processing platform is further configured to evaluate at least one selection criterion for the plurality of execution environments by:

considering a remaining budget from the given quota for at least a second one of the execution environments when insufficient remaining budget exists for the first execution environment; and

selecting the second execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the second execution environment.

3. The apparatus of claim 1 , wherein the processing platform is further configured to evaluate at least one selection criterion for the plurality of execution environments by:

defaulting to the first virtual computing element to execute the portion of the marked code when the plurality of execution environments specified in the marked code fail to satisfy the at least one selection criterion.

4. The apparatus of claim 1 , wherein the plurality of execution environments specified in the marked code are evaluated based on a given order.

5. The apparatus of claim 1 , wherein the plurality of execution environments further comprise one or more execution environments specifically configured to accommodate one or more execution criteria.

6. The apparatus of claim 5 , wherein the one or more execution criteria comprise one or more of compute-optimized execution, memory-optimized execution, storage-optimized execution, accelerator-optimized execution, general-purpose execution, and isolated execution.

7. The apparatus of claim 1 , wherein the processing platform is further configured to cause the portion of marked code identified in the request to be executed by managing orchestration of the execution of the portion of the marked code within a selected one of the plurality of execution environments.

8. The apparatus of claim 1 , wherein the processing platform is further configured to access a service broker to obtain credentials for a selected one of the plurality of execution environments.

9. The apparatus of claim 1 , wherein each of the one or more portions of marked code are marked by a function wrapper or an annotation.

10. The apparatus of claim 1 , wherein the one or more portions of marked code comprise one or more application functions.

11. The apparatus of claim 1 , wherein the first virtual computing element is a first container and the second virtual computing element is a second container remote from the first container.

12. The apparatus of claim 1 , wherein the processing platform comprises a controller module, one or more interceptor modules, one or more remote handler modules, and a function registry module.

13. A method comprising:

executing a portion of an application program in a first virtual computing element, wherein the application program is decomposed into functions and comprises one or more portions of marked code, the marked code comprising a given function to run in a separate execution environment from the rest of the application program and an environment selection code marker to specify a plurality of execution environments where to execute the given function of the marked code, wherein the plurality of execution environments specified in the marked code comprise a plurality of different pre-configured execution environments for code execution;

receiving a request for execution of one of the one or more portions of marked code;

deciding whether to execute the portion of marked code identified in the request in the first virtual computing element or in a second virtual computing element;

determining an execution environment from the plurality of execution environments specified in the environment selection code marker of the marked code for the second virtual computing element to execute the marked code, when it is decided to execute the portion of the marked code in the second virtual computing element; and

executing the portion of marked code identified in the request;

wherein the step of determining an execution environment from the plurality of execution environments specified in the marked code further comprises:

evaluating at least one selection criterion for the plurality of execution environments and selecting an execution environment based on the evaluation;

wherein evaluating at least one selection criterion for the plurality of execution environments comprises:

considering a remaining budget from a given quota for a first one of the execution environments; and

selecting the first execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the first execution environment; and

wherein the steps are performed by at least one processing platform comprising one or more processing devices.

14. The method of claim 13 , wherein the step of evaluating at least one selection criterion for the plurality of execution environments further comprises:

considering a remaining budget from the given quota for at least a second one of the execution environments when insufficient remaining budget exists for the first execution environment;

selecting the second execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the second execution environment; and

defaulting to the first virtual computing element to execute the portion of the marked code when the one or more execution environments specified in the marked code fail to satisfy the at least one selection criterion.

15. An article of manufacture 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 device causes said at least one processing device to perform steps of:

executing a portion of an application program in a first virtual computing element, wherein the application program is decomposed into functions and comprises one or more portions of marked code, the marked code comprising a given function to run in a separate execution environment from the rest of the application program and an environment selection code marker to specify a plurality of execution environments where to execute the given function of the marked code, wherein the plurality of execution environments specified in the marked code comprise a plurality of different pre-configured execution environments for code execution;

receiving a request for execution of one of the one or more portions of marked code;

deciding whether to execute the portion of marked code identified in the request in the first virtual computing element or in a second virtual computing element;

determining an execution environment from the plurality of execution environments specified in the environment selection code marker of the marked code for the second virtual computing element to execute the marked code, when it is decided to execute the portion of the marked code in the second virtual computing element; and

executing the portion of marked code identified in the request;

wherein the step of determining an execution environment from the plurality of execution environments specified in the marked code further comprises:

evaluating at least one selection criterion for the plurality of execution environments and selecting an execution environment based on the evaluation; and

wherein evaluating at least one selection criterion for the plurality of execution environments comprises:

considering a remaining budget from a given quota for a first one of the execution environments; and

selecting the first execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the first execution environment.

16. The article of claim 15 , wherein the step of evaluating at least one selection criterion for the plurality of execution environments further comprises:

considering a remaining budget from the given quota for at least a second one of the execution environments when insufficient remaining budget exists for the first execution environment;

selecting the second execution environment as the execution environment for the second virtual computing element to execute the marked code when sufficient remaining budget exists for the second execution environment; and

defaulting to the first virtual computing element to execute the portion of the marked code when the one or more execution environments specified in the marked code fail to satisfy the at least one selection criterion.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 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
Reel/Frame 060438/0742 →
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 (052216/0758) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2020
From: FONG, VICTOR; HE, XUEBIN; KING, JAMES R.; ROBBINS, ALEX; DURAZZO, KENNETH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051595/0051 →
Cited By (1)
US 12,231,326