Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3424771.3424822acmotherconferencesArticle/Chapter ViewAbstractPublication PageseuroplopConference Proceedingsconference-collections
research-article

Interface Responsibility Patterns: Processing Resources and Operation Responsibilities

Published: 17 December 2020 Publication History

Abstract

Remote Application Programming Interfaces (APIs), as for instance offered in microservices architectures, are used in almost any distributed system today and are thus enablers for many digitalization efforts. It is hard to design such APIs so that they are easy and effective to use; maintaining their runtime qualities while preserving backward compatibility is equally challenging. Finding well suited granularities in terms of the architectural capabilities of endpoints and the read-write semantics of their operations are particularly important design concerns. Existing pattern languages have dealt with local APIs in object-oriented programming, with remote objects, with queue-based messaging and with service-oriented computing platforms. However, patterns or equivalent guidances for the architectural design of API endpoints, operations and their request and response message structures are still missing. In this paper, we extend our microservice API pattern language (MAP) and introduce endpoint role and operation responsibility patterns, namely Processing Resource, Computation Function, State Creation Operation, Retrieval Operation, and State Transition Operation. Known uses and examples of the patterns are drawn from public Web APIs, as well as application development and system integration projects the authors have been involved in.

References

[1]
Subbu Allamaraju. 2010. RESTful Web Services Cookbook. O'Reilly.
[2]
Deepak Alur, Dan Malks, and John Crupi. 2013. Core J2EE Patterns: Best Practices and Design Strategies (2nd ed.). Prentice Hall.
[3]
Jesus Bellido, Rosa Alarcón, and Cesare Pautasso. 2013. Control-Flow Patterns for Decentralized RESTful Service Composition. ACM Transactions on the Web (TWEB) 8 (December 2013), 5:1-5:30. https://doi.org/10.1145/2535911
[4]
Walter Berli, Daniel Lübke, and Werner Möckli. 2014. Terravis - Large Scale Business Process Integration between Public and Private Partners. In Lecture Notes in Informatics (LNI), Proceedings INFORMATIK 2014, Erhard Plödereder, Lars Grunske, Eric Schneider, and Dominik Ull (Eds.), Vol. P-232. Gesellschaft für Informatik e.V., Gesellschaft für Informatik e.V., 1075--1090.
[5]
Michael Brandner, Michael Craes, Frank Oellermann, and Olaf Zimmermann. 2004. Web services-oriented architecture in production in the finance industry. Informatik-Spektrum 27, 2 (2004), 136--145. https://doi.org/10.1007/s00287-004-0380-2
[6]
Kyle Brown and Bobby Woolf. 2016. Implementation Patterns for Microservices Architectures. In Proceedings of the 23rd Conference on Pattern Languages of Programs (PLoP '16). The Hillside Group, USA, Article Article 7, 35 pages.
[7]
Frank Buschmann, Kevlin Henney, and Douglas Schmidt. 2007. Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing. Wiley.
[8]
Robert Daigneau. 2011. Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and REST ful Web Services. Addison-Wesley Professional. http://www.servicedesignpatterns.com/
[9]
Eric Evans. 2003. Domain-Driven Design: Tacking Complexity In the Heart of Software. Addison-Wesley.
[10]
Christoph Fehling, Frank Leymann, Ralph Retter, Walter Schupeck, and Peter Arbitter. 2014. Cloud Computing Patterns: Fundamentals to Design, Build, and Manage Cloud Applications. Springer.
[11]
Martin Fowler. 2002. Patterns of Enterprise Application Architecture. Addison-Wesley.
[12]
Alessio Gambi and Cesare Pautasso. 2013. RESTful Business Process Management in the Cloud. In 5th ICSE International Workshop on Principles of Engineering Service-Oriented Systems (PESOS 2013). San Francisco, CA, USA.
[13]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley.
[14]
Michael Gysel, Lukas Kölbener, Wolfgang Giersche, and Olaf Zimmermann. 2016. Service Cutter: A Systematic Approach to Service Decomposition. In European Conference on Service-Oriented and Cloud Computing. Springer, 185--200.
[15]
Robert Hanmer. 2007. Patterns for Fault Tolerant Software. Wiley.
[16]
Carsten Hentrich and Uwe Zdun. 2011. Process-Driven SOA: Patterns for Aligning Business and IT. Auerbach Publications.
[17]
Gregor Hohpe. 2007. Conversation Patterns: Interactions between Loosely Coupled Services. In Proceedings of the 12th European Conference on Pattern Languages of Programs (EuroPLoP). Irsee, Germany.
[18]
Gregor Hohpe. 2007. SOA Patterns: New Insights or Recycled Knowledge? Online article. https://www.enterpriseintegrationpatterns.com/docs/HohpeSOAPatterns.pdf
[19]
Gregor Hohpe and Bobby Woolf. 2003. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley.
[20]
Nicolai Josuttis. 2007. SOA in Practice: The Art of Distributed System Design. O'Reilly.
[21]
Klaus Julisch, Christophe Suter, Thomas Woitalla, and Olaf Zimmermann. 2011. Compliance by design-Bridging the chasm between auditors and IT architects. Computers & Security 30, 6 (2011), 410--426.
[22]
Stefan Kapferer and Olaf Zimmermann. 2020. Domain-driven Service Design - Context Modeling, Model Refactoring and Contract Generation. In Proc. of the 14th Advanced Summer School on Service-Oriented Computing (SummerSOC'20) (to appear). Springer CCIS.
[23]
Ralph Kimball and Margy Ross. 2002. The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (2nd ed.). John Wiley.
[24]
Dirk Krafzig, Karl Banke, and Dirk Slama. 2004. Enterprise SOA: Service-Oriented Architecture Best Practices (The Coad Series). Prentice Hall.
[25]
James Lewis and Martin Fowler. 2014. Microservices: a definition of this new architectural term. https://martinfowler.com/articles/microservices.html. https://martinfowler.com/articles/microservices.html
[26]
Frank Leymann and Dieter Roller. 2000. Production workflow - concepts and techniques. Prentice Hall.
[27]
Frank Leymann, Dieter Roller, and Marc-Thomas Schmidt. 2002. Web services and business process management. IBM Syst. J. 41, 2 (2002), 198--211. https://doi.org/10.1147/sj.412.0198
[28]
Daniel Lübke, Olaf Zimmermann, Mirko Stocker, Cesare Pautasso, and Uwe Zdun. 2019. Interface Evolution Patterns - Balancing Compatibility and Extensibility across Service Life Cycles. In Proc. of the 24th European Conference on Pattern Languages of Programs (EuroPLoP '19).
[29]
Daniel Lübke and Tammo van Lessen. 2016. Modeling Test Cases in BPMN for Behavior-Driven Development. IEEE Software 33, 5 (Sept.-Oct. 2016), 15--21.
[30]
Bertrand Meyer. 1997. Object-oriented Software Construction (2nd Ed.). Prentice-Hall.
[31]
Davide Neri, Jacopo Soldani, Olaf Zimmermann, and Antonio Brogi. 2020. Design principles, architectural smells and refactorings for micro services: a multivocal review. SICS Softw.-Intensive Cyber Phys. Syst. 35, 1 (2020), 3--15. https://doi.org/10.1007/s00450-019-00407-8
[32]
Sam Newman. 2015. Building Microservices: Designing Fine-Grained Systems. O'Reilly.
[33]
Guy Pardon and Cesare Pautasso. 2011. Towards Distributed Atomic Transactions over RESTful Services. Springer, 507--524. https://doi.org/10.1007/978-1-4419-8303-9_23
[34]
Guy Pardon, Cesare Pautasso, and Olaf Zimmermann. 2018. Consistent Disaster Recovery for Microservices: the BAC Theorem. IEEE Cloud Computing 5, 1 (12 2018), 49--59. https://doi.org/10.1109/MCC.2018.011791714
[35]
Cesare Pautasso, Ana Ivanchikj, and Silvia Schreier. 2016. A Pattern Language for RESTful Conversations. In Proceedings of the 21st European Conference on Pattern Languages of Programs (EuroPLoP). Irsee, Germany.
[36]
Cesare Pautasso and Olaf Zimmermann. 2018. The Web as a Software Connector: Integration Resting on Linked Resources. IEEE Software 35 (January/February 2018), 93--98. https://doi.org/10.1109/MS.2017.4541049
[37]
Cesare Pautasso, Olaf Zimmermann, Mike Amundsen, James Lewis, and Nicolai M. Josuttis. 2017. Micro services in Practice, Part 1: Reality Check and Service Design. IEEE Software 34, 1 (2017), 91--98. https://doi.org/10.1109/MS.2017.24
[38]
Chris Richardson. 2016. Microservice Architecture. http://microservices.io. (2016).
[39]
Chris Richardson. 2018. Microservices Patterns. Manning.
[40]
Mirko Stocker, Olaf Zimmermann, Daniel Lübke, Uwe Zdun, and Cesare Pautasso. 2018. Interface Quality Patterns - Communicating and Improving the Quality of Micro services APIs. In Proc. of the 23nd European Conference on Pattern Languages of Programs (EuroPLoP '18).
[41]
Wil M. P. van der Aalst. 2011. Process Mining: Discovery, Conformance and Enhancement of Business Processes. Springer.
[42]
Vaughn Vernon. 2013. Implementing Domain-Driven Design. Addison-Wesley Professional.
[43]
Markus Voelter, Michael Kircher, and Uwe Zdun. 2004. Remoting Patterns - Foundations of Enterprise, Internet, and Realtime Distributed Object Middleware. J. Wiley & Sons, Hoboken, NJ, USA.
[44]
Rebecca Wirfs-Brock and Alan McKean. 2002. Object Design: Roles, Responsibilities, and Collaborations. Pearson Education.
[45]
Olaf Zimmermann. 2009. An architectural decision modeling framework for service-oriented architecture design. Ph.D. Dissertation. University of Stuttgart, Germany. http://elib.uni-stuttgart.de/opus/volltexte/2010/5228/
[46]
Olaf Zimmermann. 2015. Architectural Refactoring: A Task-Centric View on Software Evolution. IEEE Software 32, 2 (Mar.-Apr. 2015), 26--29. https://doi.org/10.1109/MS.2015.37
[47]
Olaf Zimmermann. 2017. Microservices Tenets. Comput. Sci. 32, 3-4 (July 2017), 301--310. https://doi.org/10.1007/s00450-016-0337-0
[48]
Olaf Zimmermann, Vadim Doubrovski, Jonas Grundler, and Kerard Hogg. 2005. Service-oriented architecture and business process choreography in an order management scenario: rationale, concepts, lessons learned. (2005), 301--312.
[49]
Olaf Zimmermann, Jonas Grundler, Stefan Tai, and Frank Leymann. 2007. Architectural Decisions and Patterns for Transactional Workflows in SOA. In Service-Oriented Computing - ICSOC 2007, Fifth International Conference, Vienna, Austria, September 17-20, 2007, Proceedings (Lecture Notes in Computer Science), Bernd J. Krämer, Kwei-Jay Lin, and Priya Narasimhan (Eds.), Vol. 4749. Springer, 81--93. https://doi.org/10.1007/978-3-540-74974-5_7
[50]
Olaf Zimmermann, Daniel Pautasso, Cesare Lübke, Uwe Zdun, and Mirko Stocker. 2019. Data-Oriented Interface Responsibility Patterns: Types of Information Holder Resources. In Proc. of the European Conference on Pattern Languages of Programs (EuroPLoP '19).
[51]
Olaf Zimmermann, Mirko Stocker, Daniel Lübke, Cesare Pautasso, and Uwe Zdun. 2020. Introduction to Microservice API Patterns (MAP). In Joint Post-proceedings of the First and Second International Conference on Microservices (Microservices 2017/2019) (OpenAccess Series in Informatics (OASIcs)), Luís Cruz-Filipe, Saverio Giallorenzo, Fabrizio Montesi, Marco Peressotti, Florian Rademacher, and Sabine Sachweh (Eds.), Vol. 78. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 4:1-4:17. https://doi.org/10.4230/OASIcs.Microservices. 2017-2019.4
[52]
Olaf Zimmermann, Mirko Stocker, Daniel Lübke, and Uwe Zdun. 2017. Interface Representation Patterns: Crafting and Consuming Message-Based Remote APIs. In Proc. of the 22nd European Conference on Pattern Languages of Programs (EuroPLoP '17). ACM, Article 27, 36 pages. https://doi.org/10.1145/3147704.3147734

Cited By

View all
  • (2024)Continuous Integration and Delivery in Open Source Development and Pattern Publishing: Lessons Learned With Tool Setup and Pipeline EvolutionIEEE Software10.1109/MS.2023.332231241:1(9-18)Online publication date: 1-Jan-2024
  • (2024)How Do Microservice API Patterns Impact Understandability? A Controlled Experiment2024 IEEE 21st International Conference on Software Architecture (ICSA)10.1109/ICSA59870.2024.00023(158-169)Online publication date: 4-Jun-2024
  • (2024)XL: explainable lead generation with microservices and hypothetical answersComputing10.1007/s00607-024-01321-x106:11(3419-3445)Online publication date: 24-Jul-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
EuroPLoP '20: Proceedings of the European Conference on Pattern Languages of Programs 2020
July 2020
434 pages
ISBN:9781450377690
DOI:10.1145/3424771
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

In-Cooperation

  • Hillside Europe: Hillside Europe

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 December 2020

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

EuroPLoP '20

Acceptance Rates

EuroPLoP '20 Paper Acceptance Rate 37 of 58 submissions, 64%;
Overall Acceptance Rate 216 of 354 submissions, 61%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)34
  • Downloads (Last 6 weeks)8
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Continuous Integration and Delivery in Open Source Development and Pattern Publishing: Lessons Learned With Tool Setup and Pipeline EvolutionIEEE Software10.1109/MS.2023.332231241:1(9-18)Online publication date: 1-Jan-2024
  • (2024)How Do Microservice API Patterns Impact Understandability? A Controlled Experiment2024 IEEE 21st International Conference on Software Architecture (ICSA)10.1109/ICSA59870.2024.00023(158-169)Online publication date: 4-Jun-2024
  • (2024)XL: explainable lead generation with microservices and hypothetical answersComputing10.1007/s00607-024-01321-x106:11(3419-3445)Online publication date: 24-Jul-2024
  • (2023)API Refactoring to Patterns: Catalog, Template and Tools for Remote Interface EvolutionProceedings of the 28th European Conference on Pattern Languages of Programs10.1145/3628034.3628073(1-32)Online publication date: 5-Jul-2023
  • (2023)Catalog and detection techniques of microservice anti-patterns and bad smells: A tertiary studyJournal of Systems and Software10.1016/j.jss.2023.111829206(111829)Online publication date: Dec-2023
  • (2022)Survey on Tools and Techniques Detecting Microservice API Patterns2022 IEEE International Conference on Services Computing (SCC)10.1109/SCC55611.2022.00018(31-38)Online publication date: Jul-2022
  • (2022)Conformance assessment of Architectural Design Decisions on API endpoint designs derived from domain modelsJournal of Systems and Software10.1016/j.jss.2022.111433193:COnline publication date: 1-Nov-2022
  • (2022)Avoiding Excessive Data Exposure Through Microservice APIsSoftware Architecture10.1007/978-3-031-16697-6_1(3-18)Online publication date: 19-Sep-2022
  • (2021)From OpenAPI Fragments to API Pattern Primitives and Design SmellsProceedings of the 26th European Conference on Pattern Languages of Programs10.1145/3489449.3489998(1-35)Online publication date: 7-Jul-2021
  • (2021)   Patterns on Deriving APIs and their Endpoints from Domain ModelsProceedings of the 26th European Conference on Pattern Languages of Programs10.1145/3489449.3489976(1-15)Online publication date: 7-Jul-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media