From Serverful to Serverless: A Spectrum of Patterns for Hosting Application Components

The diversity of available cloud service models yields multiple hosting variants for application components. Moreover, the overall trend of reducing control over the infrastructure and scaling configuration makes it nontrivial to decide which hosting variant suits more a certain software component. In this work, we introduce a spectrum of component hosting patterns that covers various combinations of management responsibilities related to (i) the deployment stack required by a given component as well as (ii) required infrastructure resources and component’s scaling rules. We validate the presented patterns by identifying and showing at least three real world occurrences of each pattern following the well-known Rule of Three.

[1]  Harsh Chawla,et al.  Azure Kubernetes Service , 2019 .

[2]  Josef Spillner,et al.  A mixed-method empirical study of Function-as-a-Service software development in industrial practice , 2018, PeerJ Prepr..

[3]  Frank Leymann,et al.  Pattern-based Modelling, Integration, and Deployment of Microservice Architectures , 2020, 2020 IEEE 24th International Enterprise Distributed Object Computing Conference (EDOC).

[4]  Stefan Kolb,et al.  On the Portability of Applications in Platform as a Service , 2018 .

[5]  AWS Lambda , 2019, Machine Learning in the AWS Cloud.

[6]  Tudor Dumitras,et al.  Go Serverless: Securing Cloud via Serverless Design Patterns , 2018, HotCloud.

[7]  Bill Councill,et al.  Definition of a software component and its elements , 2001 .

[8]  Frank Leymann,et al.  A process for pattern identification, authoring, and application , 2014, EuroPLoP.

[9]  Andreas Fießer,et al.  How to write a pattern?: a rough guide for first-time pattern authors , 2011, EuroPLoP.

[10]  Marc Cohen,et al.  Google Compute Engine , 2014 .

[11]  F. Leymann,et al.  Pattern-based Deployment Models Revisited: Automated Pattern-driven Deployment Configuration , 2020 .

[12]  Max Jacobson,et al.  A Pattern Language: Towns, Buildings, Construction , 1981 .

[13]  Frank Leymann,et al.  Pattern Views: Concept and Tooling for Interconnected Pattern Languages , 2020, SummerSOC.

[14]  Gregor Hohpe,et al.  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions , 2003 .

[15]  Perry Cheng,et al.  Serverless Computing: Current Trends and Open Problems , 2017, Research Advances in Cloud Computing.

[16]  Frank Leymann,et al.  Cloud Computing Patterns: Fundamentals to Design, Build, and Manage Cloud Applications , 2014 .

[17]  David A. Patterson,et al.  Cloud Programming Simplified: A Berkeley View on Serverless Computing , 2019, ArXiv.

[18]  Oliver Kopp,et al.  Declarative vs . Imperative : Two Modeling Patterns for the Automated Deployment of Applications , 2017 .

[19]  Antonio Brogi,et al.  FaaSten Your Decisions: Classification Framework and Technology Review of Function-as-a-Service Platforms , 2020, J. Syst. Softw..

[20]  Claus Pahl,et al.  Pattern‐based multi‐cloud architecture migration , 2017, Softw. Pract. Exp..

[21]  Sahil Malik Azure Functions , 2019 .

[22]  Frank Leymann,et al.  Pattern Atlas , 2020, Next-Gen Digital Services.

[23]  Claus Pahl,et al.  Patterns for Serverless Functions (Function-as-a-Service): A Multivocal Literature Review , 2020, CLOSER.

[24]  Olaf Zimmermann,et al.  Architectural Principles for Cloud Software , 2018, ACM Trans. Internet Techn..

[25]  Xiaodong Liu,et al.  Cloud Migration Patterns: A Multi-cloud Service Architecture Perspective , 2015, ICSOC Workshops.

[26]  Kung-Kiu Lau,et al.  Software Component Models , 2006, IEEE Transactions on Software Engineering.

[27]  David G. Messerschmitt,et al.  Rethinking Components: From Hardware and Software to Systems , 2007, Proceedings of the IEEE.

[28]  Frank Leymann,et al.  Easing Pattern Application by Means of Solution Languages , 2017 .