Унифицированная модель данных и её применение в микросервисной архитектуре
Аннотация
В настоящее время широкое распространение получила микросервисная архитектура, появляется множество приложений (микросервисов), которые так или иначе между собой взаимодействуют. Микросервисы, как правило, объединяются в целые платформы. Встает острый вопрос взаимодействия их друг с другом, хранения и обмена справочными данными. Эталонного решения данной проблемы не существует, на данный момент, но в данной работе описан симбиоз различных подходов, а также приведена конкретная реализация – унифицированная модель справочников в микросервисной платформе, которая позволяет обмениваться справочными данными десяткам микросервисов (на момент написания статьи количество сервисов в платформе составляет 57 штук). Была спроектирована метамодель, с помощью которой описываются сущности справочников: справочники, категории, связи между справочниками и между сущностями справочников. Архитектура такой модели микросервиса справочников позволяет абстрагироваться от конкретных реализаций СУБД, таким образом не происходит «сильной связности» с SQL или NoSQL базой данных. Данный микросервис имеет искусственно введеные ограничения запись данных от сторонних микросервисов. Миграция данных осуществляется вручную посредством Liquibase скриптов, что позволяет поддерживать справочники в одинаковом состоянии на всех стендах разработки, быстро и легко восстанавливать до любого состояния слепки справочников. Дальнейшее развитие микросервиса справочников может иметь следующий вид: разработка UI форм для ручного заполнения справочников и сохранение новых данных в модели или в скрипты Liquibase, что уже на данном этапе является очень актуальной проблемой для группы сопровождения и администраторов микросервисной платформы.
Литература
[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
Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Редакционная политика журнала основывается на традиционных этических принципах российской научной периодики и строится с учетом этических норм работы редакторов и издателей, закрепленных в Кодексе поведения и руководящих принципах наилучшей практики для редактора журнала (Code of Conduct and Best Practice Guidelines for Journal Editors) и Кодексе поведения для издателя журнала (Code of Conduct for Journal Publishers), разработанных Комитетом по публикационной этике - Committee on Publication Ethics (COPE). В процессе издательской деятельности редколлегия журнала руководствуется международными правилами охраны авторского права, нормами действующего законодательства РФ, международными издательскими стандартами и обязательной ссылке на первоисточник.
Журнал позволяет авторам сохранять авторское право без ограничений. Журнал позволяет авторам сохранить права на публикацию без ограничений.
Издательская политика в области авторского права и архивирования определяются «зеленым цветом» в базе данных SHERPA/RoMEO.
Все статьи распространяются на условиях лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная, которая позволяет другим использовать, распространять, дополнять эту работу с обязательной ссылкой на оригинальную работу и публикацию в этом журналe.