an application on an “as needed” basis using short-lived functions. Benefits of FaaS: • Complete abstraction of servers away from the developer • Billing based on consumption and executions, not server instance sizes • Scaling services is simplified !2
• One “omniscient” function calls each function (via remote HTTP); manages the execution flow. • Similar to direct functions, except each function is unaware of the other functions. !14
Very flexible; user can manipulate the control flow how they like. (Separation of concerns) Cons: • Overhead of an extra function • Even more cold starts • Coordinator is a long running function (it starts first, and ends last). !16
retries, error handling, persistence). • Loosely coupled functions • Commonly used and well understood architecture. Pros • Web of implicit dependencies. • Difficult to version or upgrade functions. • Supports limited control flow constructs. (e.g. conditional and on-error constructs) Cons !21
a workflow + set of functions “consistently” • Loosely coupled functions • Handles communication complexity (latency, retries, failures, etc.) • Improved performance (better/anticipating scheduling of functions) Pros • More infrastructure complexity • Need to learn workflow-specific language or DSL Cons !27
functions or constructs • Dynamic tasks: use conditional branches. • (JavaScript) expressions in workflows for simple data selections and transformations • Tools for debugging and inspecting workflows Advanced Concepts !38
Upgrades (in theory at least…) • Loosely coupled functions, unaware that they are being used in a workflow • Messaging abstracted away: latency, retries, failures, queueing… • Can be reliable/fault-tolerant. • Engine predicts invocations to improve the performance (pre-boot functions). Cons: • Adds additional component = complexity • Workflow-specific language to learn… usually YAML (some sort of learning curve), Usually not a general purpose language • Hard to unit test and debug, depending on maturity of framework !40