A pattern is defined as “a proven series of activities which are supposed to overcome a recurring problem in a certain context, particular objective, and specific initial condition” . Patterns have been a very useful tool for dictating design principles as well as driving abstract implementations for a specific domain, following key guidelines in order to address common issues in that domain. Typically details for a pattern include its design, its parameters, when and how it should be used, benefits and drawbacks etc. For the FaaS domain, an extended list of tailored patterns appears in . In general, a pattern may be driven either by research goals, the peculiarities of a specific domain or the challenges of a specific use case/application. Other example patterns may include parallelization primitives (e.g. from MPI concepts, Map-Reduce model etc.).
In the PHYSICS platform, the main function editing environment used is Node-RED. One of the abilities of the latter is to group a number of functions into subflows that can hide the internal implementation details and appear as regular Node-RED nodes with the parameterizable interfaces. Based on this feature, we have created an extended list of pattern functionalities, providing a parametric, generic implementation that can be dragged and dropped into a developer’s flow in order to speed up development time and reduce the learning curve of FaaS. Examples of such patterns include:
- Implementation of the Fork-Join parallelization primitive, including intra and inter-container parallelization abilities
- Different means of context management, including means to maintain context in warm function executions (reuse of existing containers) or to clean up context for functional or security purposes
- Intelligent request aggregation patterns for reducing back-end stress and costs in high frequency request rates 
- Edge ETL Data Collection
- Function-based load generators with support for function chaining
The provided PHYSICS patterns are gradually released in a specific collection included in the Node-RED flows repository, including test flows and documentation about their usage .
- A. Wahyudi, G. Kuk, and M. Janssen, “A process pattern model for tackling and improving big data quality,” Information Systems Frontiers, vol. 20, no. 3, pp. 457–469, 2018.
- P. Jamshidi, C. Pahl, and N. C. Mendonc¸a, “Pattern-based multi-cloud architecture migration,” Software: Practice and Experience, vol. 47, no. 9, pp. 1159–1184, 2017.
- “Microsoft cloud design patterns catalogue and documentation.” Available at: https: //docs.microsoft.com/en-us/azure/architecture/patterns/index-patterns
- D. Taibi, N. El Ioini, C. Pahl, and J. R. S. Niederkofler, “Patterns for serverless functions (function-as-a-service): A multivocal literature review,” 2020.
- G. Kousiouris, “A self-adaptive batch request aggregation pattern for improving resource management, response time and costs in microservice and serverless environments,” in 40th IEEE International Performance Computing and Communications Conference (IPCCC 2021), IEEE, 2021.
- PHYSICS pattern flows for Cloud/Edge and Openwhisk, available at: https://flows.nodered.org/collection/HXSkA2JJLcGA