Functionals in the Clouds: An abstract architecture of serverless Cloud-Native Apps
This is a theoretical contribution that proposes a foundational approach for serverless cloud-native systems, potentially impacting software architecture and distributed computing.
The paper tackles the problem of designing an abstract architecture for Cloud Native Applications (CNApps) by modeling them as dynamically reconfigurable graphs of microservices and serverless functions, using functionals from higher-order type theory to enable runtime composition and reconfiguration.
Cloud Native Application CNApp (as a distributed system) is a collection of independent components (micro-services) interacting via communication protocols. This gives rise to present an abstract architecture of CNApp as dynamically re-configurable acyclic directed multi graph where vertices are microservices, and edges are the protocols. Generic mechanisms for such reconfigurations evidently correspond to higher-level functions (functionals). This implies also internal abstract architecture of microservice as a collection of event-triggered serverless functions (including functions implementing the protocols) that are composed into event-dependent data-flow graphs, and dynamically reconfigured at the runtime. Again, generic mechanisms for such compositions and reconfigurations correspond to functionals and higher order type theory like Coq https://coq.inria.fr/about-coq. Our contribution is strictly theoretical and relies on the abstract architecture of CNApp that is closely related to the calculus of functionals and relations. The proposed theoretical approach is an attempt to implement the original idea of programming at the function level postulated by John Backus 1978 \cite{Backus}; the idea that is still waiting to be implemented as a non-von Neumann programming language.