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

skip to main content
10.1145/3489449.3489976acmotherconferencesArticle/Chapter ViewAbstractPublication PageseuroplopConference Proceedingsconference-collections
research-article
Open access

   Patterns on Deriving APIs and their Endpoints from Domain Models

Published: 23 January 2022 Publication History

Abstract

Domain-Driven Design (DDD) places the domain model at the center of all software development practices. Remote API design is crucial for developing distributed systems including, for example, microservice-based systems. While software practitioners realize APIs based on DDD models, clear guidance on how to derive APIs and API endpoints from domain model elements is still missing. Based on prior in-depth studies of practitioner sources on this and related topics, we have mined patterns to address these design problems. In particular, we present the domain model facade as api pattern which describes how to derive an API from a Domain Model. To explain further how derive API endpoints constituting the API from Domain Model elements, we present the aggregate roots as api endpoints, domain services as api endpoints, and domain processes as api endpoints patterns. In addition, we relate these patterns to the previously published patterns api description and api contract, both explaining how to describe APIs formally.

References

[1]
Hamdy Michael Ayas, Philipp Leitner, and Regina Hebig. 2021. Facing the Giant: a Grounded Theory Study of Decision-Making in Microservices Migrations. arxiv:cs.SE/2104.00390
[2]
Eric Bouwers, Joost Visser, Carola Lilienthal, and Arie van Deursen. 2010. A Cognitive Model for Software Architecture Complexity. In 2010 IEEE 18th International Conference on Program Comprehension. IEEE, Washington, DC, USA, 152–155. https://doi.org/10.1109/ICPC.2010.28
[3]
Antonio Brogi, Davide Neri, Jacopo Soldani, and Olaf Zimmermann. 2019. Design principles, architectural smells and refactorings for microservices: A multivocal review. CoRR abs/1906.01553(2019), 3–15. http://arxiv.org/abs/1906.01553
[4]
Kyle Brown, Cees De Groot, and Chris Hay. 2019. Clound Adoption Patterns: A set of Patterns for Developers and Architects Building for the cloud. https://kgb1001001.github.io/cloudadoptionpatterns/Cloud-Native-Architecture/.
[5]
Juliet Corbin and Anselm L. Strauss. 1990. Grounded theory research: Procedures, canons, and evaluative criteria. Qualitative Sociology 13(1990), 3–20. Issue 1.
[6]
Robert Daigneau. 2011. Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services. Addison-Wesley Professional, New York, NY, USA.
[7]
Ivan Dugalic. 2019. A pattern language for microservices. https://dzone.com/articles/bounded-contexts-with-axon.
[8]
Eric Evans. 2003. Domain-Driven Design: Tacking Complexity In the Heart of Software. Addison-Wesley, Reading, MA.
[9]
Roy T Fielding. 2000. Architectural styles and the design of network-based software architectures. Vol. 7. University of California, Irvine Irvine, Irvine, CA, USA.
[10]
Martin Fowler. 2002. Patterns of Enterprise Application Architecture. Addison-Wesley, USA.
[11]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., USA.
[12]
Vahid Garousi, Michael Felderer, Mika V. Mäntylä, and Austen Rainer. 2019. Benefitting from the Grey Literature in Software Engineering Research. arxiv:cs.SE/1911.12038
[13]
Barney G. Glaser and Anselm L. Strauss. 1967. The Discovery of Grounded Theory: Strategies for Qualitative Research. de Gruyter, New York, NY.
[14]
Carsten Hentrich and Uwe Zdun. 2012. Process-Driven SOA - Patterns for Aligning Business and IT. CRC Press, Boca Raton, Fla.
[15]
Carsten Hentrich, Uwe Zdun, Vlatka Hlupic, and Fefie Dotsika. 2015. An Approach for Pattern Mining through Grounded Theory Techniques and Its Applications to Process-Driven SOA Patterns. In Proceedings of the 18th European Conference on Pattern Languages of Program(EuroPLoP ’13). Association for Computing Machinery, New York, NY, USA, Article 9, 16 pages. https://doi.org/10.1145/2739011.2739020
[16]
Gregor Hohpe. 2006. Workshop Report: Conversation Patterns. In The Role of Business Processes in Service Oriented Architectures(Dagstuhl Seminar Proceedings), Frank Leymann, Wolfgang Reisig, Satish R. Thatte, and Wil M. P. van der Aalst (Eds.). Vol. 06291. Internationales Begegnungs- und Forschungszentrum fuer Informatik (IBFI), Schloss Dagstuhl, Germany.
[17]
Gregor Hohpe and Bobby Woolf. 2003. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley Longman Publishing Co., Inc., USA.
[18]
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 International Publishing, Cham, 189–208.
[19]
Craig Larman. 2004. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Prentice Hall PTR, USA.
[20]
Li Li and Wu Chou. 2010. Design patterns for restful communication web services. In 2010 IEEE International Conference on Web Services. IEEE, IEEE, Washington, DC, USA, 512–519.
[21]
Li Li, Wu Chou, Wei Zhou, and Min Luo. 2016. Design patterns and extensibility of REST API for networking applications. IEEE Transactions on Network and Service Management 13, 1(2016), 154–167.
[22]
Daniel Lübke, Olaf Zimmermann, Cesare Pautasso, Uwe Zdun, and Mirko Stocker. 2019. Interface Evolution Patterns: Balancing Compatibility and Extensibility across Service Life Cycles. In Proceedings of the 24th European Conference on Pattern Languages of Programs(EuroPLop ’19). Association for Computing Machinery, New York, NY, USA, Article 15, 24 pages. https://doi.org/10.1145/3361149.3361164
[23]
Cesare Pautasso and Erik Wilde. 2011. Push-Enabling RESTful Business Processes. In Service-Oriented Computing, Gerti Kappel, Zakaria Maamar, and Hamid R. Motahari-Nezhad (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 32–46.
[24]
Cesare Pautasso, Olaf Zimmermann, Mike Amundsen, James Lewis, and Nicolai M. Josuttis. 2017. Microservices in Practice, Part 2: Service Integration and Sustainability. IEEE Software 34, 2 (2017), 97–104. https://doi.org/10.1109/MS.2017.56
[25]
Austen Rainer and Ashley Williams. 2019. Using blog-like documents to investigate software practice: Benefits, challenges, and research directions. Journal of Software: Evolution and Process 31, 11 (2019).
[26]
Chris Richardson. 2017. A pattern language for microservices. http://microservices.io/patterns/index.html.
[27]
Dirk Riehle, Nikolay Harutyunyan, and Ann Barcomb. 2021. Pattern Discovery and Validation Using Scientific Research Methods. arxiv:cs.AI/2107.06065
[28]
Apitchaka Singjai, Georg Simhandl, and Uwe Zdun. 2021. On the Practitioners’ Understanding of Coupling Smells – A Grey Literature Based Grounded-Theory Study. Accepted for publication in Information and Software Technology 134 (2021), 106539.
[29]
Apitchaka Singjai, Uwe Zdun, and Olaf Zimmermann. 2021. Practitioner Views on the Interrelation of Microservice APIs and Domain-Driven Design: A Grey Literature Study Based on Grounded Theory. In 18th IEEE International Conference on Software Architecture (ICSA 2021). IEEE, IEEE, Washington, DC, USA.
[30]
T. Sousa, H. Ferreira, and F. Correia. 5555. A Survey on the Adoption of Patterns for Engineering Software for the Cloud. IEEE Transactions on Software Engineering -, 01 (jan 5555), 1–1. https://doi.org/10.1109/TSE.2021.3052177
[31]
Mirko Stocker, Olaf Zimmermann, Uwe Zdun, Daniel Lübke, and Cesare Pautasso. 2018. Interface Quality Patterns: Communicating and Improving the Quality of Microservices APIs. In Proceedings of the 23rd European Conference on Pattern Languages of Programs(EuroPLoP ’18). Association for Computing Machinery, New York, NY, USA, Article 10, 16 pages. https://doi.org/10.1145/3282308.3282319
[32]
Jeffrey Stylos and Brad Myers. 2007. Mapping the space of API design decisions. In IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007). IEEE, IEEE, Washington, DC, USA, 50–60.
[33]
Rasmus Svensson, Adell Tatrous, and Francis Palma. 2020. Defining Design Patterns for IoT APIs. In European Conference on Software Architecture. Springer, Springer International Publishing, Cham, 443–458.
[34]
Davide Taibi and Valentina Lenarduzzi. 2018. On the definition of microservice bad smells. IEEE software 35, 3 (2018), 56–62.
[35]
Vaughn Vernon. 2013. Implementing Domain-Driven Design. Addison-Wesley Professional, Boston, USA.
[36]
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.
[37]
Mark Wilkinson, Benjamin Vandervalk, and Luke McCarthy. 2011. The Semantic Automated Discovery and Integration (SADI) web service design-pattern, API and reference implementation. Nature Precedings 2(2011), 8–8.
[38]
Uwe Zdun, Mirko Stocker, Olaf Zimmermann, Cesare Pautasso, and Daniel Lübke. 2018. Guiding Architectural Decision Making on Quality Aspects in Microservice APIs. In Service-Oriented Computing, Claus Pahl, Maja Vukovic, Jianwei Yin, and Qi Yu (Eds.). Springer International Publishing, Cham, 73–89.
[39]
Wei Zhou, Li Li, Min Luo, and Wu Chou. 2014. REST API design patterns for SDN northbound API. In 2014 28th international conference on advanced information networking and applications workshops. IEEE, IEEE, Washington, DC, USA, 358–365.
[40]
Olaf Zimmermann. 2017. Microservices Tenets. Computer Science-Research and Development 32, 3-4 (July 2017), 301–310. https://doi.org/10.1007/s00450-016-0337-0
[41]
Olaf Zimmermann. 2020. Domain-Driven Service Design with Context Mapper and MDSL. https://ozimmer.ch/practices/2020/06/10/ICWEKeynoteAndDemo.html.
[42]
Olaf Zimmermann, Daniel Lübke, Uwe Zdun, Cesare Pautasso, and Mirko Stocker. 2020. Interface Responsibility Patterns: Processing Resources and Operation Responsibilities. In Proceedings of the European Conference on Pattern Languages of Programs 2020(EuroPLoP ’20). Association for Computing Machinery, New York, NY, USA, Article 9, 24 pages. https://doi.org/10.1145/3424771.3424822
[43]
Olaf Zimmermann and Mirko Stocker. 2020. DPR Tutorial 1: API Design in an Online Shop. https://github.com/socadk/design-practice-repository/blob/master/tutorials/DPR-Tutorial1.md.
[44]
Olaf Zimmermann and Mirko Stocker. 2021. Design Practice Reference Guides and Templates to Craft Quality Software in Style. https://leanpub.com/dpr.
[45]
Olaf Zimmermann, Mirko Stocker, Daniel Lübke, Cesare Pautasso, and Uwe Zdun. 2020. Introduction to Microservice API Patterns (MAP). Joint Post-proceedings of the First and Second International Conference on Microservices (Microservices 2017/2019) 78, 4 (2020), 1–17. https://doi.org/10.4230/OASIcs.Microservices.2017-2019.4
[46]
Olaf Zimmermann, Mirko Stocker, Daniel Lübke, Cesare Pautasso, and Uwe Zdun. 2021. Microservice API Patterns. https://microservice-api-patterns.org/.

Cited By

View all
  • (2024)Domain-Driven Design for Microservices: An Evidence-Based InvestigationIEEE Transactions on Software Engineering10.1109/TSE.2024.338583550:6(1425-1449)Online publication date: 10-Apr-2024
  • (2022)BPM2DDD: A Systematic Process for Identifying Domains from Business Processes ModelsSoftware10.3390/software10400181:4(417-449)Online publication date: 29-Sep-2022
  • (2022)API Description-Based Conformance Assessment of Architectural Design Decision2022 IEEE International Conference on Service-Oriented System Engineering (SOSE)10.1109/SOSE55356.2022.00013(59-68)Online publication date: Aug-2022
  • 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 '21: Proceedings of the 26th European Conference on Pattern Languages of Programs
July 2021
387 pages
ISBN:9781450389976
DOI:10.1145/3489449
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 ACM 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]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 January 2022

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Design Patterns
  2. Domain Driven Design
  3. Microservice API

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

EuroPLoP'21

Acceptance Rates

Overall Acceptance Rate 216 of 354 submissions, 61%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)909
  • Downloads (Last 6 weeks)73
Reflects downloads up to 26 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Domain-Driven Design for Microservices: An Evidence-Based InvestigationIEEE Transactions on Software Engineering10.1109/TSE.2024.338583550:6(1425-1449)Online publication date: 10-Apr-2024
  • (2022)BPM2DDD: A Systematic Process for Identifying Domains from Business Processes ModelsSoftware10.3390/software10400181:4(417-449)Online publication date: 29-Sep-2022
  • (2022)API Description-Based Conformance Assessment of Architectural Design Decision2022 IEEE International Conference on Service-Oriented System Engineering (SOSE)10.1109/SOSE55356.2022.00013(59-68)Online publication date: Aug-2022
  • (2022)Conformance Assessment of Architectural Design Decisions on the Mapping of Domain Model Elements to APIs and API Endpoints2022 IEEE 19th International Conference on Software Architecture Companion (ICSA-C)10.1109/ICSA-C54293.2022.00058(76-83)Online publication date: Mar-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

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media