Versions Compared

Key

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

...

  • Invoke an authN/authZ service, reusing the existing authN/authZ implementation in OpenWhisk
    • it may be possible to implement this inside the proxy itself. i.e. NGINX supports extensibility through lua thanks to Openresty.
  • Routing 
    • Including support for sequences
    Routing
  • Throttling 
    • Respect namespace limits
    • Respect Action level concurrency 
  • Caching the response, based on what the action returns. I.e. an action that validates an OAuth token could instruct the system to cache the response for that token until the token expiration time.
  • Support for Observability: Metrics, activation info, tracing, etc

...

  1. The request arrives from a client
  2. Authentication and Authorization
    1. The Action Router validates the Authorization header with OpenWhisk Auth Service
    2. The response of the Auth Service is cached 
  3. Routing
    1. Check namespace limits
    2. Forward the request to a container selected from a list of warmed actions that the Action ContainerRouter keeps
      1. Streaming the request to the action would be a nice; OpenWhisk doesn't have support for this, and such feature could remove the max payload limits
      2. Websockets could also be supported, another missing feature in OpenWhisk.
  4. Action Proxy sidecar
    1. Check action concurrency limit
    2. Buffer a few more requests, queueing them into an overflow buffer; this may be something useful when cold-start could take longer than just queuing a few more requests. Blackbox actions that need to download the docker image may benefit from this more. This idea is inspired from KNative Serving
    An Action Proxy can front the action in order to:
    1. check action concurrency limit
    2. an overflow buffer could be used to accept a few more requests and queue them for processing 
  5. Invoke the action and return the response
    1. Caching the action response could be another nice to have feature, which is not implemented in OpenWhisk. Caching would be configured from the action response.
  6. Collect activation info.
  7. Sequence support. If the action is part of a sequence, then the Router should have logic to invoke the next action in the sequence.
Flow for cold-start

When the Action Proxy is at capacity, it should return a 429 message back to the Action Router

TBD

Control Plane

Candidates:

...