Interface Quality Patterns: Communicating and Improving the Quality of Microservices APIs

The design and evolution of Application Programming Interfaces (APIs) in microservices architectures is challenging. General design issues in integration and programming have been covered in great detail in many pattern languages since the beginnings of the patterns movement, and service-oriented infrastructure design patterns have also been published in the last decade. However, the interface representations (i.e., the content of message payloads) have received less attention. We presented five structural representation patterns in our previous work; in this paper we continue our coverage of the API design space and propose five interface quality patterns that deal with the observable aspects of quality-attribute-driven interface design for efficiency, security, and manageability: An API Key allows API providers to identify clients. Providers may offer rich data contracts in their responses, which not all consumers might need. A Wish List allows the client to request only the attributes in a response data set that it is interested in. If a client makes many API calls, the provider can employ a Rate Limit and bill clients according to a specified Rate Plan. A provider has to provide a high-quality service while at the same time having to use its available resources economically. The resulting compromise is expressed in a provider's Service Level Agreement.

[1]  Prabath Siriwardena,et al.  OAuth 2.0 , 2014 .

[2]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[3]  Olaf Zimmermann,et al.  Interface Representation Patterns: Crafting and Consuming Message-Based Remote APIs , 2017, EuroPLoP.

[4]  innoQ Deutschland,et al.  A Pattern Language for RESTful Conversations , 2017 .

[5]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[6]  Humberto Cervantes,et al.  Designing Software Architectures: A Practical Approach , 2016 .

[7]  Robert Hanmer,et al.  Patterns for Fault Tolerant Software , 2007 .

[8]  Olaf Zimmermann,et al.  Microservices tenets , 2017, Computer Science - Research and Development.

[9]  Olaf Zimmermann,et al.  An architectural decision modeling framework for service-oriented architecture design , 2009 .

[10]  Prabath Siriwardena,et al.  Advanced API Security: Securing APIs with OAuth 2.0, OpenID Connect, JWS, and JWE , 2014 .

[11]  Peter Reiher,et al.  A taxonomy of DDoS attack and DDoS defense mechanisms , 2004, CCRV.

[12]  Mario R. Barbacci,et al.  Quality Attribute Workshops , 2001 .

[13]  Michael Nygard,et al.  Release It!: Design and Deploy Production-Ready Software , 2017 .

[14]  Wolfgang Lehner,et al.  Cloud-Specific Services for Data Management , 2013 .

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

[16]  Subbu Allamaraju RESTful Web Services Cookbook , 2010 .

[17]  Olaf Zimmermann,et al.  Web services-oriented architecture in production in the finance industry , 2004, Informatik-Spektrum.

[18]  Frank Leymann,et al.  Cloud Computing Patterns , 2014, Springer Vienna.

[19]  Antonio Ruiz Cortés,et al.  An Analysis of RESTful APIs Offerings in the Industry , 2017, ICSOC.

[20]  Olaf Zimmermann,et al.  Architecturally Significant Requirements, Reference Architecture, and Metamodel for Knowledge Management in Information Technology Services , 2011, 2011 Ninth Working IEEE/IFIP Conference on Software Architecture.

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

[22]  Mario R. Barbacci,et al.  Quality Attribute Workshops, 2nd Edition , 2002 .

[23]  Stephen Farrell API Keys to the Kingdom , 2009, IEEE Internet Computing.

[24]  Peter Sommerlad,et al.  Security Patterns: Integrating Security and Systems Engineering , 2006 .

[25]  Olaf Zimmermann Architectural Refactoring: A Task-Centric View on Software Evolution , 2015, IEEE Software.