Унифицированная модель данных и её применение в микросервисной архитектуре

Аннотация

В настоящее время широкое распространение получила микросервисная архитектура, появляется множество приложений (микросервисов), которые так или иначе между собой взаимодействуют. Микросервисы, как правило, объединяются в целые платформы. Встает острый вопрос взаимодействия их друг с другом, хранения и обмена справочными данными. Эталонного решения данной проблемы не существует, на данный момент, но в данной работе описан симбиоз различных подходов, а также приведена конкретная реализация – унифицированная модель справочников в микросервисной платформе, которая позволяет обмениваться справочными данными десяткам микросервисов (на момент написания статьи количество сервисов в платформе составляет 57 штук). Была спроектирована метамодель, с помощью которой описываются сущности справочников: справочники, категории, связи между справочниками и между сущностями справочников. Архитектура такой модели микросервиса справочников позволяет абстрагироваться от конкретных реализаций СУБД, таким образом не происходит «сильной связности» с SQL или NoSQL базой данных. Данный микросервис имеет искусственно введеные ограничения запись данных от сторонних микросервисов. Миграция данных осуществляется вручную посредством Liquibase скриптов, что позволяет поддерживать справочники в одинаковом состоянии на всех стендах разработки, быстро и легко восстанавливать до любого состояния слепки справочников. Дальнейшее развитие микросервиса справочников может иметь следующий вид: разработка UI форм для ручного заполнения справочников и сохранение новых данных в модели или в скрипты Liquibase, что уже на данном этапе является очень актуальной проблемой для группы сопровождения и администраторов микросервисной платформы.

Сведения об авторе

Alexander Innokentievich Bales, Московский государственный университет имени М.В. Ломоносова

магистрант факультета вычислительной математики и кибернетики

Литература

[1] Yussupov V., Breitenbücher U., Krieger C., Leymann F., Soldani J., Wurster M. Pattern-based Modelling, Integration, and Deployment of Microservice Architectures. In: 2020 IEEE 24th International Enterprise Distributed Object Computing Conference (EDOC). Eindhoven, Netherlands; 2020. p. 40-50. (In Eng.) DOI: https://doi.org/10.1109/EDOC49727.2020.00015
[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
Опубликована
2020-09-30
Как цитировать
BALES, Alexander Innokentievich. Унифицированная модель данных и её применение в микросервисной архитектуре. Международный научный журнал «Современные информационные технологии и ИТ-образование», [S.l.], v. 16, n. 2, p. 416-425, sep. 2020. ISSN 2411-1473. Доступно на: <http://sitito.cs.msu.ru/index.php/SITITO/article/view/658>. Дата доступа: 06 mar. 2021 doi: https://doi.org/10.25559/SITITO.16.202002.416-425.
Раздел
Исследования и разработки в области новых ИТ и их приложений