Unified Data Model and its Application in Microservice Architecture
Abstract
Today, the microservice architecture has become widespread and most popular in software engineering; many applications (microservices) are forced to communicate with each other. In the future, microservices are combined into entire application platforms. The acute issue of interaction of microservices with each other, storage and exchange of dictionary data have appeared in the minds of developers. A standard solution to this problem does not exist at the moment, but this article describes the symbiosis of various approaches, and also provides a specific implementation - a unified data model of dictionary in a microservice platform. It allows dozens of microservices to exchange dictionary data (now, the number of services in the platform is 57 pieces). This article describes the metamodel which help to design and create entities of dictionary, there are: category of dictionary, relations between categories and between directories. Such data model architecture of microservice allowed me to abstract from specific DBMS implementations, i.e. I am not hard tied on SQL or NoSQL database. This microservice has artificially introduced restrictions on data recording by other microservices. Data migration is carried out manually by Liquibase scripts, which allows maintaining dictionaries in the same state at all development stands, quickly and easily restore dictionaries to any state. Further evolution of the dictionary microservice could be as follows: the development of a user interface for filling dictionaries by administrator`s hands and saving new data in unify data models or auto generation Liquibase scripts. At this stage this problem is very urgent for the support group and administrators of the microservice platform.
References
[2] Arcelli D., Cortellessa V., Di Pompeo D., Eramo R., Tucci M. Exploiting Architecture/Runtime Model-Driven Traceability for Performance Improvement. In: 2019 IEEE International Conference on Software Architecture (ICSA). Hamburg, Germany; 2019. p. 81-90. (In Eng.) DOI: https://doi.org/10.1109/ICSA.2019.00017
[3] Carvalho L., Garcia A., Assunção W.K.G., de Mello R., de Lima M.J. Analysis of the criteria adopted in industry to extract microservices. In: Proceedings of the Joint 7th International Workshop on Conducting Empirical Studies in Industry and 6th International Workshop on Software Engineering Research and Industrial Practice (CESSER-IP'19). IEEE Press; 2019. p. 22-29. (In Eng.) DOI: https://doi.org/10.1109/CESSER-IP.2019.00012
[4] Pautasso C., Zimmermann O., Amundsen M., Lewis J., Josuttis N. Microservices in Practice, Part 1: Reality Check and Service Design. IEEE Software. 2017; 34(1):91-98. (In Eng.) DOI: https://doi.org/10.1109/MS.2017.24
[5] Neri D., Soldani J., Zimmermann O., Brogi A. Design principles, architectural smells and refactorings for microservices: a multivocal review. SICS Software-Intensive Cyber-Physical Systems. 2020; 35(1-2):3-15. (In Eng.) DOI: https://doi.org/10.1007/s00450-019-00407-8
[6] Jamshidi P., Pahl C., Mendonça N.C., Lewis J., Tilkov S. Microservices: The Journey So Far and Challenges Ahead. IEEE Software. 2018; 35(3):24-35. (In Eng.) DOI: https://doi.org/10.1109/MS.2018.2141039
[7] Richardson C. Microservices Patterns: With examples in Java. 1st Ed. Manning Publications; 2018. (In Eng.)
[8] Knoche H., Hasselbring W. Using Microservices for Legacy Software Modernization. IEEE Software. 2018; 35(3):44-49. (In Eng.) DOI: https://doi.org/10.1109/MS.2018.2141035
[9] Taibi D., Lenarduzzi V., Pahl C., Janes A. Microservices in agile software development: a workshop-based study into issues, advantages, and disadvantages. In: Proceedings of the XP2017 Scientific Workshops (XP'17). Association for Computing Machinery, New York, NY, USA; 2017. Article 23. p. 1-5. (In Eng.) DOI: https://doi.org/10.1145/3120459.3120483
[10] Messina A., Rizzo R., Storniolo P., Urso A. A Simplified Database Pattern for the Microservice Architecture. In: Proceedings of the DBKDA 2016: The Eighth International Conference on Advances in Databases, Knowledge, and Data Applications. Lisbon, Portugal; 2016. p. 35-40. (In Eng.) DOI: https://doi.org/10.13140/RG.2.1.3529.3681
[11] Villaça L.H.N., Azevedo L.G., Siqueira S.W.M. Microservice Architecture for Multistore Database Using Canonical Data Model. In: XVI Brazilian Symposium on Information Systems (SBSI'20). Association for Computing Machinery, New York, NY, USA; 2020. Article 20. p. 1-8. (In Eng.) DOI: https://doi.org/10.1145/3411564.3411629
[12] Al-Debagy O., Martinek P. A Comparative Review of Microservices and Monolithic Architectures. In: 2018 IEEE 18th International Symposium on Computational Intelligence and Informatics (CINTI). Budapest, Hungary; 2018. p. 000149-000154. (In Eng.) DOI: https://doi.org/10.1109/CINTI.2018.8928192
[13] Smid A., Wang R., Cerny T. Case study on data communication in microservice architecture. In: Proceedings of the Conference on Research in Adaptive and Convergent Systems (RACS'19). Association for Computing Machinery, New York, NY, USA; 2019. p. 261-267. (In Eng.) DOI: https://doi.org/10.1145/3338840.3355659
[14] Hasselbring W., Steinacker G. Microservice Architectures for Scalability, Agility and Reliability in E-Commerce. In: 2017 IEEE International Conference on Software Architecture Workshops (ICSAW). Gothenburg; 2017. p. 243-246. (In Eng.) DOI: https://doi.org/10.1109/ICSAW.2017.11
[15] Merson P., Yoder J. Modeling Microservices with DDD. In: 2020 IEEE International Conference on Software Architecture Companion (ICSA-C). Salvador, Brazil; 2020. p. 7-8. (In Eng.) DOI: https://doi.org/10.1109/ICSA-C50368.2020.00010
[16] Dobaj J., Iber J., Krisper M., Kreiner C. A Microservice Architecture for the Industrial Internet-Of-Things. In: Proceedings of the 23rd European Conference on Pattern Languages of Programs (EuroPLoP'18). Association for Computing Machinery, New York, NY, USA; 2018. Article 11. p. 1-15. (In Eng.) DOI: https://doi.org/10.1145/3282308.3282320
[17] Kumar S.S., Shastry P.M.M. Database-per-service for e-learning system with micro-service architecture. In: 2017 International Conference On Smart Technologies For Smart Nation (SmartTechCon). Bangalore; 2017. p. 705-708. (In Eng.) DOI: https://doi.org/10.1109/SmartTechCon.2017.8358462
[18] Kaneshima E., Braga R.T.V. Patterns for enterprise application integration. In: Proceedings of the 9th Latin-American Conference on Pattern Languages of Programming (SugarLoafPLoP'12). Association for Computing Machinery, New York, NY, USA; 2012. Article 2. p. 1-16. (In Eng.) DOI: https://doi.org/10.1145/2591028.2600811
[19] Akbulut A., Perros H.G. Software Versioning with Microservices through the API Gateway Design Pattern. In: 2019 9th International Conference on Advanced Computer Information Technologies (ACIT). Ceske Budejovice, Czech Republic; 2019. p. 289-292. (In Eng.) DOI: https://doi.org/10.1109/ACITT.2019.8779952
[20] Schäffer E., Mayr A., Fuchs J., Sjarov M., Vorndran J., Franke J. Microservice-based architecture for engineering tools enabling a collaborative multi-user configuration of robot-based automation solutions. Procedia CIRP. 2019; 86:86-91. (In Eng.) DOI: https://doi.org/10.1016/j.procir.2020.01.017
[21] Amaral M., Polo J., Carrera D., Mohomed I., Unuvar M., Steinder M. Performance Evaluation of Microservices Architectures Using Containers. In: 2015 IEEE 14th International Symposium on Network Computing and Applications. Cambridge, MA; 2015. p. 27-34. (In Eng.) DOI: https://doi.org/10.1109/NCA.2015.49
[22] Munonye K., Martinek P. Evaluation of Data Storage Patterns in Microservices Archicture. In: 2020 IEEE 15th International Conference of System of Systems Engineering (SoSE). Budapest, Hungary; 2020. p. 373-380. (In Eng.) DOI: https://doi.org/10.1109/SoSE50414.2020.9130516
[23] Zhong Y., Li W., Wang J. Using Event Sourcing and CQRS to Build a High Performance Point Trading System. In: Proceedings of the 2019 5th International Conference on E-Business and Applications (ICEBA 2019). Association for Computing Machinery, New York, NY, USA; 2019. p. 16-19. (In Eng.) DOI: https://doi.org/10.1145/3317614.3317632
[24] Meißner D., Erb B., Kargl F., Tichy M. Retro-λ: An Event-sourced Platform for Serverless Applications with Retroactive Computing Support. In: Proceedings of the 12th ACM International Conference on Distributed and Event-based Systems (DEBS'18). Association for Computing Machinery, New York, NY, USA; 2018. p. 76-87. (In Eng.) DOI: https://doi.org/10.1145/3210284.3210285
[25] Villaça L.H.N., Azevedo L.G., Baião F. Query strategies on polyglot persistence in microservices. In: Proceedings of the 33rd Annual ACM Symposium on Applied Computing (SAC'18). Association for Computing Machinery, New York, NY, USA; 2018. p. 1725-1732. (In Eng.) DOI: https://doi.org/10.1145/3167132.3167316

This work is licensed under a Creative Commons Attribution 4.0 International License.
Publication policy of the journal is based on traditional ethical principles of the Russian scientific periodicals and is built in terms of ethical norms of editors and publishers work stated in Code of Conduct and Best Practice Guidelines for Journal Editors and Code of Conduct for Journal Publishers, developed by the Committee on Publication Ethics (COPE). In the course of publishing editorial board of the journal is led by international rules for copyright protection, statutory regulations of the Russian Federation as well as international standards of publishing.
Authors publishing articles in this journal agree to the following: They retain copyright and grant the journal right of first publication of the work, which is automatically licensed under the Creative Commons Attribution License (CC BY license). Users can use, reuse and build upon the material published in this journal provided that such uses are fully attributed.