IP Library Granted Patent US 11,275,635
Granted Patent B2
US 11,275,635 · App. 17/017,586 · Granted Mar 15, 2022

Method and system for managing and executing serverless functions in a messaging service

Inventor: Eric Sven-Johan Swildens (Los Altos Hills, CA)
Assignee: DigitalOcean LLC
G06F9/546G06F9/543H04L51/18
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,275,635
App. No.
17/017,586
Granted
Mar 15, 2022
Kind
B2
Abstract

A serverless function execution system enables fast, efficient and flexible deployment and execution of serverless functions. User commands are received from external messaging systems that cause functions to be executed. A serverless function associated with the user command is determined and the serverless function is executed in an isolation container at a function computation server. A response from the execution of the serverless function is sent to the external messaging system.

Claims (43)

1. A serverless function execution system, comprising:

a function computation system, implemented at least partially in hardware, configured to receive user commands via an external messaging system;

an application router, implemented at least partially in hardware, configured to route user commands received from the external messaging system to associated serverless functions;

a set of isolation containers in the function computation system where serverless functions are executed; and

in response to a user command received from the external messaging system:

the application router determines a set of serverless functions associated with the user command, wherein the set of serverless functions are associated with user access rights that limit executing serverless functions in the set of serverless functions based on a messaging system identity of a user that entered the received user command, wherein serverless functions are created and managed using textual messaging commands via the external messaging system;

the application router determines a specific serverless function in the set of serverless functions associated with the user command;

the application router routes the specific serverless function to the function computation system;

the function computation system executes the specific serverless function in an isolation container and returns a response to the application router; and

the application router sends the response to the external messaging system.

2. The serverless function execution system as recited in claim 1 , wherein a textual command prefix is used to identify the set of serverless functions associated with the user command.

3. The serverless function execution system as recited in claim 1 , wherein the response sent to the external messaging system is sent asynchronously by the application router.

4. The serverless function execution system as recited in claim 1 , wherein code for the serverless functions are stored in a function storage system communicatively connected to the function computation system.

5. The serverless function execution system as recited in claim 1 , wherein the execution of the specific serverless function includes decrypting secret values and passing the decrypted secret values as parameters to the specific serverless function.

6. The serverless function execution system as recited in claim 1 , wherein a user command is executed to create one or more additional commands.

7. The serverless function execution system as recited in claim 1 , wherein serverless execution namespaces are used to separate sets of serverless functions in the function computation system.

8. A method, comprising:

receiving user commands via an external messaging system; and

in response to a user command received from the external messaging system:

determining a set of serverless functions associated with the user command;

determining a specific serverless function in the set of serverless functions associated with the user command, wherein the set of serverless functions are associated with user access rights that limit executing serverless functions in the set of serverless functions based on a messaging system identity of a user that entered the received user command, wherein serverless functions are created and managed using textual messaging commands via the external messaging system;

routing the specific serverless function to a function computation server;

executing the specific serverless function in an isolation container at the function computation server; and

sending a response from the execution of the specific serverless function to the external messaging system.

9. The method as recited in claim 8 , wherein a textual command prefix is used to identify the set of serverless functions associated with the user command.

10. The method as recited in claim 8 , wherein the response sent to the external messaging system is sent asynchronously.

11. The method as recited in claim 8 , wherein code for the serverless functions are stored in a function storage system.

12. The method as recited in claim 8 , wherein the execution of the specific serverless function includes decrypting secret values and passing the decrypted secret values as parameters to the specific serverless function.

13. The method as recited in claim 8 , wherein a user command is executed to create one or more additional commands.

14. The method as recited in claim 8 , wherein serverless execution namespaces are used to separate sets of serverless functions.

15. One or more non-transitory computer-readable storage media, storing one or more sequences of instructions, which when executed by one or more processors cause performance of:

receiving user commands via an external messaging system; and

in response to a user command received from the external messaging system:

determining a set of serverless functions associated with the user command;

determining a specific serverless function in the set of serverless functions associated with the user command, wherein the set of serverless functions are associated with user access rights that limit executing serverless functions in the set of serverless functions based on a messaging system identity of a user that entered the received user command, wherein serverless functions are created and managed using textual messaging commands via the external messaging system;

routing the specific serverless function to a function computation server;

executing the specific serverless function in an isolation container at the function computation server; and

sending a response from the execution of the specific serverless function to the external messaging system.

16. The one or more non-transitory computer-readable storage media as recited in claim 15 , wherein a textual command prefix is used to identify the set of serverless functions associated with the user command.

17. The one or more non-transitory computer-readable storage media as recited in claim 15 , wherein the response sent to the external messaging system is sent asynchronously.

18. The one or more non-transitory computer-readable storage media as recited in claim 15 , wherein code for the serverless functions are stored in a function storage system.

19. The one or more non-transitory computer-readable storage media as recited in claim 15 , wherein a user command is executed to create one or more additional commands.

20. The one or more non-transitory computer-readable storage media as recited in claim 15 , wherein serverless execution namespaces are used to separate sets of serverless functions.

Assignments (6)
RELEASE OF SECURITY INTEREST RECORDED AT REEL 059546, FRAME 0271. Recorded May 15, 2025
From: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: DIGITALOCEAN, LLC
Reel/Frame 071275/0529 →
PATENT SECURITY AGREEMENT Recorded May 5, 2025
From: DIGITALOCEAN, LLC
To: MORGAN STANLEY SENIOR FUNDING INC., AS COLLATERAL AGENT
Reel/Frame 071176/0874 →
COLLATERAL ASSIGNMENT OF PATENTS Recorded Mar 30, 2022
From: DIGITALOCEAN, LLC
To: KEYBANK NATIONAL ASSOCIATION
Reel/Frame 059546/0271 →
MERGER Recorded Dec 27, 2021
From: NIMBELLA CORP.
To: NARWHAL MERGER SUB II, LLC
Reel/Frame 058485/0348 →
MERGER Recorded Dec 27, 2021
From: NARWHAL MERGER SUB II, LLC
To: DIGITALOCEAN, LLC
Reel/Frame 058485/0517 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2020
From: SWILDENS, ERIC SVEN-JOHAN
To: NIMBELLA CORP.
Reel/Frame 053989/0879 →
Continuity (2)
Provisional Application 62898519 · Sep 10, 2019
Related Publication 20210073059A1 · Mar 11, 2021