# US 2019/0377604 A1 · Scalable function as a service platform

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0377604 A1
- Document ID: US20190377604A1
- Status: Published application
- Kind: A1
- Application number: 16/437,363
- Filed: 2019-06-11
- Published: 2019-12-12
- Earliest claimed: 2018-06-11
- Assignees: Nuweba Labs Ltd.
- Applicants: Nuweba Labs Ltd.
- Inventors: Yan CYBULSKI
- Web page: https://patentgrep.com/patent/US20190377604A1

## CPC

- G06F 9/505: {considering the load}
- G06F 9/5072: {Grid computing}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5044: {considering hardware capabilities}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A scalable platform for providing functions as a service (FaaS). Software container pods are defined. Each pod is a software container including code for a respective function that acts as a template for that function. When a function is called, a new instance of a corresponding pod is added if no pods are available. Instances of the same pod may share memory until one of the instances is modified. Calling of functions may be delayed depending on a type of event involving the function.

## Claims

### Claim 1

A scalable platform for providing functions as a service (FaaS), comprising:
at least one master node executed over a hardware layer;
a plurality of worker nodes communicatively connected to the at least one master node and independently executed over a hardware layer;
wherein each of the plurality of worker nodes includes at least one pod, wherein each pod is a software container including code for executing a respective serverless function; and
wherein the at least one pod of each of the plurality of operational nodes is scalable on demand by the at least one master node.

### Claim 2 (depends on 1)

The scalable platform of claim 1, further comprising:
at least one operational node communicatively connected to at least one master node and to the plurality of worker nodes, wherein the at least one operational node is independently executed over a hardware layer.

### Claim 3 (depends on 2)

The scalable platform of claim 2, wherein the at least operational node further comprises:
at least one poller configured to delay provisioning of polled events indicating requests for executing serverless functions from a cloud service, wherein the cloud service is any one of: a database and a stream service.

### Claim 4 (depends on 3)

The scalable platform of claim 3, wherein the at least one poller is further configured to:
perform a time loop;
periodically check for an external host for changes in a state for the cloud service; and
invoke the function on respective pod when a change in the state has occurred.

### Claim 5 (depends on 1)

The scalable platform of claim 1, wherein the least one master node further comprises:
a master load balancer configured to receive requests to serverless functions by the pods of the plurality of worker nodes and balance the load among the various pods;
a scheduler configured to schedule activation of the pods of the plurality of worker nodes based on demand;
a queue configured to queue requests to execute serverless functions; and
an autoscaler configured to receive events indicating pending requests and to scale the pods of the plurality of worker nodes according to a current demand.

### Claim 6 (depends on 5)

The scalable platform of claim 5, wherein the master load balancer is further configured to:
check if there is a pod on one of the worker nodes available for executing the serverless function, wherein a pod is available for executing the serverless function when there are no active connections; and
request the autoscaler to determine a number of pods required to execute the requested serverless function when no pods are available for executing the serverless function.

### Claim 7 (depends on 6)

The scalable platform of claim 6, wherein the scheduler is further configured to:
receive, from the autoscaler, a number of pods to be activated, wherein the number of pods to be activated is at least one;
instantiate at least one new pod configured to execute the requested serverless function, wherein each of the at least one new pod is a copy of an original pod of the pods of the plurality of worker nodes, wherein instantiation of the at least one new pod includes mapping the t least one new pod to a shared physical memory utilized by the original pod;
establish a new connection to the at least one new pod.

### Claim 8 (depends on 7)

The scalable platform of claim 7, wherein the master load balancer is further configured to:
receive an internet protocol (IP) of the newly activated pod; and
invoke the serverless function on the newly activated pod.

### Claim 9 (depends on 1)

The scalable platform of claim 1, wherein each of the plurality of worker nodes further includes a worker load balancer configured to balance requests among the at least one pod of the worker node.

### Claim 10 (depends on 9)

The scalable platform of claim 9, wherein the master load balancer is further configured to:
select one worker node of the plurality of worker nodes, wherein the selection is based on a load of each of the plurality of worker nodes; and
send a request to run a serverless function to the selected worker node over a port number associated with the serverless function, wherein the selected worker node activates a first pod of the at least one pod of the selected worker node based on the port number using its respective master load balancer.

### Claim 11 (depends on 9)

The scalable platform of claim 9, wherein the master load balancer is further configured to:
send a request to execute a serverless function to the plurality of worker nodes;
receive, from each of the plurality of worker nodes, a score indicating its ability to run the requested serverless function; and
select an operational node to run the requested serverless function based on the received scores.

### Claim 12 (depends on 11)

The scalable platform of claim 11, wherein the request to execute the serverless function sent to the plurality of worker nodes is received from external cloud computing services.

### Claim 13 (depends on 1)

The scalable platform of claim 1, wherein each of the plurality of worker nodes is executed over a different cloud computing platform.

### Claim 14 (depends on 2)

The scalable platform of claim 2, wherein the hardware layer includes:
a processing circuitry;
a memory containing instructions to be executed by the processing circuitry; and
a network interface.

### Claim 15

A method for migrating serverless functions from a first functions as a service (FaaS) platform to a second FaaS platform, comprising:
obtaining code and configurations of a plurality of serverless functions from the first FaaS platform;
updating an infrastructure of the second FaaS platform by deploying software images of the plurality of serverless functions, wherein the second FaaS platform is a scalable FaaS platform;
obtaining, from the first FaaS platform, a current load for each of the plurality of serverless functions; and
scaling the second FaaS platform based on the obtained current loads.

### Claim 16 (depends on 15)

The method of claim 15, wherein the code and configurations of the plurality of serverless functions are retrieved from software containers configured to execute the plurality of serverless functions in the first FaaS platform.

### Claim 17 (depends on 15)

The method of claim 15, wherein the second FaaS platform further includes:
at least one master node executed over a hardware layer;
a plurality of worker nodes communicatively connected to the at least one master node and independently executed over a hardware layer;
wherein each of the plurality of worker nodes includes at least one pod, wherein each pod is a software container including code for executing a respective serverless function; and
wherein pods at each of the plurality of operational nodes are scalable on demand by the at least one master node.

### Claim 18 (depends on 17)

The method of claim 17, wherein the second FaaS platform further includes:
at least one operational node communicatively connected to the at least one master node and to the plurality of worker nodes, wherein the at least one operational node is independently executed over a hardware layer.

### Claim 19

A non-transitory computer readable medium having stored thereon instructions for causing processing circuity circuitry to perform a process for migrating serverless functions from a first functions as a service (FaaS) platform to a second FaaS platform, the process comprising:
at least one master node executed over a hardware layer;
a plurality of worker nodes communicatively connected to the at least one master node and independently executed over a hardware layer;
wherein each of the plurality of worker nodes includes at least one pod, wherein each pod is a software container including code for executing a respective serverless function; and
wherein the at least one pod of each of the plurality of operational nodes is scalable on demand by the at least one master node.
