Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Gliffy Diagram
nameOpenWhisk-ManagementControlData-plane
pagePin3

Management Plane

The management layer exposes an API that is primarily serving developers that manage actions and APIs. The wsk  CLI interacts with this layer.

OpenWhisk operators may interact with this layer to manage namespaces too. 

Control Plane

The control plane layer has 2

Management Plane

TBD

Control Plane

TBD

...

main responsibilities: cold-starting new actions, and removing idle actions (Garbage Collector). 

This layer could be implemented by reusing the JVM architecture. In a JVM architecture the memory is allocated and is then freed with the help of a GC component. Similarly, a FaaS system needs to allocate resources such as cpu, memory, disk space to each action, then, when an action becomes idle, the FaaS system needs to scale it down to zero, freeing the resources.

The control plane should:

  • use the Cluster Manager's API to start and stop actions;
  • inform the Data Plane when starting or removing an action;
  • provide a configurable GC which should avoid fragmentation where possible; the less fragmentation the more compact the pool of resources is.  
  • use a mark-and-sweep GC logic to remove containers, to allow enough time for the Data Plane to stop sending traffic to the actions marked for removal

The Control Plane should provide an API used by the Data Plane to cold-start actions, and it should also emit events each time a change in the resource allocation happens; each time GC removes idle containers, or each time a new action is created, the Control Plane should notify all Data Plane instances of such changes. 

Data Plane

The data plane layer invokes actions as fast as possible. When an action needs to be cold-started, the data plane delegates this to the Control Plane, awaiting for the action to become ready before invoking it. Once an action is warmed-up the data plane is notified, and if it was waiting for such event in order to invoke an activation, it should resume the execution. 

The Data Plane invokes warmed actions without going to the Control Plane. The only time Control Plane is used in an activation flow, is when a cold-start is required.

The Data Plane should stop sending traffic to actions that are marked for removal by the Control Plane. The only exception is when an action marked for removal receives an activation in the mean time, in which case the Data Plane informs the Control Plane, which  may choose to remove the "mark for removal" and keep the action running, or recycle the action with a new one.  

This layer should have support for sequences, and for ensuring the default FaaS execution model which sends only 1 request at a time to an action.   


CNCF Projects to integrate with

TBD


Previous discussions

Provide support for integration with Kubernetes. One approach could be to deploy and run the components on a Kubernetes provider as we do for Vagrant, Docker, Docker-Compose, and OpenStack.

...