Предметно-ориентированное проектирование в микросервисной архитектуре
https://doi.org/10.15514/ISPRAS-2024-36(6)-3
Аннотация
С увеличением сложности разработки программного обеспечения для решения современных бизнес-задач необходимы такие подходы, как предметно-ориентированное проектирование (Domain-Driven Design, DDD). DDD уже используется в различных программных проектах с разными архитектурными стилями. Хотя в некоторых исследованиях изучалось разложение бизнес-доменов или унаследованных монолитных систем на микросервисы, пока отсутствует конкретная информация относительно практической реализации DDD в этом архитектурном стиле. Для повышения ясности в отношении использования DDD в разработке систем на основе микросервисов в нашей статье систематизированы выводы о целях использования DDD, его моделях, связанных технологиях и методах. Нами был проведен систематический обзор литературы из 35 статей. Тематический анализ помог выявить 11 тем и пять тем более высокого порядка. Основываясь на проделанном анализе, мы пришли к выводу, что идентификация микросервисов становится основной мотивацией принятия разработчиками DDD, но при этом вовсе не является единственной причиной использования DDD, о которой сообщается в литературе. Наконец, наш анализ выявил преимущества и проблемы в использовании DDD в архитектуре микросервисов, которые будут учитываться при проведении работ в будущем.
Ключевые слова
Об авторах
Хосуэ САНГАБРИЭЛЬ-АЛАРКОНМексика
Инженер-программист, разработчик программного обеспечения Университете Веракруса (Мексика). Сфера научных интересов: архитектура программного обеспечения, проектирование программного обеспечения, инженерия требований, моделирование данных.
Хорхе Октавио ОЧАРАН-ЭРНАНДЕС
Мексика
Имеет степень PhD по программированию, доцент факультета статистики и информатики Университета Веракруса (Мексика). Сфера научных интересов: архитектура программного обеспечения, инженерия требований, программная инженерия, разработка прикладных интерфейсов.
Ксавьер ЛИМОН
Мексика
Имеет степень PhD по искусственному интеллекту, доцент факультета статистики и информатики Университета Веракруса (Мексика). Сфера научных интересов: интеллектуальный анализ данных, мультиагентные и распределенные системы, архитектура программного обеспечения.
М. Карен КОРТЕС-ВЕРДИН
Мексика
Имеет степень PhD по искусственному интеллекту, профессор факультета статистики и информатики Университета Веракруса (Мексика). Сфера научных интересов: программные продуктовые линии, архитектуры программного обеспечения, аспектно-ориентированное программирование, разработка программного обеспечения, ориентированного на решение конкретных задач, процессы программирования, качество программного обеспечения, моделирование программ.
Список литературы
1. J. Sangabriel-Alarcón, J. O. Ocharán-Hernández, K. Cortés-Verdín, and X. Limón, “Domain-Driven Design for Microservices Architecture Systems Development: A Systematic Mapping Study,” in 2023 11th International Conference in Software Engineering Research and Innovation (CONISOFT), 2023, pp. 25–34.
2. E. Evans, “Domain-driven design: tackling complexity in the heart of software,” p. 529, 2004.
3. E. Evans, “Domain-Driven Design Reference: Definitions and Pattern Summaries”, 2014.
4. V. Khononov and J. Lerman, “Learning domain-driven design: aligning software architecture and business strategy”, p. 312, 2021.
5. V. Vernon, “Implementing Domain-Driven Design”, 2013.
6. V. Velepucha and P. Flores, “Monoliths to microservices-Migration Problems and Challenges: A SMS,” Proceedings - 2021 2nd International Conference on Information Systems and Software Technologies, ICI2ST 2021, pp. 135–142, Mar. 2021, doi: 10.1109/ICI2ST51859.2021.00027.
7. G. Liu, B. Huang, Z. Liang, M. Qin, H. Zhou, and Z. Li, “Microservices: Architecture, container, and challenges,” Proceedings - Companion of the 2020 IEEE 20th International Conference on Software Quality, Reliability, and Security, QRS-C 2020, pp. 629–635, Dec. 2020, doi: 10.1109/QRS-C51114.2020.00107.
8. R. Mubashir, J. Ahmed, F. Khakwani, and T. Rana, Microservices Architecture: Challenges and Proposed Conceptual Design. 2019.
9. S. Salii, J. Ajdari, and X. Zenuni, “Migrating to a microservice architecture: benefits and challenges,” 2023.
10. S. Newman, “Building microservices: Designing fine-grained systems (second edition),” pp. 1–10, 2021.
11. F. Rademacher, J. Sorgalla, and S. Sachweh, “Challenges of domain-driven microservice design: A model-driven perspective,” IEEE Softw, vol. 35, no. 3, pp. 36–43, May 2018, doi: 10.1109/MS.2018.2141028.
12. M. Tello-Rodríguez, J. O. Ocharán-Hernández, J. C. Pérez-Arriaga, X. Limón, and Á. J. Sánchez-García, “A Design Guide for Usable Web APIs,” Programming and Computer Software, vol. 46, no. 8, pp. 584–593, 2020, doi: 10.1134/S0361768820080241.
13. B. Jin, S. Sahni, and A. Shevat, “Designing Web APIs,” 2018.
14. A. Singjai, U. Zdun, and O. Zimmermann, “Practitioner Views on the Interrelation of Microservice APIs and Domain-Driven Design: A Grey Literature Study Based on Grounded Theory,” in Proceedings - IEEE 18th International Conference on Software Architecture, ICSA 2021, Institute of Electrical and Electronics Engineers Inc., Mar. 2021, pp. 25–35. doi: 10.1109/ICSA51549.2021.00011.
15. R. A. Schmidt and M. Thiry, “Microservices identification strategies: A review focused on Model-Driven Engineering and Domain Driven Design approaches,” in 2020 15th Iberian Conference on Information Systems and Technologies (CISTI), IEEE, 2020. Accessed: Nov. 13, 2022. [Online]. Available: https://ieeexplore-ieee-org.ezproxy.uv.mx/document/9141150/.
16. A. Macias, E. Navarro, C. Cuesta, and U. Zdun, “Architecting Digital Twins Using a Domain-Driven Design-Based Approach,” International Conference on Software Architecture (ICSA), no. 62, pp. 183–209, 2023, doi: 10.13039/501100011033.
17. C. Praschl, S. Bauernfeind, C. Leitner, and G. A. Zwettler, “Domain-Driven Design as Model Contract in Full-Stack Development,” in International Conference on Electrical, Computer, Communications and Mechatronics Engineering, ICECCME 2023, Institute of Electrical and Electronics Engineers Inc., 2023. doi: 10.1109/ICECCME57830.2023.10252654.
18. F. Rademacher, S. Sachweh, and A. Zündorf, “Towards a UML profile for domain-driven design of microservice architectures,” Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), vol. 10729 LNCS, pp. 230–245, 2018, doi: 10.1007/978-3-319-74781-1_17/COVER.
19. B. A. Kitchenham, D. Budgen, and P. Brereton, “Evidence-Based Software Engineering and Systematic Reviews,” 2015.
20. H. Zhang, M. A. Babar, and P. Tell, “Identifying relevant studies in software engineering,” Inf Softw Technol, vol. 53, no. 6, pp. 625–637, Jun. 2011, doi: 10.1016/j.infsof.2010.12.010.
21. C. Wohlin, “Guidelines for snowballing in systematic literature studies and a replication in software engineering,” in Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering - EASE ’14, New York, New York, USA: ACM Press, 2014, pp. 1–10. doi: 10.1145/2601248.2601268.
22. J. Popay et al., “Guidance on the conduct of narrative synthesis in systematic Reviews. A Product from the ESRC Methods Programme. Version 1,” undefined, 2006, doi: 10.13140/2.1.1018.4643.
23. D. S. Cruzes and T. Dybá, “Recommended steps for thematic synthesis in software engineering,” in International Symposium on Empirical Software Engineering and Measurement, IEEE Computer Society, 2011, pp. 275–284. doi: 10.1109/esem.2011.36.
24. V. Clarke and V. Braun, “Thematic analysis: A practical guide,” London: SAGE, 2021, Accessed: Oct. 30, 2023. [Online]. Available: https://uk.sagepub.com/en-gb/eur/thematic-analysis/book248481#description.
25. J. Sangabriel-Alarcón, J. O. Ocharán-Hernández, X. Limón, and K. Cortés-Verdín, “Domain-Driven Design in Microservices-Based Systems Development: A Systematic Literature Review and Thematic Analysis [Dataset].” [Online]. Available: https://zenodo.org/records/13294975.
26. PS-01. G.-C. Pan, P. Liu, and J.-J. Wu, “A Cloud-Native Online Judge System,” in 2022 IEEE COMPSAC, 2022, doi: 10.1109/COMPSAC54236.2022.00204.
27. PS-02. N. Ivanov and A. Tasheva, “A Hot Decomposition Procedure: Operational Monolith System to Microservices,” in 2021 IEEE ICAI, 2021, doi: 10.1109/ICAI52893.2021.9639494.
28. PS-03. M. I. Joselyne, G. Bajpai, and F. Nzanywayingoma, “A Systematic Framework of Application Modernization to Microservice-based Architecture,” in 2021 IEEE ICEET, 2021, doi: 10.1109/ICEET53442.2021.9659783.
29. PS-04. A. Singjai and U. Zdun, “Conformance Assessment of Architectural Design Decisions on the Mapping of Domain Model Elements to APIs and API Endpoints,” in 2022 IEEE ICSA-C, 2022, doi: 10.1109/ICSA-C54293.2022.00058.
30. PS-05. F. Rademacher, S. Sachweh, and A. Zündorf, “Deriving Microservice Code from Underspecified Domain Models Using DevOps-Enabled Modeling Languages and Model Transformations,” in 2020 IEEE SEAA, 2020, doi: 10.1109/SEAA51224.2020.00047.
31. PS-06. A. Steffens, H. Lichter, and J. S. Döring, “Designing a Next-Generation Continuous Software Delivery System: Concepts and Architecture,” in 2018 ACM Conference on Software Engineering and Applications, 2018, doi: 10.1145/3194760.3194768.
32. PS-07. Y. Ding et al., “Enterprise Service Application Architecture Based on Domain Driven Model Design,” in 2020 IEEE ITCA, 2020, doi: 10.1109/ITCA52113.2020.00167.
33. PS-08. P. Ray and P. Pal, “Extending the SEMAT Kernel for the Practice of Designing and Implementing Microservice-Based Applications using Domain Driven Design,” in 2020 IEEE CSEET, 2020, doi: 10.1109/CSEET49119.2020.9206200.
34. PS-09. A. Krause et al., “Microservice Decomposition via Static and Dynamic Analysis of the Monolith,” in 2020 IEEE ICSA-C, 2020, doi: 10.1109/ICSA-C50368.2020.00011.
35. PS-10. C.-Y. Li, S.-P. Tseng, and T.-W. Lu, “Microservice Migration Using Strangler Fig Pattern: A Case Study on the Green Button System,” in 2020 IEEE ICS, 2020, doi: 10.1109/ICS51289.2020.00107.
36. PS-11. A. Rahmatulloh et al., “Microservices-Based IoT Monitoring Application with a Domain-Driven Design Approach,” in 2021 IEEE ICADEIS, 2021, doi: 10.1109/ICADEIS52521.2021.9701966.
37. PS-12. M. I. Josélyne et al., “Partitioning Microservices: A Domain Engineering Approach,” in 2018 ACM Conference on Software Engineering and Applications, 2018, doi: 10.1145/3195528.3195535.
38. PS-13. M. Pham and D. B. Hoang, “SDN Applications - The Intent-Based Northbound Interface Realization for Extended Applications,” in 2016 IEEE NetSoft, 2016, doi: 10.1109/NETSOFT.2016.7502469.
39. PS-14. E. Cabrera et al., “Towards a Methodology for Creating Internet of Things (IoT) Applications Based on Microservices,” in 2020 IEEE SCC, 2020, doi: 10.1109/SCC49832.2020.00072.
40. PS-15. R. Petrasch, “Model-Based Engineering for Microservice Architectures Using Enterprise Integration Patterns for Inter-Service Communication,” in 2017 IEEE JCSSE, 2017, doi: 10.1109/JCSSE.2017.8025912.
41. PS-16. J. Dobaj et al., “A Microservice Architecture for the Industrial Internet-Of-Things,” in 2018 ACM Conference on Software Engineering and Applications, 2018, doi: 10.1145/3282308.3282320.
42. PS-17. S. Braun, A. Bieniusa, and F. Elberzhager, “Advanced Domain-Driven Design for Consistency in Distributed Data-Intensive Systems,” in 2021 ACM Conference on Software Engineering and Applications, 2021, doi: 10.1145/3447865.3457969.
43. PS-18. M. Khemaja, “Domain Driven Design and Provision of Micro-Services to Build Emerging Learning Systems,” in 2016 ACM Conference on Software Engineering and Applications, 2016, doi: 10.1145/3012430.3012643.
44. PS-19. Z. Li, “Using Public and Free Platform-as-a-Service (PaaS) Based Lightweight Projects for Software Architecture Education,” in 2020 ACM Conference on Software Engineering and Applications, 2020, doi: 10.1145/3377814.3381704.
45. PS-20. P. Oukes et al., “Domain-Driven Design Applied to Land Administration System Development: Lessons from the Netherlands,” in Land Use Policy, vol. 105, 2021, doi: 10.1016/j.landusepol.2021.105379.
46. PS-21. C. E. da Silva, Y. de Lima Justino, and E. Adachi, “SPReaD: Service-Oriented Process for Reengineering and DevOps,” in Software: Practice and Experience, 2022, doi: 10.1007/s11761-021-00329-x.
47. PS-22. C.-Y. Fan and S.-P. Ma, “Migrating Monolithic Mobile Application to Microservice Architecture: An Experiment Report,” in 2017 IEEE AIMS, 2017, doi: 10.1109/AIMS.2017.23.
48. PS-23. A. Krylovskiy, M. Jahn, and E. Patti, “Designing a Smart City Internet of Things Platform with Microservice Architecture,” in 2015 IEEE FiCloud, 2015, doi: 10.1109/FiCloud.2015.55.
49. PS-24. K. Zhang et al., “Design of Domain-Driven Microservices-Based Software Talent Evaluation and Recommendation System,” in 2022 IEEE ICEKIM, 2022, doi: 10.1109/ICEKIM55072.2022.00076.
50. PS-25. Q. Li, W. Sun, and R. Ma, “Sharing Platform of Digital Specimen of Wood Canker Based on WebGIS in Xinjiang Province: Architecture, Design and Implementation,” in 2022 IEEE CIPAE, 2022, doi: 10.1109/CIPAE55637.2022.00029.
51. PS-26. T. Raffin et al., “A Reference Architecture for the Operationalization of Machine Learning Models in Manufacturing,” in Procedia CIRP, vol. 2022, 2022, doi: 10.1016/j.procir.2022.10.062.
52. PS-27. C. Batista et al., “Towards a Multi-Tenant Microservice Architecture: An Industrial Experience,” in 2022 IEEE COMPSAC, 2022, doi: 10.1109/COMPSAC54236.2022.00100.
53. PS-28. C. Praschl et al., “Domain-Driven Design as Model Contract in Full-Stack Development,” in 2023 IEEE ICECCME, 2023, doi: 10.1109/ICECCME57830.2023.10252654.
54. PS-29. N. Legowo et al., “Designing Service Oriented Architecture Model in Sehatin Application with a Domain-Driven Design Approach,” in 2023 IEEE ICIMTech, 2023, doi: 10.1109/ICIMTech59029.2023.10278057.
55. PS-30. A. Macías et al., “Architecting Digital Twins Using a Domain-Driven Design-Based Approach,” in 2023, doi: 10.13039/501100011033.
56. PS-31. I. V. P. and V. P. H., “An Approach to Clean Architecture for Microservices Using Python,” in 2023 IEEE CSITSS, 2023, doi: 10.1109/CSITSS60515.2023.10334229.
57. PS-32. M. Saidi, A. Tissaoui, and S. Faiz, “A DDD Approach Towards Automatic Migration To Microservices,” in 2023 IEEE IC_ASET, 2023, doi: 10.1109/IC_ASET58101.2023.10150522.
58. PS-33. M. Camilli et al., “Actor-Driven Decomposition of Microservices through Multi-Level Scalability Assessment,” in 2023, doi: 10.1145/3583563.
59. PS-34. O. Özkan, Ö. Babur, and M. van den Brand, “Refactoring with Domain-Driven Design in an Industrial Context: An Action Research Report,” in Software: Practice and Experience, 2023, doi: 10.1007/s10664-023-10310-1.
60. PS-35. E. T. Nordli et al., “Migrating Monoliths to Cloud-Native Microservices for Customizable SaaS,” in Information and Software Technology, vol. 2023, 2023, doi: 10.1016/j.infsof.2023.107230.
Рецензия
Для цитирования:
САНГАБРИЭЛЬ-АЛАРКОН Х., ОЧАРАН-ЭРНАНДЕС Х., ЛИМОН К., КОРТЕС-ВЕРДИН М. Предметно-ориентированное проектирование в микросервисной архитектуре. Труды Института системного программирования РАН. 2024;36(6):39-58. https://doi.org/10.15514/ISPRAS-2024-36(6)-3
For citation:
SANGABRIEL-ALARCÓN J., OCHARÁN-HERNÁNDEZ J., LIMÓN X., CORTÉS-VERDÍN M. Domain-Driven Design in Microservices Architecture. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2024;36(6):39-58. https://doi.org/10.15514/ISPRAS-2024-36(6)-3